docker-compose使用方法
我们用容器的时候,往往需要用到类似kubernetes里一个Pod支持多个容器的情况,但是Pod是k8s里面的概念,安装k8s又比较重,这时就可以用docker-compose来模拟。docker-compose是用于定义和运行多容器 Docker 应用程序的工具,一个compose定义的多个容器共享网络命名空间、文件系统卷、服务发现、生命周期管理、资源限制、日志、依赖顺序等。
docker-compose的安装方法也很简单,下载二进制文件即可:$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 装好之后用docker-compose version命令验证一下。
使用方法也很简单,定义一个docker-compose.yml文件,注意就得叫这个名字,该文件内容如下:
version: '3.8'
services:
mysql:
image: test/library/mysql-x86:1206
environment:
MYSQL_ROOT_PASSWORD: "123456"
network_mode: host # 使用宿主机网络
app:
image: test/library/tomcat-x86:1206
volumes:
- /home/testpod/config.properties:/usr/local/config/config.properties # 挂载配置文件
network_mode: host # 使用宿主机网络
depends_on:
- mysql # 确保 MySQL 先启动
然后在docker-compose.yml同目录下执行命令docker-compose up即可拉起多个容器。删除用docker-compose down. 注意,上面挂载文件时,需要现在主机上创建主机端文件,否则容器不能完全启动。
如下所示,是一个mysql容器的docker-compose文件,使用它可以创建一个名为 mysql 的服务:
version: "2.1" #Docker Compose 文件的版本声明。请确保你的Docker Compose工具支持该版本。
services:
mysql:
image: registry.fit2cloud.com/fit2cloud3/mysql:5.7.25 # 指定容器使用的镜像
container_name: mysql # 指定容器的名称
ports:
- 3306:3306 # 将主机的3306端口映射到容器的3306端口
restart: on-failure
healthcheck: # 为 mysql 服务添加的健康检查配置,这将确保在启动时检查MySQL服务是否健康,以及在运行时是否继续保持健康。
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 5s
timeout: 3s
retries: 10
environment:
MYSQL_ROOT_PASSWORD: Password123@mysql # 设置容器的环境变量,这里配置mysql的密码
volumes:
- /opt/demo/conf/my.cnf:/etc/mysql/conf.d/my.cnf # 挂载卷,将主机的/opt/demo/conf/my.cnf目录映射到容器的/etc/mysql/conf.d/my.cnf目录
- /opt/demo/bin/mysql:/docker-entrypoint-initdb.d/
- cmp-mysql-data:/var/lib/mysql # 挂载卷,将cmp-mysql-data映射到容器的/var/lib/mysql目录
networks:
- demo-network ## 将容器连接到demo-network网络
volumes:
cmp-mysql-data:
driver_opts:
type: none
device: /opt/demo/data/mysql
o: bind
输入docker-compose -f xx.yaml up -d 命令后,docker引擎会自动 docker-proxy -proto tcp -host-ip :: -host-port 3306 -container-ip 172.19.0.3 -container-port 3306 把容器的端口服务暴露出来。可以通过docker network list以及docker network inspect demo-network查看详细网络信息。
常用命令如下所示:
- docker-compose up -d; docker-compose -f xx.yaml -d 启动服务
- docker-compose down 停止服务并删除containers, networks, images, volumes未删除
- docker-compose down -v xxx 停止服务并删除containers, networks, images, 并删除volumes
- docker-compose ps 列出所有容器
- docker-compose logs 查看服务日志
- docker-compose logs xxx -f 查看docker-compose里面的某个容器的日志,一直打印类似tail -f
- docker-compose start 启动服务
- docker-compose stop 停止服务
- docker-compose up -d --force-recreate 重建,使用修改了docker-compose.yml中的环境变量(restart不能生效)但是文件系统都不会重建,临时文件会丢失
- docker-compose up --pull always -d security-analysis 每次强制拉取最新的镜像

浙公网安备 33010602011771号