技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Docker>正文
使用Docker-Compose实现Docker容器编排
2021年10月19日 Docker 暂无评论 ⁄ 被围观 520次+

本教程中用到的配置文件请参考下面的连接

Linux下使用Docker容器部署Web应用

https://www.osyunwei.com/archives/11855.html

1、什么是容器编排?

所谓容器编排就是多个Docker容器的自动配置、协作和管理服务的过程,最后执行一个yaml文件,将文件中所定义的多个容器依次启动,这就是容器编排。

2、什么是Docker-Compose?

Docker-Compose是docker提供的一个命令行工具,用来定义和运行由多个容器组成的应用。使用Docker-Compose,我们可以通过yaml文件定义应用程序的各个服务,并由单个命令完成应用的创建和启动。

3、安装Docker-Compose

Docker-Compose依靠Docker进行工作,必须确保已经安装了docker才能安装Docker-Compose

CentOS 7.x 安装Docker-ce社区版本

https://www.osyunwei.com/archives/11592.html

#把docker-compose安装在/usr/local/bin/目录下

#执行一下命令

curl -SL https://github.com/docker/compose/releases/download/v2.0.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

#或者下面这两个命令都可以

curl -SL https://get.daocloud.io/docker/compose/releases/download/v2.0.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

curl -SL "https://github.com/docker/compose/releases/download/v2.0.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

#添加执行权限

chmod +x /usr/local/bin/docker-compose

#查看版本

docker-compose --version

[root@master01 bin]# docker-compose --version

Docker Compose version v2.0.1

4、编写yaml文件

mkdir -p /docker/data/docker-compose/conf #创建yaml文件存放目录

cd /docker/data/docker-compose/conf

vi /docker/data/docker-compose/conf/docker-compose.yaml #编辑

version: '3'

networks:

mycust-bridge:

external: true

services:

#容器名称

mysqlv8.0.26:

image: mysql:v8.0.26

networks:

- "mycust-bridge"

volumes:

- /docker/data/mysql/database:/var/lib/mysql

- /docker/data/mysql/etc/mysql/my.cnf:/etc/mysql/my.cnf

command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_general_ci

environment:

- MYSQL_ROOT_PASSWORD=123456

#开机自启动

restart: always

#容器名称

php-fpm8.0.11:

image: php-fpm:8.0.11

networks:

- "mycust-bridge"

volumes:

- /docker/data/web:/data/web

- /docker/data/php/etc:/usr/local/php/etc

restart: always

#容器名称

nginx1.20.1:

#容器所使用的镜像名称

image: nginx:1.20.1

networks:

- "mycust-bridge"

#设置端口映射(宿主机端口:容器内端口)

ports:

- 80:80

volumes:

- /docker/data/web:/data/web

- /docker/data/nginx/conf/ssl:/usr/local/nginx/conf/ssl

- /docker/data/nginx/conf/nginx.conf:/usr/local/nginx/conf/nginx.conf

- /docker/data/nginx/conf/vhost:/usr/local/nginx/conf/vhost

restart: always

:wq! #保存退出

#特别注意yaml文件的格式有前后缩进、空格等一定要仔细检查

#命令须要在右docker-compose.yaml配置文件的目录下执行

cd /docker/data/docker-compose/conf

#运行容器

docker-compose -f docker-compose.yaml up -d

#列出容器

docker-compose -f docker-compose.yaml ps

#启动/停止容器

docker-compose -f docker-compose.yaml stop

docker-compose -f docker-compose.yaml start

#删除容器

docker-compose -f docker-compose.yaml down

#查看日志

docker-compose -f docker-compose.yaml logs

#使用docker-compose创建的容器名称包含前缀和后缀

前缀-容器名称-后缀

例如:src-nginx-1

前缀:默认情况下,使用docker-compose.yml所在的文件夹名称

后缀:序列-1

可以通过设置环境变量COMPOSE_PROJECT_NAME来更改

export COMPOSE_PROJECT_NAME=osyunwei

进入容器的方式:

1、docker方式进入容器,名称必须写全(前后缀都要加上)

docker exec -it src-nginx-1 /bin/bash

2、docker-compose方式进入(只写容器名称,不需要加前后缀)

docker-compose exec nginx /bin/bash

扩展阅读:

Docker-compose常用命令

docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]

-f --file FILE指定Compose模板文件,默认为docker-compose.yml

-p --project-name NAME 指定项目名称,默认使用当前所在目录为项目名

--verbose 输出更多调试信息

-v,-version 打印版本并退出

--log-level LEVEL 定义日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)

docker-compose up

docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]

选项包括:

-d 在后台运行服务容器

-no-color 不是有颜色来区分不同的服务的控制输出

-no-deps 不启动服务所链接的容器

--force-recreate 强制重新创建容器,不能与-no-recreate同时使用

–no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用

–no-build 不自动构建缺失的服务镜像

–build 在启动容器前构建服务镜像

–abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用

-t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)

–remove-orphans 删除服务中没有在compose文件中定义的容器

docker-compose ps

docker-compose ps [options] [SERVICE...]

列出项目中所有的容器

docker-compose stop

docker-compose stop [options] [SERVICE...]

选项包括

-t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)

docker-compose stop

停止正在运行的容器,可以通过docker-compose start 再次启动

docker-compose -h

docker-compose -h

查看帮助

docker-compose down

docker-compose down [options]

停止和删除容器、网络、卷、镜像。

选项包括:

–rmi type,删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像

-v, –volumes,删除已经在compose文件中定义的和匿名的附在容器上的数据卷

–remove-orphans,删除服务中没有在compose中定义的容器

docker-compose down

停用移除所有容器以及网络相关

docker-compose logs

docker-compose logs [options] [SERVICE...]

查看服务容器的输出。默认情况下,docker-compose将对不同的服务输出使用不同的颜色来区分。可以通过–no-color来关闭颜色。

docker-compose logs

查看服务容器的输出

-f 跟踪日志输出

docker-compose bulid

docker-compose build [options] [--build-arg key=val...] [SERVICE...]

构建(重新构建)项目中的服务容器。

选项包括:

–compress 通过gzip压缩构建上下环境

–force-rm 删除构建过程中的临时容器

–no-cache 构建镜像过程中不使用缓存

–pull 始终尝试通过拉取操作来获取更新版本的镜像

-m, –memory MEM为构建的容器设置内存大小

–build-arg key=val为服务设置build-time变量

服务容器一旦构建后,将会带上一个标记名。可以随时在项目目录下运行docker-compose build来重新构建服务

docker-compose pull

docker-compose pull [options] [SERVICE...]

拉取服务依赖的镜像。

选项包括:

–ignore-pull-failures,忽略拉取镜像过程中的错误

–parallel,多个镜像同时拉取

–quiet,拉取镜像过程中不打印进度信息

docker-compose pull

拉取服务依赖的镜像

docker-compose restart

docker-compose restart [options] [SERVICE...]

重启项目中的服务。

选项包括:

-t, –timeout TIMEOUT,指定重启前停止容器的超时(默认为10秒)

docker-compose restart

重启项目中的服务

docker-compose rm

docker-compose rm [options] [SERVICE...]

删除所有(停止状态的)服务容器。

选项包括:

–f, –force,强制直接删除,包括非停止状态的容器

-v,删除容器所挂载的数据卷

docker-compose rm

删除所有(停止状态的)服务容器。推荐先执行docker-compose stop命令来停止容器。

docker-compose start

docker-compose start [SERVICE...]

docker-compose start

启动已经存在的服务容器。

docker-compose run

docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]

在指定服务上执行一个命令。

docker-compose run ubuntu ping www.baidu.com

在指定容器上执行一个ping命令。

docker-compose scale

docker-compose scale web=3 db=2

设置指定服务运行的容器个数。通过service=num的参数来设置数量

docker-compose pause

docker-compose pause [SERVICE...]

暂停一个服务容器

docker-compose kill

docker-compose kill [options] [SERVICE...]

通过发送SIGKILL信号来强制停止服务容器。

支持通过-s参数来指定发送的信号,例如通过如下指令发送SIGINT信号:

docker-compose kill -s SIGINT

docker-compose config

docker-compose config [options]

验证并查看compose文件配置。

选项包括:

–resolve-image-digests 将镜像标签标记为摘要

-q, –quiet 只验证配置,不输出。 当配置正确时,不输出任何内容,当文件配置错误,输出错误信息

–services 打印服务名,一行一个

–volumes 打印数据卷名,一行一个

docker-compose create

docker-compose create [options] [SERVICE...]

为服务创建容器。

选项包括:

–force-recreate:重新创建容器,即使配置和镜像没有改变,不兼容–no-recreate参数

–no-recreate:如果容器已经存在,不需要重新创建,不兼容–force-recreate参数

–no-build:不创建镜像,即使缺失

–build:创建容器前  ,生成镜像

docker-compose exec

docker-compose exec [options] SERVICE COMMAND [ARGS...]

选项包括:

-d 分离模式,后台运行命令。

–privileged 获取特权。

–user USER 指定运行的用户。

-T 禁用分配TTY,默认docker-compose exec分配TTY。

–index=index,当一个服务拥有多个容器时,可通过该参数登陆到该服务下的任何服务,例如:docker-compose exec –index=1 web /bin/bash ,web服务中包含多个容器

docker-compose port

docker-compose port [options] SERVICE PRIVATE_PORT

显示某个容器端口所映射的公共端口。

选项包括:

–protocol=proto,指定端口协议,TCP(默认值)或者UDP

–index=index,如果同意服务存在多个容器,指定命令对象容器的序号(默认为1)

docker-compose push

docker-compose push [options] [SERVICE...]

推送服务依的镜像。

选项包括:

–ignore-push-failures 忽略推送镜像过程中的错误

docker-compose stop

docker-compose stop [options] [SERVICE...]

停止运行的容器

docker-compose uppause

docker-compose unpause [SERVICE...]

恢复处于暂停状态中的服务

#配置参数

#容器名称

build:

context:

command:

dockerfile: Dockerfile-alternate

container_name: nginx

#设置容器优先启动

depends_on:

- mysql

- php-fpm

extra_hosts:

- "somehost:192.168.1.100"

dns:

- 8.8.8.8

net: "bridge"

volumes_from:

- service_name

expose:

- 8080

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2021 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接