文章目录

  • 一、docker-compose简介
  • 二、YAML 文件格式及编写注意事项
    • 2.1、YAML 文件格式
    • 2.2、YAML格式的注意事项
    • 2.3、 YAML数据结构
  • 三、 docker compose配置常用字段
  • 四、docker-compose安装
    • 4.1 docker-comose命令
    • 4.2 安装
    • 4.3 docker-compose.yml文件
      • 4.3.1 image
      • 4.3.2 build
      • 4.3.3 command
      • 4.3.4 container_name
      • 4.3.5depends_on
      • 4.3.6 dns
      • 4.3.7 tmpfs
      • 4.3.8 entrypoint
      • 4.3.9 env_file
      • 4.3.10 environment
      • 4.3.11 expose
      • 4.3.12 external_links
      • 4.3.13 extra_hosts
      • 4.3.14 labels
      • 4.3.15 links
      • 4.3.16 logging
      • 4.3.17 pid
      • 4.3.18 ports
      • 4.3.19 security_opt
      • 4.3.20 stop_signal
      • 4.3.21 volumes
      • 4.3.22 volumes_from
      • 4.3.23 cap_add, cap_drop
      • 4.3.24 cgroup_parent
      • 4.3.25 devices
      • 4.3.26 extends
      • 4.3.27 network_mode
      • 4.3.28 networks
      • 4.3.29 其它
    • 4.4 note
      • 4.4.1 docker run和docker-compose up
      • 4.4.2 容器命名
    • 4.5 实际部署
      • 总结:

引言:
Dockerfile 可以让用户管理一个单独的应用容器。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器

一、docker-compose简介

Docker-Compose项目是基于Python开发的Docker官方开源项目,负责实现对Docker容器集群的快速编排。

Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。

1、Docker-Compose运行目录下的所有文件(docker-compose.yml,extends文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。
2、一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。
3、一个服务当中可包括多个容器实例,Docker-Compose并没有解决负载均衡的问题,因此需要借助其它工具实现服务发现及负载均衡,比如Consul。

Docker-Compose的工程配置文件默认为docker-compose.yml,可通过环境变量COMPOSE_FILE或-f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。

使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API, 就可以在其上利用Compose来进行编排管理。

二、YAML 文件格式及编写注意事项

YAML不是标记语言是一种数据序列化语言,它匹配用户对数据的期望。 它旨在提供人性化,并与其他编程语言完美配合。管理数据非常有用,包括Unicode可打印字符。

2.1、YAML 文件格式

YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。
类似于 json数据描述语言,语法比 json简单的很多。
YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号 [ ] 括起来, hash 用花括号 { }括起来。

2.2、YAML格式的注意事项

1、不支持制表符 tab 键缩进,只能使用空格缩进
2、通常开头缩进2个空格
3、字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -
4、用 # 号注释
5、如果包含特殊字符用单引号 ‘’ 引起来作为普通字符;如果用双引号“”表示特殊字符本身的意思
6、布尔值必须用引号 “” 括起来
7、区分大小写

2.3、 YAML数据结构

对象: 键值对的字典
animal: pets数组: 一组按次序排列的列表
- cat
- dog
- goldfish布尔值
debug: "true"
debug: "false"#Yaml示例
languages:  #序列的映射- Java- Golang- Python
websites:   #映射的映射Baidu: www.baidu.comWangyi: www.163.comSouhu: www.souhu.com#或者
languages: ["Java","Golong","Python"]
websites: Baidu: www.baidu.comWangyi: www.163.comSouhu: www.souhu.com#Json格式
{languages: ['Java','Golong','Python',],websites: [Baidu: 'www.baidu.com',Wangyi: 'www.163.com',Souhu: 'www.souhu.com',]
}

三、 docker compose配置常用字段

字段 描述
build 指定Dockerfile文件名(要指定的Dockerfile文件需要在build标签的子级标签中用dockerfile标签指定)
dockerfile 构建镜像上下文路径
context 可以是dockerfile路径,或者是执行git 仓库的url地址
image 指定镜像(已存在)
command 执行命令,会覆盖容器启动后默认执行的命令(会覆盖Dockerfile的CMD指令)
container_name 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
deploy 指定部署和运行服务相关配置,只能在Swarm模式使用
environment 添加环境变量
networks 加入网络,引用顶级networks下条目
network-mode 设置容器的网络模式
ports 暴露容器端口,与-p 相同,但是端口不能低于60
volumes 挂载一个宿主机目录或命令卷到容器,命名卷要在顶级volumes 定义卷名称
volumes_from 从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,(仅版本‘2’支持)
hostname hostname
hostname 在容器内设置内核参数
links 连接到另一个容器,- 服务名称[ : ]
privileged 用来给容器root权限,注意是不安全的,true
restart 重启策略,定义是否重启容器;1.no,默认策略,在容器退出时不重启容器。2.on-failure,在容器非正常退出时(退出状态非0),才会重启容器。3.on-failure:3,在容器非正常退出时重启容器,最多重启3次。4.always,在容器退出时总是重启容器。5.unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。
depends_on 此标签用于解决容器的依赖,启动先后问题。如启动应用容器,需要先启动数据库容器php:depends_on:- apache- mysql

四、docker-compose安装

4.1 docker-comose命令

字段 描述
build 重新构建服务
ps 列出容器
up 创建和启动容器
exec 在容器里面执行命令
scale 指定一个服务容器启动数量
top 显示正在运行的容器进程
logs 查看服务容器的输出
down 删除容器、网络、数据卷和镜像
stop/start/restart 停止/启动/重启服务

4.2 安装

法一:

$curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$chmod +x /usr/local/bin/docker-compose
#查看版本
$docker-compose version

方法二:使用pip方式安装(备用)

#安装pip
$yum -y install epel-release
$yum -y install python-pip
#确认版本
$pip --version
#更新pip
$pip install --upgrade pip
#安装docker-compose
$pip install docker-compose
#查看版本
$docker-compose version

4.3 docker-compose.yml文件

version: '2'
services:web:image: dockercloud/hello-worldports:- 8080networks:- front-tier- back-tierredis:image: redislinks:- webnetworks:- back-tierlb:image: dockercloud/haproxyports:- 80:80links:- webnetworks:- front-tier- back-tiervolumes:- /var/run/docker.sock:/var/run/docker.sock networks:front-tier:driver: bridgeback-tier:
driver: bridge

可以看到一份标准配置文件应该包含 version、services、networks 三大部分,其中最关键的就是 services 和 networks 两个部分,下面先来看 services 的书写规则。

4.3.1 image

service:webimage: hello-word

在 services 标签下的第二级标签是 web,这个名字是用户自己自定义,它就是服务名称。
image 则是指定服务的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
例如下面这些格式都是可以的:

image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd

4.3.2 build

服务除了可以基于指定的镜像,还可以基于一份 Dockerfile,在使用 up 启动之时执行构建任务,这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径。Compose 将会利用它自动构建这个镜像,然后使用这个镜像启动服务容器。

build: /path/to/build/dir

也可以是相对路径,只要上下文确定就可以读取到 Dockerfile。

build: ./dir

设定上下文根目录,然后以该目录为准指定 Dockerfile。

build:context: ../dockerfile: path/of/Dockerfile

注意 build 都是一个目录,如果你要指定 Dockerfile 文件需要在 build 标签的子级标签中使用 dockerfile 标签指定,如上面的例子。
如果你同时指定了 image 和 build 两个标签,那么 Compose 会构建镜像并且把镜像命名为 image 后面的那个名字。如下:镜像名称会是webapp:tag

build: ./dir
image: webapp:tag

既然可以在 docker-compose.yml 中定义构建任务,那么一定少不了 arg 这个标签,就像 Dockerfile 中的 ARG 指令,它可以在构建过程中指定环境变量,但是在构建成功后取消,在 docker-compose.yml 文件中也支持这样的写法:

build:context: .args:buildno: 1password: secret

下面这种写法也是支持的,一般来说下面的写法更适合阅读

build:context: .args:- buildno=1- password=secret

与 ENV 不同的是,ARG 是允许空值的。例如:

args:- buildno- password

这样构建过程可以向它们赋值。

注意:YAML 的布尔值(true, false, yes, no, on, off)必须要使用引号引起来(单引号、双引号均可),否则会当成字符串解析。

4.3.3 command

使用command可以覆盖 容器启动后默认执行的命令。

command: bundle exec thin -p 3000

也可以写成类似dockerfile中的数组格式:

command: [bundle, exec, thin, -p, 3000]

4.3.4 container_name

前面说过 Compose 的容器名称格式是:<项目名称><服务名称><序号>
虽然可以自定义项目名称、服务名称,但是如果你想完全控制容器的命名,可以使用这个标签指定:

container_name: app

这样容器的名字就指定为app 了。

4.3.5depends_on

在使用 Compose 时,最大的好处就是少打启动命令,但是一般项目容器启动的顺序是有要求的,如果直接从上到下启动容器,必然会因为容器依赖问题而启动失败。
例如在没启动数据库容器的时候启动了应用容器,这时候应用容器会因为找不到数据库而退出,为了避免这种情况我们需要加入一个标签,就是 depends_on,这个标签解决了容器的依赖、启动先后的问题。
例如下面容器会先启动 redis 和 db 两个服务,最后才启动 web 服务:

version: '2'
services:web:build: .depends_on:- db- redisredis:image: redisdb:image: postgres

注意的是,默认情况下使用 docker-compose up web 这样的方式启动 web 服务时,也会启动 redis 和 db 两个服务,因为在配置文件中定义了依赖关系。

4.3.6 dns

和 --dns参数一样用途,格式如下:

dns: 8.8.8.8

也可以是一个列表:

dns:- 8.8.8.8- 9.9.9.9

此外 dns_search 的配置也类似于:

dns_search: example.com
dns_search:- dc1.example.com- dc2.example.com

4.3.7 tmpfs

挂载临时目录到容器内部,与run的参数一样效果:

tmpfs: /run
tmpfs:- /run- /tmp

4.3.8 entrypoint

在 Dockerfile 中有一个指令叫做 ENTRYPOINT 指令,用于指定接入点,第四章有对比过与 CMD 的区别。
在 docker-compose.yml 中可以定义接入点,覆盖 Dockerfile 中的定义:

entrypoint: /code/entrypoint.sh

格式和docker类似,不过还可以写成这样:

entrypoint:- php- -d- zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so- -d- memory_limit=-1- vendor/bin/phpunit

4.3.9 env_file

还记得前面提到的 .env 文件吧,这个文件可以设置 Compose 的变量。而在 docker-compose.yml 中可以定义一个专门存放变量的文件。
如果通过 docker-compose -f FILE 指定了配置文件,则 env_file 中路径会使用配置文件路径。

如果有变量名称与 environment 指令冲突,则以后者为准。格式如下:

env_file: .env

或者根据docker-compose.yml设置多个:

env_file:- ./common.env- ./apps/web.env- /opt/secrets.env

注意的是这里所说的环境变量是对宿主机的 Compose 而言的,如果在配置文件中有 build 操作,这些变量并不会进入构建过程中,如果要在构建中使用变量还是首选前面刚讲的 arg 标签。

4.3.10 environment

与上面的 env_file 标签完全不同,反而和 arg 有几分类似,这个标签的作用是设置镜像变量,它可以保存变量到镜像里面,也就是说启动的容器也会包含这些变量设置,这是与 arg 最大的不同。
一般 arg 标签的变量仅用在构建过程中。而 environment 和 Dockerfile 中的 ENV 指令一样会把变量一直保存在镜像、容器中,类似 docker run -e 的效果。

environment:RACK_ENV: developmentSHOW: 'true'SESSION_SECRET:environment:- RACK_ENV=development- SHOW=true- SESSION_SECRET

4.3.11 expose

这个标签与Dockerfile中的EXPOSE指令一样,用于 指定暴露的端口 ,但是只是作为一种参考,实际上docker-compose.yml的端口映射还得ports这样的标签。

expose:- "3000"- "8000"

4.3.12 external_links

在使用Docker过程中,我们会有许多单独使用docker run启动的容器,为了使Compose能够连接这些不在docker-compose.yml中定义的容器,我们需要一个特殊的标签,就是external_links,它可以让Compose项目里面的容器连接到那些项目配置外部的容器(前提是外部容器中必须至少有一个容器是连接到与项目内的服务的同一个网络里面)。
格式如下:

external_links:- redis_1- project_db_1:mysql- project_db_1:postgresql

4.3.13 extra_hosts

添加主机名的标签,就是往**/etc/hosts**文件中添加一些记录,与Docker client的–add-host类似:

extra_hosts:- "somehost:162.242.195.82"- "otherhost:50.31.209.229"

4.3.14 labels

向容器添加元数据,和Dockerfile的LABEL指令一个意思,格式如下:

labels:com.example.description: "Accounting webapp"com.example.department: "Finance"com.example.label-with-empty-value: ""
labels:- "com.example.description=Accounting webapp"- "com.example.department=Finance"- "com.example.label-with-empty-value"

4.3.15 links

还记得上面的depends_on吧,那个标签解决的是启动顺序问题,这个标签解决的是容器连接问题,与Docker client的–link一样效果,会连接到其它服务中的容器。
格式如下:

links:- db- db:database- redis

使用的别名将会自动在服务容器中的/etc/hosts里创建。例如:

172.12.2.186  db
172.12.2.186  database
172.12.2.187  redis

相应的环境变量也将被创建。

4.3.16 logging

这个标签用于配置日志服务
给是如下:

logging:driver: syslogoptions:syslog-address: "tcp://192.168.0.42:123"

默认的driver是json-file。只有json-file和journald可以通过docker-compose logs显示日志,其他方式有其他日志查看方式,但目前Compose不支持。对于可选值可以使用options指定。
有关更多这方面的信息可以阅读官方文档:
https://docs.docker.com/engine/admin/logging/overview/

4.3.17 pid

pid: "host"

将PID模式设置为主机PID模式,跟主机系统共享进程命名空间。容器使用这个标签将能够访问和操纵其他容器和宿主机的名称空间。

4.3.18 ports

映射端口的标签。
使用HOST:CONTAINER格式或者只是指定容器的端口,宿主机会随机映射端口。

ports:- "3000"- "8000:8000"- "49100:22"- "127.0.0.1:8001:8001"

注意:当使用HOST:CONTAINER格式来映射端口时,如果你使用的容器端口小于60你可能会得到错误得结果,因为YAML将会解析xx:yy这种数字格式为60进制。所以建议采用字符串格式。

4.3.19 security_opt

为每个容器覆盖默认的标签。简单说来就是管理全部服务的标签。比如设置全部服务的user标签值为USER。

security_opt:- label:user:USER- label:role:ROLE

4.3.20 stop_signal

设置另一个信号来停止容器。在默认情况下使用的是SIGTERM停止容器。设置另一个信号可以使用stop_signal标签。

stop_signal: SIGUSR1

4.3.21 volumes

挂载一个目录或者一个已存在的数据卷容器,可以直接使用 [HOST:CONTAINER] 这样的格式,或者使用 [HOST:CONTAINER:ro] 这样的格式,后者对于容器来说,数据卷是只读的,这样可以有效保护宿主机的文件系统。
Compose的数据卷指定路径可以是相对路径,使用 . 或者 … 来指定相对目录。
数据卷的格式可以是下面多种形式:

volumes:// 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。- /var/lib/mysql// 使用绝对路径挂载数据卷- /opt/data:/var/lib/mysql// 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。- ./cache:/tmp/cache// 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。- ~/configs:/etc/configs/:ro// 已经存在的命名的数据卷。- datavolume:/var/lib/mysql

如果你不使用宿主机的路径,你可以指定一个volume_driver。

volume_driver: mydriver

4.3.22 volumes_from

从其它容器或者服务挂载数据卷,可选的参数是 :ro或者 :rw,前者表示容器只读,后者表示容器对数据卷是可读可写的。默认情况下是可读可写的。

volumes_from:- service_name- service_name:ro- container:container_name- container:container_name:rw

4.3.23 cap_add, cap_drop

添加或删除容器的内核功能。详细信息在前面容器章节有讲解,此处不再赘述。

cap_add:- ALLcap_drop:- NET_ADMIN- SYS_ADMIN

4.3.24 cgroup_parent

指定一个容器的父级cgroup。

cgroup_parent: m-executor-abcd

4.3.25 devices

设备映射 列表。与Docker client的–device参数类似。

devices:- "/dev/ttyUSB0:/dev/ttyUSB0"

4.3.26 extends

这个标签可以扩展另一个服务,扩展内容可以是来自在当前文件,也可以是来自其他文件,相同服务的情况下,后来者会有选择地覆盖原有配置。

extends:file: common.ymlservice: webapp

用户可以在任何地方使用这个标签,只要标签内容包含file和service两个值就可以了。file的值可以是相对或者绝对路径,如果不指定file的值,那么Compose会读取当前YML文件的信息。
更多的操作细节在后面的12.3.4小节有介绍。

4.3.27 network_mode

网络模式,与Docker client的–net参数类似,只是相对多了一个service:[service name] 的格式。
例如:

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]

可以指定使用服务或者容器的网络。

4.3.28 networks

加入指定网络,格式如下:

services:some-service:networks:- some-network- other-network

关于这个标签还有一个特别的子标签aliases,这是一个用来设置服务别名的标签,例如:

services:some-service:networks:some-network:aliases:- alias1- alias3other-network:aliases:- alias2

相同的服务可以在不同的网络有不同的别名。

4.3.29 其它

还有这些标签:cpu_shares, cpu_quota, cpuset, domainname, hostname, ipc, mac_address, mem_limit, memswap_limit, privileged, read_only, restart, shm_size, stdin_open, tty, user, working_dir
上面这些都是一个单值的标签,类似于使用docker run的效果。

cpu_shares: 73
cpu_quota: 50000
cpuset: 0,1user: postgresql
working_dir: /codedomainname: foo.com
hostname: foo
ipc: host
mac_address: 02:42:ac:11:65:43mem_limit: 1000000000
memswap_limit: 2000000000
privileged: truerestart: alwaysread_only: true
shm_size: 64M
stdin_open: true
tty: true

4.4 note

4.4.1 docker run和docker-compose up

note:docker run 是创建新的容器 而docker-compose up 是会使用旧容器(如果存在的话)

官网介绍:

Preserve volume data when containers are created

Compose preserves all volumes used by your services. When docker-compose up runs, if it finds any containers from previous runs, it copies the volumes from the old container to the new container. This process ensures that any data you’ve created in volumes isn’t lost.

docker-compose只会为每个镜像维护一个实例,每次运行docker-compose up的时候,compose会查找之前的容器,把旧容器的volume-data拷贝到容器中。除非手动用docker rm命令删除容器,否则CONTAINER ID不会发生改变。

这和docker run [images name]不一样,这个命令每次运行会新生成一个镜像的实例,即新容器,它们对应的CONTAINER ID也各不相同

4.4.2 容器命名

docker-compose up -d
创建的容器的名字:是由docker-compose.yml的文件目录名加文件中指定的名字作为前缀,使用数字作为后缀
ex:
cluster/docker-compose.yml

docker-compose.yml中指定两个服务:

web:image:command:....
redis:image:command:....

则创建的服务容器名为:cluster_web_1和cluster_redis_1

4.5 实际部署

Docker-Compose 是 Docker 的独立产品,因此需要安装 Docker 之后在单独安装 Docker Compose。

//环境部署所有主机安装docker环境(内容为docker基础)
yum install docker-ce -y
//下载compose(上传docker_compose)
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
cp -p docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-composemkdir /root/compose_nginxyum install -y treevim /root/compose_nginx/docker-compose.ymlversion: '3'
services:nginx:hostname: nginxbuild:context: ./nginxdockerfile: Dockerfileports:- 1216:80- 1217:443networks:- cluster     volumes:- ./wwwroot:/usr/local/nginx/htmlnetworks:cluster:

[root@rocketmq-slave2 bin]# cd /root/compose_nginx/
[root@rocketmq-slave2 compose_nginx]# ll
总用量 4
-rw-r--r--. 1 root root 280 7月  23 20:07 docker-compose.yml
[root@rocketmq-slave2 compose_nginx]# mkdir nginx
[root@rocketmq-slave2 compose_nginx]# mkdir wwwroot
[root@rocketmq-slave2 compose_nginx]# ll
总用量 4
-rw-r--r--. 1 root root 280 7月  23 20:07 docker-compose.yml
drwxr-xr-x. 2 root root   6 7月  23 20:10 nginx
drwxr-xr-x. 2 root root   6 7月  23 20:11 wwwroot
[root@rocketmq-slave2 compose_nginx]# echo "weile dabaicai ">wwwroot/index.html
[root@rocketmq-slave2 compose_nginx]# cat wwwroot/index.html
weile dabaicai
[root@rocketmq-slave2 compose_nginx]# cd nginx/
[root@rocketmq-slave2 nginx]# rz -E
rz waiting to receive.
[root@rocketmq-slave2 nginx]# ll
总用量 1040
-rw-r--r--. 1 root root 1062124 6月   2 23:07 nginx-1.20.2.tar.gz
[root@docker nginx]# vim Dockerfile FROM centos:7 as build
ADD nginx-1.20.2.tar.gz /mnt
WORKDIR /mnt/nginx-1.20.2
RUN yum install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \yum clean all && \sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \./configure --prefix=/usr/local/nginx &> /dev/null && \make &>/dev/null && \make install &>/dev/null && \rm -rf /mnt/nginx-1.20.2FROM centos:7
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
COPY --from=build /usr/local/nginx /usr/local/nginx
CMD ["/usr/local/nginx/sbin/nginx","daemon off;"]

[root@docker compose_nginx]# tree ./
./
├── docker-compose.yml        //创建模板脚本
├── nginx├── Dockerfile        //创建容器脚本├── nginx-1.20.2.tar.gz    //复制源码包
└── wwwroot└── index.html        //站点

docker-compose -f docker-compose.yml up -d   //-f调用文件。-d:开启守护进程
docker network ls

总结:

Docker-Compose的工程配置文件默认为docker-compose.yml
使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。
Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

docker-compose分三层:project,service,container

project:代表多个service组成的项目,默认是用工作目录的名称作为project的工程名称
service:一个 service 可以包含一个或多个容器,在里面可以定义网络模式端口镜像数据卷等参数
container:可以直接由一个已存在的镜像运行实现,也可以通过dockerfile构建镜像实现

docker--compose相关推荐

  1. Docker compose 容器编排

    1. 概述 问题:如果要使用 Docker 运行 LNMP 架构,那么 Nginx.MySQL.PHP. Linux三个服务运行在一个容器里,还是运行在多个容器里呢? 答案是都可以. 你可以分别放在三 ...

  2. Docker核心技术之Docker Compose

    一.Docker Compose 简介 Docker Compose是什么? Docker Compose是一个能一次性定义和管理多个Docker容器的工具. 详细地说: Compose中定义和启动的 ...

  3. Docker Compose 1.18.0 之服务编排详解

    一个使用Docker容器的应用,通常由多个容器组成.使用Docker Compose,不再需要使用shell脚本来启动容器.在配置文件中,所有的容器通过services来定义,然后使用docker-c ...

  4. Centos7 Docker Compose部署mysql5.7

    1 . 创建docker-compose.yml文件 version: '3' services:mysql:restart: alwaysimage: mysql:5.7.22container_n ...

  5. Docker Compose安装

    一 .  Docker Compose概述 Docker Compose是一个用于定义和运行多个容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后 , ...

  6. Docker(八):Docker Compose

    Docker Compose Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具.通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务.然 ...

  7. Docker compose多容器管理

    前言 Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr). Docker Compose 运行的目录下的所有文件(doc ...

  8. Docker Compose—简化复杂容器应用的利器

    Compose是用于定义和运行复杂Docker应用的工具.你可以在一个文件中定义一个多容器的应用,然后使用一条命令来启动你的应用,然后所有相关的操作都会被自动完成. 1. 安装Docker和Compo ...

  9. Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践

    我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...

  10. Windows 系统安装Docker Compose 步骤

    参考 Docker Compose official 官方安装指南: https://docs.docker.com/compose/install/ 实际上到目前为止还不能直接在Windows上安装 ...

最新文章

  1. SAP UI5 - MVC
  2. QTP的那些事---通过html标签的属性获取对象(类似onclick的属性)
  3. Linux--安装yum源
  4. 三位bcd加法计数器_两个8位BCD编号的加法| 8085微处理器
  5. 使用“Grafeas”元数据API和“Kritis”部署授权管理软件供应链
  6. 【生产调度】基于matlab遗传算法求解柔性生产调度(FJSP)问题【含Matlab源码 1780期】
  7. Windows系统查看svg缩略图插件
  8. java从入门到放弃(一)
  9. 微信小游戏源码(从入门到入坑-火柴人勇闯地下城))
  10. LM2596、LM2576
  11. Java____利用HSSF导出、导入excel文件
  12. unity C# 时间换算记录
  13. AutoLeaders——翁恺老师的结构的笔记
  14. VirtualBox下ubuntu和本机win7共享文件夹
  15. 5g网络技术目前怎么样?5g网络什么时候出?
  16. 跳转打开多个标签导致浏览器崩溃问题
  17. Window7和Ubuntu双系统 删除Ubuntu
  18. 电影寒冬之下,票房靠“主旋律”能撑住场吗?《扫黑行动》仍在重播
  19. C++_07----强制类型转换异常
  20. win10为知笔记启动程序无反应

热门文章

  1. anaconda创建虚拟环境Solving environment: failed
  2. CSP2020-J2 题解 —— D题:方格取数
  3. 广东可团购烧号CDMA版iPhone 4
  4. 经验分享|在龙芯2K上运行RT-Thread系统并开源
  5. 关于机箱按键一键销毁或关机机箱内的多块VPX计算板卡的注意事项
  6. 手把手教你快速构建一份全国疫情分布地图
  7. eclipse创建maven项目没有maven dependence
  8. 单向直播面临升级,网易视频云首推多路互动直播
  9. Java实现人民币大写+GUI界面
  10. ltrim用法(通俗易懂版)