Docker-compose容器编排

2023-12-14 01:45:36

1. 概要

默认的模板文件是 `docker-compose.yml`,其中定义的每个服务可以通过 `image` 指令指定镜像或 `build` 指令(当前路径下需要 Dockerfile)来自动构建。

**注意**如果使用 `build` 指令,在 `Dockerfile` 中设置的选项(例如:`CMD`, `EXPOSE`, `VOLUME`, `ENV` 等) 将会自动被获取,无需在 `docker-compose.yml` 中再次设置。如果设置了会被YML覆盖

2. 常用的docker-compose命令

命令描述
docker-compose up -d构建建启动容器
docker-compose exec bash登录到容器中
docker-compose down删除所有容器,镜像
docker-compose ps显示所有容器
docker-compose restart重新启动容器
docker-compose run --no-deps --rm php-fpm php -v在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose build构建镜像
docker-compose build --no-cache不带缓存的构建
docker-compose logs查看的日志
docker-compose logs -f验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息
docker-compose pause暂停容器
docker-compose unpause恢复容器
docker-compose rm删除容器(删除前必须关闭容器)
docker-compose stop停止容器
docker-compose start启动容器

?2.1 image

指定为镜像名称或镜像 ID。如果镜像在本地不存在,`Compose` 将会尝试拉去这个镜像。

image: ubuntu
image: mysql:5.7.22

2.2build

指定 `Dockerfile` 所在文件夹的路径。 `Compose` 将会利用它自动构建这个镜像,然后使用这个镜像。

build: ./
build: ./web/

2.3、command

覆盖容器启动后默认执行的命令。

command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1

?2.4links

链接到其它服务中的容器。使用服务名称(同时作为别名)或服务名称:服务别名 `(SERVICE:ALIAS)` 格式都可以。使用的别名将会自动在服务容器中的 `/etc/hosts` 里创建

links:
 - mysql
 - db:database
 - redis

容器内/etc/hosts
172.17.2.111  db
172.17.2.112  database
172.17.2.113  redis

2.5、external_links

链接到 docker-compose.yml 外部的容器,甚至 并非 `Compose` 管理的容器。参数格式跟 `links` 类似。

external_links:
 - redis
 - web_db_mysql:mysql
 - web_db_oracle:oracle
 - web_db_oracle:postg

2.6、ports

暴露端口信息。使用 宿主:容器 `(HOST:CONTAINER)`格式或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。

ports:
 - "6379"
 - "8000:8000"
 - "46200:22"
 - "127.0.0.1:8080:8080"

2.7 expose

暴露端口,但不映射到宿主机,只被连接的服务访问。可以指定内部端口为参数

?expose: 
    - "3307"
    - "6380"

2.8 volumes

卷挂载路径设置。可以设置宿主机路径 (`HOST:CONTAINER`) 或加上访问模式 (`HOST:CONTAINER:ro 或者rw`)。

volumes:
 - ./mysql/data:/var/lib/mysql 
 - ./configs:/etc/configs/:ro

2.9 volumes_from

从另一个服务或容器挂载它的所有卷。

volumes_from:
 - service_name
 - container_name

2.10environment

设置环境变量。只给定名称的变量会自动获取它在 Compose 主机上的值,可以用来防止泄露不必要的数据。

    environment:
        - MYSQL_ROOT_PASSWORD=123456
        - MYSQL_DATABASE=wordpress

实战

容器编排部署wordpress

[root@server01 ~]#  vim docker-compose.yaml
version: '3'
services:
   web: 
      image: wordpress:2.0
      container_name: wordpress-web
      ports:
        - "80:80/tcp"
      links: 
        - db:mysql-db
      depends_on: 
        - db
   db:
      image: mysql:5.7
      container_name: wordpress-db
      environment:
        - MYSQL_ROOT_PASSWORD=123456
        - MYSQL_DATABASE=wordpress
      volumes:
        - /opt/aaa:/var/lib/mysql

构建建启动容器

[root@server01 test]# docker compose  -f  docker-compose.yaml  up  #-f 指定文件

文章来源:https://blog.csdn.net/l1727377/article/details/134897565
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。