摘要:基础命令关于搜索下载查看或者删除单个删除多个删除查看信息占用关于查看重启停止杂项命令网络相关清除网络缓存查看网络列表查看详情挂载目录清除缓存查看列表查看详情系统相关系统信息查看占用清除所有包含构建失败的镜像没有被使用的网络配
docker基础命令 关于images
搜索 docker search php
下载 docker pull php:7.3.6-fpm-alpine3.9
查看 docker images 或者 docker image ls
删除单个 docker rmi imageID
删除多个 docker rmi -f $(docker image ls -aq)
删除NONE docker rmi -f $(docker images -f "dangling=true" -q)
查看信息 docker inspect imageID
占用 docker stats
关于container查看 docker ps -a
重启 docker restart containerID
停止 docker stop containerID
杂项命令
网络相关
清除网络缓存 docker network prune
查看网络列表 docker network ls
查看详情 docker network inspect netwokrNAME
挂载目录
清除缓存 docker volume prune
查看列表 docker volume ls
查看详情 docker volume inspect VOLUMENAME
系统相关
系统信息 docker system info
查看占用 docker system df
清除所有 docker system prune
包含构建失败的镜像、没有被使用的网络配置、已经暂停的容器
FROM 指定哪个镜像作为你的基础镜像
LABEL 你可以给你的镜像增加标签(labels)来协助通过项目组织镜像,记录授权信息,帮助自动化,或者其他原因。
可以通过docker inspect imageID查看
EXPOSE 端口开启,只是显示的声明该端口可用,方便调用者,具体的端口映射还需要在docker run的时候通过-p来指定,如果-p后面不跟端口号,则使用EXPOSE设置的值
VOLUME 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME ["目录"]
USER 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
ENV 多用于配置环境变量
COPY 复制 轻量,更透明,建议使用,因为镜像构建要竟可能小的占用空间,所以建议使用wget讲远程文件下载到本地,解压再copy到镜像中,不然使用ADD的话,还要解压删除下载包
ADD 复制 可以解压tar包,也可下载远程网络文件
RUN 执行命令并创建新的Image Layer
CMD 设置容器启动后默认执行的命令和参数
ENTRYPOINT 设置容器启动时运行的命令
构建镜像的注意点尽量选择 微缩基础镜像 例如alpine 减少镜像的体积
尽量不要打包无用的文件到镜像中 减少镜像的体积
尽量删除 各种编译、下载、安装过程中产生的缓存文件 减少镜像体积
尽量使用分阶段构建镜像 一步步的扩展镜像功能 避免多层数镜像的产生
准确使用dockerfile的关键字 例如CMD 和ENTRYPOINT 、 COPY 和ADD
构建命令详解docker build -f "Dockerfile" -t my-mysql:v1.0 .
可以使用docker build --help查看
docker-compose 文件命令命令文档地址
该文件是主配置文件,主要包含version、services、network,其中version、services为必要元素。
常用命令:image 指定购将的基础镜像
build 指定包含构建上下文的路径, 或作为一个对象,该对象具有 context 和指定的 dockerfile 文件以及 args 参数值
context 指定 Dockerfile 文件所在的路径
dockerfile 指定 context 指定的目录下面的 Dockerfile 的名称(默认为 Dockerfile)
args Dockerfile 在 build 过程中需要的参数 (等同于 docker container build --build-arg 的作用)
cache_from # v3.2中新增的参数, 指定缓存的镜像列表 (等同于 docker container build --cache_from 的作用)
labels v3.3中新增的参数, 设置镜像的元数据 (等同于 docker container build --labels 的作用)
shm_size v3.5中新增的参数, 设置容器 /dev/shm 分区的大小 (等同于 docker container build --shm-size 的作用)
command # 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式
container_name 指定容器名称
depends_on 指定容器启动的依赖关系,此选项在 v3 版本中 使用 swarm 部署时将忽略该选项
links 容器关联,版本3已经不建议使用,建议使用网络做容器通信
env_file 环境变量文件
environment 设置环境变量, environment 的值可以覆盖 env_file 的值 (等同于 docker run --env 的作用)
expose 暴露端口, 但是不能和宿主机建立映射关系, 类似于 Dockerfile 的 EXPOSE 指令
ports 端口映射
external_links 连接不在 docker-compose.yml 中定义的容器或者不在 compose 管理的容器
extra_hosts 添加 host 记录到容器中的 /etc/hosts 中
logging 日志统一输出,方便做日志统计
networks 容器网络配置
restart 自动重启容器,容器挂掉之后自动重启机制
volumes 数据卷映射,也可以以叫做目录共享
CLI命令启动服务 docker-compose up -d --build
暂停服务 docker-compose down
重启服务 docekr-compose restart
进入 docekr-compose exec $1 $2
$1 docker-compose.yml文件services中定义的服务名称
$2 根据基础镜像服务器决定,一般apline为/bin/sh,其他为"/bin/bash"
查看 docker-compose ps
实操,docker-compose搭建项目 创建项目目录mkdir php创建如下项目结构
sites 目录放置项目文件
services 目录放置服务相关配置
script 放置自定义脚本
├── Readme.md ├── docker-compose.yml ├── script ├── services │ ├── mariadb │ │ └── Dockerfile │ ├── nginx │ │ ├── Dockerfile │ │ ├── conf.d │ │ │ └── default.conf │ │ └── nginx.conf │ ├── php │ │ └── Dockerfile │ └── redis │ └── Dockerfile └── sites ├── index.html └── index.php 8 directories, 10 files编辑docker-compose文件
version: "3" services: php: build: ./services/php ports: - "9001:9000" container_name: lnmp-php restart: always volumes: - ./sites:/www - ./services/php/etc:/usr/local/etc networks: lnmp_net: ipv4_address: 101.11.11.10 nginx: build: ./services/nginx ports: - "81:80" - "444:443" container_name: lnmp-nginx restart: always volumes: - ./sites:/www - ./services/nginx/nginx.conf:/etc/nginx/nginx.conf - ./services/nginx/conf.d:/etc/nginx/conf.d:rw networks: lnmp_net: ipv4_address: 101.11.11.11 redis: build: ./services/redis ports: - "6380:6379" container_name: lnmp-redis networks: lnmp_net: ipv4_address: 101.11.11.12 mariadb: build: ./services/mariadb ports: - "3307:3306" container_name: lnmp-mariadb restart: always volumes: - ./data/mariadb:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: 123qwe!@# MYSQL_USER: demo MYSQL_PASSWORD: 123456 networks: lnmp_net: ipv4_address: 101.11.11.13 networks: lnmp_net: driver: bridge ipam: config: - subnet: 101.11.11.0/20编辑services/nginx文件
FROM nginx:1.17.0-alpine # 更新安装源 RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g" /etc/apk/repositories # 设置时区为上海 RUN apk update && apk add --upgrade && apk add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && apk del tzdata编辑services/php文件
FROM php:7.3.6-fpm-alpine3.9 # 更新安装源 RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g" /etc/apk/repositories # 设置时区为上海 RUN apk update && apk add --no-cache tzdata autoconf gcc g++ make zlib-dev curl-dev && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone && apk del tzdata && docker-php-ext-install mysqli pdo_mysql opcache && pecl install grpc protobuf xdebug yaf yar swoole && docker-php-ext-enable xdebug yaf yar swoole grpc protobuf
以上我们的lnmp环境基本搭建完毕,下面我们针对Php解析做相关的配置修改services/nginx/nginx.conf,可根据需求自行修改
user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for""; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }修改services/nginx/conf.d目录下文件
该目录是各个项目的配置文件,可根据需求配置单个或多个服务
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; #root /usr/share/nginx/html; root /www; index index.php index.html index.htm; #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ .php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ .php$ { # root html; fastcgi_pass 101.11.11.10:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if Apache"s document root # concurs with nginx"s one # #location ~ /.ht { # deny all; #} }启动服务
cd php && docker-compose up --build -d
上述的步骤根据网速的docker的配置执行时间个不相同,因为php中编译了些许扩展,也可根据自身需求做响应的删减
通过浏览器访问http://127.0.0.1:81,如果看到了phpinfo的输出信息,那么恭喜你,你的lnmp环境已经部署完成
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/31669.html
摘要:如果不用我们可能将上述讲的命令每搭建一次就需要执行一遍,有没有能统一管理的有,就是在环境搭建中的作用快速创建镜像,快速创建并运行容器,实现统一管理。 前言 初学者在dcoker学习过程中,可能不太清楚docker中那么多的命令,参数,工具在lnmp环境搭建中起了什么作用,下面跟着我来熟悉一下。(本文面向的是不怎么熟悉linux的:phper) 镜像,容器,仓库 镜像:Docker 镜像...
摘要:学习心得前言耗时一周零三天,终于用搭建起自己的开发环境。来搭建一下环境,然后,桌面没了。作为过来人,我只想说,一定要只做一件事,不要过多的去研究,我们只是想搭建本地运行环境。 docker学习心得 前言 耗时一周零三天,终于用docker搭建起自己的开发环境。详细过程:请参考分解docker在lnmp环境搭建中的作用showImg(https://segmentfault.com/im...
摘要:项目由一组关联的应用容器组成的一个完整业务单元,在文件中定义。 docker搭建lnmp环境 一、Dockerfile定制镜像 二、docker-compose 三、docker-compose编排lnmp环境 1、mysql 2、redis 3、mongo 4、nginx 5、php 6、完整版 四、参考 有收获的话请加颗小星星,没有收获的话可以 反对 没有帮助 ...
摘要:基础命令关于搜索下载查看或者删除单个删除多个删除查看信息占用关于查看重启停止杂项命令网络相关清除网络缓存查看网络列表查看详情挂载目录清除缓存查看列表查看详情系统相关系统信息查看占用清除所有包含构建失败的镜像没有被使用的网络配 docker基础命令 关于images 搜索 docker search php 下载 docker pull php:7.3.6-fpm-alpine3....
摘要:配置文件配置配置文件配置文件配置文件太大就不贴了,直接下载然后本地修改吧。不会使用的使用命令进行替换。是一种推出的免费的公共镜像库服务。本地对镜像打提交镜像到仓库参考Docker 安装安装 Dockercurl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun配置国内镜像mkdir -p /etc/docker cat...
阅读 1103·2021-09-22 15:37
阅读 1131·2021-09-13 10:27
阅读 2465·2021-08-25 09:38
阅读 2444·2019-08-26 11:42
阅读 1524·2019-08-26 11:39
阅读 1554·2019-08-26 10:58
阅读 2316·2019-08-26 10:56
阅读 2568·2019-08-23 18:08