【美高梅手机版4858】Compose学习运用

By admin in 美高梅手机版4858 on 2019年4月27日

回去目录

回到目录

docker~docker-compose的使用,dockercompose使用

归来目录

docker-compose是用来在Docker中定义和周转复杂应用的工具,比方在3个yum文件里定义多个容器,只用1行命令就足以让整个就绪并运转。

使用docker
compose小编们得以在Run的层面化解广大事实上难题,如:通过创制compose(基于YUML语法)文件,在这一个文件上面描述应用的架构,如利用什么镜像、数据卷、网络、绑定服务端口等等,然后再用一条命令就能够管理全部的服务(网址1,服务1,监控1)。

转载请注解出处:Docker-Compose学习使用

docker-compose是用来在Docker中定义和平运动行复杂应用的工具,比方在3个yum文件里定义五个容器,只用一行命令就足以让总体就绪并运营。

docker-compose是用来在Docker中定义和平运动转复杂应用的工具,比如在八个yum文件里定义多少个容器,只用1行命令就能够让总体就绪并运转。

安装compose

# curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

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

查看是还是不是安装成功,看看版本

美高梅手机版4858 1

美高梅手机版4858 2docker

使用docker
compose大家得以在Run的层面化解广大实际上难点,如:通过创制compose(基于YUML语法)文件,在那么些文件上边描述应用的架构,如选取什么镜像、数据卷、互连网、绑定服务端口等等,然后再用一条命令就足以管理全体的服务(网址1,服务1,监察和控制1)。

使用docker
compose我们得以在Run的范围消除很多实在难点,如:通过创办compose(基于YUML语法)文件,在那个文件上边描述应用的架构,如使用什么镜像、数据卷、互连网、绑定服务端口等等,然后再用一条命令就足以管理全体的劳务(网址1,服务1,监察和控制1)。

运行yml文件

vs20壹七援救大家转换了Dockerfile和compose化解方案,大家得以把全体解决方案复制到linux上,然后去苏醒,编写翻译,公布,运维它们!

美高梅手机版4858 3

VS帮大家调换的代码,实现了对消除方案的包恢复生机和文告等功能

version: '2'

services:
  ci-build:
    image: microsoft/aspnetcore-build:1.0-1.1
    volumes:
      - .:/src
    working_dir: /src
    command: /bin/bash -c "dotnet restore ./testCore.sln && dotnet publish ./testCore.sln -c Release -o ./obj/Docker/publish"

咱俩来运转1个docker-compose.yml文件

docker-compose up 

自此会运转大家的器皿!

归来目录

 

回到目录
docker-compose是用来在Docker中定义和周转复杂应用的工具,比方在八个yum文件里定义七个容…

Docker
Compose是一个用来定义和周转复杂应用的Docker工具。贰个用到Docker容器的使用,平常由三个容器组成。使用Docker
Compose不再必要运用shell脚本来运维容器。Compose
通过3个配备文件来治本两个Docker容器,在安顿文件中,全部的器皿通过services来定义,然后使用docker-compose脚本来运行,停止和重启应用,和行使中的服务以及具备信赖服务的器皿,格外适合组合使用五个容器进行支付的风貌。

安装compose

# curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

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

翻看是否安装成功,看看版本

美高梅手机版4858 4

安装compose

# curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

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

查看是还是不是安装成功,看看版本

美高梅手机版4858 5

官方文书档案 – Docker Compose

运行yml文件

vs2017拉扯大家转移了Dockerfile和compose化解方案,大家能够把全部消除方案复制到linux上,然后去复苏,编写翻译,宣布,运转它们!

美高梅手机版4858 6

VS帮咱们转换的代码,完毕了对消除方案的包恢复和颁布等功效

version: '2'

services:
  ci-build:
    image: microsoft/aspnetcore-build:1.0-1.1
    volumes:
      - .:/src
    working_dir: /src
    command: /bin/bash -c "dotnet restore ./testCore.sln && dotnet publish ./testCore.sln -c Release -o ./obj/Docker/publish"

大家来运维一个docker-compose.yml文件

cd 你的缓和方案目录 

docker-compose kill
#删除正在运营的服务

docker-compose rm #删除服务的镜像

docker-compose build #生成新的镜像

docker-compose up #运维容器

美高梅手机版4858 7

 

 

后来会运转我们的器皿!

归来目录

 

运行yml文件

vs2017援救大家转移了Dockerfile和compose消除方案,大家能够把全体消除方案复制到linux上,然后去复苏,编写翻译,发表,运维它们!

美高梅手机版4858 8

【美高梅手机版4858】Compose学习运用。VS帮我们转移的代码,实现了对缓和方案的包恢复生机和宣布等功能

version: '2'

services:
  ci-build:
    image: microsoft/aspnetcore-build:1.0-1.1
    volumes:
      - .:/src
    working_dir: /src
    command: /bin/bash -c "dotnet restore ./testCore.sln && dotnet publish ./testCore.sln -c Release -o ./obj/Docker/publish"

小编们来运作二个docker-compose.yml文件

cd 你的减轻方案目录 

docker-compose kill
#删除正在周转的服务

docker-compose rm #删除服务的镜像

docker-compose build #生成新的镜像

docker-compose up #运转容器

美高梅手机版4858 9

 

 

未来会运转大家的容器!

回来目录

 

docker-compose安装能够参照官方文档:Install Docker Compose

Docker Desktop for MacDocker Toolbox 已融为一体了docker-compose,
所以只要安装了docker是不必要设置的,直接就足以用。

在Linux系统中,能够透过源码来安装docker-compose

  1. 从github下载最新版docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$-$" -o /usr/local/bin/docker-compose
  1. 给docker-compose赋予可执行权限

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

末尾能够经过以下命令来验证是不是安装成功:

docker-compose --version

docker-compose 文件命名以.yml.yaml为后缀。

上面先欣赏一下合法文书档案中的三个演示:

version: "3"services: redis: image: redis:alpine ports: - "6379" networks: - frontend deploy: replicas: 2 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure db: image: postgres:9.4 volumes: - db-data:/var/lib/postgresql/data networks: - backend deploy: placement: constraints: [node.role == manager] vote: image: dockersamples/examplevotingapp_vote:before ports: - "5000:80" networks: - frontend depends_on: - redis deploy: replicas: 2 update_config: parallelism: 2 restart_policy: condition: on-failure result: image: dockersamples/examplevotingapp_result:before ports: - "5001:80" networks: - backend depends_on: - db deploy: replicas: 1 update_config: parallelism: 2 delay: 10s restart_policy: condition: on-failure worker: image: dockersamples/examplevotingapp_worker networks: - frontend - backend deploy: mode: replicated replicas: 1 labels: [APP=VOTING] restart_policy: condition: on-failure delay: 10s max_attempts: 3 window: 120s placement: constraints: [node.role == manager] visualizer: image: dockersamples/visualizer:stable ports: - "8080:8080" stop_grace_period: 1m30s volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager]networks: frontend: backend:volumes: db-data:

从上述示范看,整个文书档案分为四部分,version, services, networks,
volumes, 其中services中内容最长,上面将各样做个简要介绍

version是compose的版本,下表是compose版本与docker版本对照表:

Compose file format Docker Engine release
3.7 18.06.0+
3.6 18.02.0+
3.5 17.12.0+
3.4 17.09.0+
3.3 17.06.0+
3.2 17.04.0+
3.1 1.13.1+
3.0 1.13.0+
2.4 17.12.0+
2.3 17.06.0+
2.2 1.13.0+
2.1 1.12.0+
2.0 1.10.0+
1.0 1.9.1.+

services是用来布置定义每一种容器运行参数,每个service就是2个容器,services下一流配备正是服务名称,举个例子地方示例中的redis,
db等。

3.2.1. image

image是点名服务的镜像名称或镜像 ID。借使镜像在地面不设有,Compose
将会尝试拉取这些镜像。

譬如下边那几个格式都以能够的:

image: redisimage: ubuntu:14.04image: tutum/influxdbimage: example-registry.com:4000/postgresqlimage: a4bc65fd

3.2.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 后边的丰裕名字。

既是能够在 docker-compose.yml 中定义创设职责,那么早晚少不了 arg
那几个标签,就好像 Dockerfile 中的 A奥德赛G
指令,它能够在创设进程中钦点情状变量,不过在营形成功后撤回,在
docker-compose.yml 文件中也支持那样的写法:

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

上边那种写法也是接济的,一般的话上边包车型客车写法更合乎阅读。

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

与 ENV 差别的是,A冠道G 是允许空值的。举例:

args: - buildno - password

那样营造进度能够向它们赋值。

小心:YAML 的布尔值(true, false, yes, no, on,
off)须要求选取引号引起来(单引号、双引号均可),不然会当成字符串解析。

3.2.3. command

使用 command 可以覆盖容器运转后默许试行的下令。

command: bundle exec thin -p 3000

也足以写成类似 Dockerfile 中的格式:

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

3.2.4. container_name

Compose
的容器名称格式是:<项目名称><服务名称><序号>固然能够自定义项目名称、服务名称,然而假使你想完全控制容器的命名,能够接纳那几个标签钦点:

container_name: app

诸如此类容器的名字就钦命为 app 了。

3.2.5. depends_on

在运用 Compose
时,最大的便宜正是少打运行命令,可是一般品种容器运行的1①是有须求的,若是直接从上到下运转容器,必然会因为容器依赖难点而运转失利。比方在没运行数据水库蓄水容量器的时候运行了采纳容器,那时候应用容器会因为找不到数据库而脱离,为了防止这种情形大家供给投入三个标签,就是depends_on,那一个标签消除了容器的依赖性、运行程序的难题。比如上边容器会先运行redis 和 db 四个服务,最终才起步 web 服务:

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

专注的是,暗中认可境况下采用 docker-compose up web 那样的方法运转 web
服务时,也会运转 redis 和 db 七个劳务,因为在布置文件中定义了借助关系。

3.2.6.dns

和 –dns 参数同样用途,格式如下:

dns: 8.8.8.8

也得以是八个列表:

dns: - 8.8.8.8 - 9.9.9.9

此外 dns_search 的配置也近乎:

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

3.2.7. environment

和 arg
有几分类似,那一个标签的功力是设置镜像变量,它能够保存变量到镜像里面,也正是说运转的容器也会蕴藏这么些变量设置,这是与
arg 最大的差异。一般 arg 标签的变量仅用在创设进度中。而 environment 和
Dockerfile 中的 ENV 指令一样会把变量一向保存在镜像、容器中,类似 docker
run -e 的意义。

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

3.2.8. extra_hosts

增多主机名的价签,正是往/etc/hosts文件中增加一些笔录,与Docker
client的–add-host类似:

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

开发银行现在查看容器内部hosts:

162.242.195.82 somehost50.31.209.229 otherhost

3.2.9. 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"

3.2.10 links

还记得上边的depends_on吧,那1个标签消除的是开发银行顺序难点,那些标签化解的是容器连接问题,与Docker
client的–link同样效果,会连接到此外服务中的容器。格式如下:

links: - db - db:database - redis

运用的别老马会自行在劳务容器中的/etc/hosts里创造。举例:

172.12.2.186 db172.12.2.186 database172.12.2.187 redis

对应的景况变量也将被创立。

3.2.11 ports

辉映端口的竹签。使用HOST:CONTAINERAV四格式或然只是钦赐容器的端口,宿主机会随机映射端口。

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

只顾:当使用HOST:CONTAINEEvoque格式来映射端口时,如若你接纳的容器端口小于60您或者会得到错误得结果,因为YAML将会解析xx:yy那种数字格式为60进制。所以建议接纳字符串格式。

3.2.12. 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

3.2.13. networks

进入钦点互联网,格式如下:

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

有关这几个标签还有2个特意的子标签aliases,这是1个用来安装服务别称的标签,举个例子:

services: some-service: networks: some-network: aliases: - alias1 - alias3 other-network: aliases: - alias2

一点差别也没有于的劳动能够在不一致的网络有两样的别称。

3.2.14. 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]"

能够钦命使用服务也许容器的网络。

docker-compose常用命令能够经过以下命令大约看一下:

docker-compose --help

结果如下:

Define and run multi-container applications with Docker.Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker-compose -h|--helpOptions: -f, --file FILE Specify an alternate compose file (default: docker-compose.yml) -p, --project-name NAME Specify an alternate project name (default: directory name) --verbose Show more output --log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) --no-ansi Do not print ANSI control characters -v, --version Print version and exit -H, --host HOST Daemon socket to connect to --tls Use TLS; implied by --tlsverify --tlscacert CA_PATH Trust certs signed only by this CA --tlscert CLIENT_CERT_PATH Path to TLS certificate file --tlskey TLS_KEY_PATH Path to TLS key file --tlsverify Use TLS and verify the remote --skip-hostname-check Don't check the daemon's hostname against the name specified in the client certificate --project-directory PATH Specify an alternate working directory (default: the path of the Compose file) --compatibility If set, Compose will attempt to convert deploy keys in v3 files to their non-Swarm equivalentCommands: build Build or rebuild services bundle Generate a Docker bundle from the Compose file config Validate and view the Compose file create Create services down Stop and remove containers, networks, images, and volumes events Receive real time events from containers exec Execute a command in a running container help Get help on a command images List images kill Kill containers logs View output from containers pause Pause services port Print the public port for a port binding ps List containers pull Pull service images push Push service images restart Restart services rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services top Display the running processes unpause Unpause services up Create and start containers version Show the Docker-Compose version information

下边会指向某些比较常用的命令进行简易介绍

当修改dockerfile或许docker-compose时,运维docker-compose build
重建镜像。 生成镜像后,可选择docker-compose up运行

来得全数容器新闻,私下认可彰显name、command、state、ports。

强制甘休有个别正在运行的劳务

打字与印刷服务日志

语法:

logs [options] [SERVICE...]

参数:

--no-color Produce monochrome output.-f, --follow Follow log output-t, --timestamps Show timestamps--tail="all" Number of lines to show from the end of the logs for each container.

塑造,创立,运行,链接三个劳动相关的器皿。链接的服务都将会运行,除非他们曾经运维。默许情形,
docker-compose up
将会组成全数容器的出口,并且脱离时,全体容器将会告1段落。借使运用
docker-compose up -d ,将会在后台运维并运营具备的容器。

私下认可景况,尽管该服务的器皿已经存在, docker-compose up
将会甘休并尝试又一次创制他们(保持利用 volumes-from 挂载的卷),以确定保证docker-compose.yml的改换生效。假设您不想容器被终止同等对待新创造,能够利用
docker-compose up --no-recreate。借使供给的话,那样将会运营已经停止的器皿。

语法:

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

参数:

 -d 后台运行,输出容器的名字. Incompatible with --abort-on-container-exit. --no-color 单色输出. --no-deps 不启动link服务. --force-recreate 强制重新创建compose服务,即使没有任何改变。重新创建后启动容器 Incompatible with --no-recreate. --no-recreate 如果容器已经存在,不重新创建. Incompatible with --force-recreate. --no-build 不创建重启,即使镜像不存在. --build 重新创建镜像,然后生成容器. --abort-on-container-exit 任何容器停止,自动停止所有容器. Incompatible with -d. -t, --timeout TIMEOUT 超时时间. (default: 10) --remove-orphans 移除compose文件中未定义服务的容器

为劳动创立容器.只是仅仅的create,还索要利用start运行compose

语法:

create [options] [SERVICE...]

参数

 --force-recreate 重新创建容器,即使他的配置和镜像没有改变,不兼容--no-recreate参数 --no-recreate 如果容器已经存在,不需要重新创建. 不兼容--force-recreate参数 --no-build 不创建镜像,即使缺失. --build 创建容器前,生成镜像

悬停和删除容器、互连网、卷、镜像,那么些内容是通过docker-compose up命令创造的.
暗中同意值删除容器网络,能够由此点名 rmi volumes参数删除镜像和卷。

语法:

down [options]

参数:

--rmi type 删除镜像,类型必须是: 'all': 删除compose文件中定义的所以镜像. 'local': 删除镜像名为空的镜像-v, --volumes 删除卷 attached to containers.--remove-orphans Remove containers for services not defined in the Compose file

伊始贰个1度存在的劳动容器。

美高梅手机版4858,停下叁个业已运转的容器,但不删除它。通过
docker-compose start可以重新启航那么些器皿。

暂停容器服务,docker-compose pause
暂停全数服务。docker-compose pause web,暂停web服务的容器。

还原容器服务,docker-compose unpause
恢复生机全部服务,docker-compose unpause web,苏醒web服务的器皿。

重启docker-compose.yml中定义的持有的已告1段落的和正在运维的劳务。

删除已经终止的容器,要是服务在运作,供给先docker-compose stop
停止容器,私下认可意况下,已挂载的volume中的数据不会被删去,能够选用docker volume ls翻开全部的volume情形。全数在容器中从未在volume中的数据将被删去。

在2个服务上实践三个命令.

语法:

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

参数:

-d 后台运行,输出容器名.-e KEY=VAL 设置环境变量参数,可以使用多次-u, --user="" 指定运行的用户--no-deps 不启动link服务,只启动run的服务.--rm 运行后删除容器,后台运行模式除外.-p, --publish=[] 开放端口--service-ports compose文件中配置什么端口,就映射什么端口.-T 禁用TTY.-w, --workdir="" 设置工作目录

例如:

docker-compose run ubuntu ping docker.com

设置同1个服务运作的容器个数。通过 service=num 的参数来安装数量。

官方文书档案 – Docker Composedocker-compose.yml
配置文件编写详解docker-compose:基本语法docker-compose命令详解

转发请声明出处:Docker-Compose学习使用

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有