Docker Compose 是 Docker 官方编排(Orchestration)项目之一,常用在单机容器之间通过容器名互相通信的时候用
比如我们希望使用Dokcer搭建一个LAMP环境,可以通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。
参考拙文
光速安装docker-compose
https://blog.csdn.net/xys2015/article/details/109656791
mkdir -p xwordpress && cd xwordpress
vi docker-compose.yml
version: "3"
services:
db:
image: mysql:8.0
command:
- --default_authentication_plugin=mysql_native_password
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
# docker-compose up -d
[root@node4 xwordpress]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f570117ca6ab wordpress:latest "docker-entrypoint.s…" 4 seconds ago Up 2 seconds 0.0.0.0:8000->80/tcp xwordpress_wordpress_1
42b433136251 mysql:8.0 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 3306/tcp, 33060/tcp xwordpress_db_1
[root@node4 xwordpress]# docker stats --no-stream
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
f570117ca6ab xwordpress_wordpress_1 0.00% 78.63MiB / 3.858GiB 1.99% 2.73MB / 4.68MB 19.4MB / 31.7kB 11
42b433136251 xwordpress_db_1 0.48% 393.9MiB / 3.858GiB 9.97% 777kB / 2.22MB 26.3MB / 766MB 42
上面的内容相信不用过多解释,用的都是hub.docker.com上的官方镜像,mysql数据直接存储在数据卷里了,没映射目录
运行 docker-compose up -d 就会拉取镜像再创建我们所需要的镜像,然后启动 wordpress 和数据库容器。 接着浏览器访问 ip:8000 端口就能看到 WordPress 安装界面了。
docker-compose --help
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
有些先后顺序注意下,先docker-compose命令的参数,在 子命令 子命令参数
启动全部服务
docker-compose up --help
docker-compose up
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-d, --detach Detached mode: Run containers in the background
停掉全部服务
docker-compose down
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
启动单个服务
docker-compose -f FILE.yml up -d SERVICE
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-d, --detach Detached mode: Run containers in the background
停掉单个服务
docker-compose -f FILE.yml rm -fs SERVICE
-f, --force Don't ask to confirm removal
-s, --stop Stop the containers, if required, before removing
-v Remove any anonymous volumes attached to containers
查看服务名称
egrep -v "^$|^#" docker-compose.yml OR
docker-compose -f docker-compose.yml config --services
我们知道很多服务的组合都有启动顺序的要求,比如启动wordpress之前要先确保MySQL服务已经正常启动,此时如果直接启动全部服务则无法保证顺序,可以利用Docker-Compose的depend功能来确保顺序,不过更直观的操作,是直接书写脚本,自己控制启停顺序
使用单机容器编码工具,docker-compose时,容器之间的通信网络会用到br-xxx网桥,该网桥会在宿主机建立,示例如下:
该网段也有可能与已有网段重复,若要修改此网段,可按如下步骤进行。安全停掉所有用docker-compose编排的容器,这里建议使用docker-compose down来彻底停掉容器,并自动帮你移除docker-compose之前创建的网桥。之后修改docker-compose.yml文件,增加自定义网络段,如下所示。
cat docker-compose.yml
version: '2.1'
networks:
xpd:
ipam:
config:
- subnet: 192.168.10.0/24
services:
zk1:
image: ${REGISTRY}/${ZOOKEEPER_IMAGE}
container_name: zk1
restart: always
volumes:
- ${ZK_DATA_DIR}:/var/lib/zookeeper/data
- ${ZK_LOG_DIR}:/var/lib/zookeeper/log
environment:
- ZOOKEEPER_CLIENT_PORT=2181
- KAFKA_OPTS=-Xmx500m -Xms500m
networks:
- xpd
https://docs.docker.com/compose/environment-variables/
https://docs.docker.com/compose/env-file/
https://github.com/docker/compose
https://github.com/docker/docker.github.io/blob/master/compose/compose-file/compose-versioning.md
https://docs.docker.com/compose/
Compose file version 3 reference
https://docs.docker.com/compose/compose-file/
Compose file version 2 reference
https://docs.docker.com/compose/compose-file/compose-file-v2/
Compose file version 1 reference
https://docs.docker.com/compose/compose-file/compose-file-v1/
本文地址:https://blog.csdn.net/xys2015/article/details/109657015