Docker-compose
目录
一、Docker-compose 简介
二、YAML 文件格式及编写注意事项
三、Docker Compose 配置常用字段
四、Docker Compose 常用命令
五、Docker Compose 文件结构
六、compose 部署
1、Docker Compose 环境安装
2、compose 部署lnmp
一、Docker-compose 简介
二、YAML 文件格式及编写注意事项
YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 XML数据描述语言,语法比 XML 简单的很多。
YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来
三、Docker Compose 配置常用字段
字段 描述 build 指定 Dockerfile 文件名,要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定 dockerfile 构建镜像上下文路径 context 可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址 image 指定镜像 command 执行命令,覆盖默认命令 container name 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法 scale deploy 指定部署和运行服务相关配置,只能在 Swarm 模式使用 environment 添加环境变量 networks 加入网络 ports 暴露容器端口,与 -p 相同,但端口不能低于 60 volumes 挂载宿主机路径或命令卷 hostname 容器主机名 restart 重启策略,默认 no,always,no-failure,unless-stoped
no,默认策略,在容器退出时不重启容器。
on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
on-failure:3,在容器非正常退出时重启容器,最多重启3次。
always,在容器退出时总是重启容器。
unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。
四、Docker Compose 常用命令
字段 描述 build 重新构建服务 ps 列出容器 up 创建和启动容器 exec 在容器里面执行命令 scale 指定一个服务容器启动数量 top 显示容器进程 logs 查看容器输出 down 删除容器、网络、数据卷和镜像 stop/start/restart 停止/启动/重启服务
五、Docker Compose 文件结构
yum install -y tree tree /opt/compose_nginx /opt/compose_nginx/ ├── docker-compose.yml #创建模板脚本 ├── nginx │?? ├── Dockerfile #创建容器脚本 │?? ├── nginx-1.12.0.tar.gz #复制源码包 │?? └── run.sh #启动服务脚本 └── wwwroot └── index.html #站点网页
六、compose 部署
1、Docker Compose 环境安装
Docker Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose
#下载 在Linux上我们可以从GitHub上下载它的二进制包来使用,此命令是下载Docker Compose的当前稳定版本'
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #安装 chmod +x /usr/local/bin/docker-compose #查看版本 docker-compose --version’
2、compose 部署lnmp
tree /opt/compose/ -L 2 /opt/compose/ ├── docker-compose.yml ├── mysql │ ├── Dockerfile │ ├── my.cnf │ └── mysql-boost-5.7.20.tar.gz ├── nginx │ ├── Dockerfile │ ├── html │ ├── nginx-1.12.0.tar.gz │ ├── nginx.conf │ ├── wordpress-4.9.4-zh_CN.tar.gz │ └── wwwroot └── php ├── Dockerfile ├── php-7.1.10.tar.bz2 ├── php-fpm.conf ├── php.ini └── www.conf
cat docker-compose.yml version: '2' #使用版本2,版本3不包含volumes-from services: nginx: build: context: ./nginx dockerfile: Dockerfile container_name: nginx ports: - 1314:80 - 1315:443 networks: lnmp: ipv4_address: 172.18.0.10 volumes: - ./nginx/html/:/usr/local/nginx/html mysql: build: context: ./mysql dockerfile: Dockerfile container_name: mysql ports: - 3306:3306 networks: lnmp: ipv4_address: 172.18.0.20 volumes: - /usr/local/mysql php: build: context: ./php dockerfile: Dockerfile container_name: php ports: - 9000:9000 networks: lnmp: ipv4_address: 172.18.0.30 volumes_from: - nginx - mysql depends_on: - nginx - mysql networks: lnmp: driver: bridge ipam: config: - subnet: 172.18.0.0/16
docker-compose -f docker-compose.yml up -d