docker-compose基础使用

Docker Compose

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

部署 wordpress 示例

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网桥地址

使用单机容器编码工具,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

在 docker-compose 中使用变量

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