Docker 之 Docker-Compose
一、产生背景
运行一个镜像,需要添加大量的参数。如果要运行不同发镜像还需要不同的参数。
容器增加使得使用 docker run
启动命令变得多繁琐。
通过Docker-Compose 可以进行批量的管理容器,配置参数。
只需要一个 docker-compose.yml
文件去维护即可。
二、下载、配置
1. github官网下载
Dockrer-Compose
的github发布地址:https://github.com/docker/compose
releases 中选择比较稳定的发布版本。
2、修改文件名
非必须,需要是为了使用命令方便。Docker-Compose
下载之后名称比较长,修改之后方便使用命令。
mv docker-compose-Linux-x86_64 /usr/local
cd /usr/local
mv docker-compose-Linux-x86_64 docker-compose
chmod 777 docker-compose
3、配置环境变量
非必须,需要是为了后续使用命令方便。为了可以在任意目录使用docker-Compose
命令,方便后续执行。
将 docker-compose
文件移动到 /usr/local/bin
, 修改了 /etc/profile
文件,给/usr/local/bin
配置到 PATH
中。
mv docker-compose /usr/lcoal/bin
vi /etc/profile
export PATH=$JAVA_HOME:/usr/local/bin:$PATH
source /etc/profile
测试配置是否成功,在任意目录下执行 docker-compose
二 Docker-Compose 管理容器
1、YML文件
文件名称:docker-compose.yml
文件遵循YAML文件格式要求:key+":"+空格+value
换行+缩进的方式写多组值。
文件不要使用制表符。
2、示例
示例:Docker-Compose 管理Mysql和Tomcat容器
varsion: '3.1'
services:
mysql: # 服务的名称
restart: always # 表示只要docker启动,这个服务就跟着一起启动
image: daocloud.io/library/mysql:5.7.4 # 指定镜像来源路径
container_name: mysql # 指定容器名称
ports:
- 3306:3306 # 指定端口号映射
environment:
MYSQL_ROOT_PASSWORD: root #指定Mysql的root用户登录密码
TZ: Asia/Shanghai #指定时区
volumes:
- /opt/docker_msql_tomcat/mysql_data:/var/lib/mysql # 映射数据卷
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
volumes:
- /opt/docker_msql_tomcat/tomcat_webapps:/var/local/tomcat/webapps
- /opt/docker_msql_tomcat/tomcat_logs:/var/local/tomcat/logs
三.使用 docker-compose 命令管理
1、注意事项
在使用docker-compose 命令时,默认会在当前目录下找 docker-compose.yml 文件。
2、常见命令
基于 docker-compose.yml 启动管理的容器
docker-compose up -d
关闭并删除容器
docker-compose down
开启|关闭|重启 已经存在的由docker-compose维护的容器
docker-compose start
docker-compose stop
docker-compose restart
查看由docker-compose维护的容器
docker-compose ps
查看由docker-compose维护的容器的日志
docker-compose logs -f
四.Docker-compose配置Dockerfile 使用
使用 docker-compose.yml
文件以及 Dockerfile
文件再生产自定义的镜像的同时启动当前镜像,并且由Docker-compose去管理容器。
1、yml文件
version: '3.1'
services:
tomcat_dcdf:
restart: always
build: # 构建自定义镜像
context: ../ # 指定Dockerfile文件所在路径,../表示上级目录
dockerfile: Dockerfile # 指定Dockerfile文件名称
image: tomcat_dcdf:1.0.1 # 构建生成的镜像文件名称
container_name: tomcat_dcdf
ports:
- 8081:8080
environment:
TZ: Asia/Shanghai
2、Dockerfile 文件
FROM daocloud.io/library/tomcat:8.5.15-jre8
CP test.war /var/local/tomcat/webapps
目录层级
- docker_tomcat_dcdf
|–+ docker-compose
| |– docker-compose.yml
|– dockerfile
|– test.war
注意,测试test.war,需要先用客户端连接mysql,创建test 数据库。
3、执行构建/启动命令
一定要在 docker-compse
目录执行,docker-compose.yml
在这个目录。
docker-compse up -d
因为:在使用docker-compose 命令时,默认会在当前目录下找 docker-compose.yml 文件。
注意:
docker-compse up -d
: 可以直接启动基于docker-compose.yml
文件以及 Dockerfile
文件构建的自定义镜像。 如果自定义镜像不存在, docker-compose
会自动构建出自定义镜像,如果自定义镜像已经存在, docker-compose
会直接运行这个自定义镜像。
如果需要重新构建自定义镜像,执行:
docker-compose build
如果需要在运行之前,重新构建自定义镜像,执行:
docker-compose up -d --build
4、自建示例
示例一:Docker-compose 管理Nginx
yml文件:
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
volumes:
- /opt/docker_nginx/conf.d/:etc/nginx/conf.d