Docker 之Docker Compose 介绍

网友投稿 239 2022-10-18

Docker 之Docker Compose 介绍

文章目录

​​使用Docker Compose之前的项目搭建​​

​​构建一个Python的应用的image​​

​​创建composetest文件夹​​​​在 /tmp/composetest文件夹下 创建app.py文件​​​​创建requirements.txt文件​​​​创建Dockerfile文件​​​​构建Python这个应用程序的image​​​​拉取redis的镜像​​

​​创建应用网络 docker network create --subnet=172.26.0.0/24 compose-test-net​​​​启动Python应用​​​​启动redis容器​​​​访问测试​​

​​Docker Compose​​

​​官网​​​​Docker Compose简介​​​​Docker Compose 安装 (这里操作linux系统的安装)​​

​​下载​​​​赋予可执行命令​​​​查看是否安装了Docker Compose​​

​​Docker Compose的使用(对上面项目进行改造)​​

​​创建文件夹并编写Python的程序​​​​创建Dockerfile文件​​​​创建docker-compose.yml​​

​​docker-compose.yml 文件节点详解​​

​​version: '3'​​​​services:​​

​​文件目录结构如下​​​​启动Docker Compose​​​​测试​​

​​Docker Comopose 常用命令​​

​​docker-compose --version 查看版本​​​​docker-compose up 启动​​​​docker-compose images 查看当前compose下的镜像​​​​docker-compose stop 停止当前的compose下的容器​​​​docker-compose start 启动当前的compose下的容器​​​​docker-compose exec ${container-name} sh​​​​docker-compose ps 显示docker-compose.yml文件中定义的services​​​​docker-compose down 删除docker-compose,同时删除容器以及创建的网络和volume挂载目录​​

​​总结​​

使用Docker Compose之前的项目搭建

构建一个Python的应用的image

创建composetest文件夹

[root@izwz91h49n3mj8r232gqwez tmp]# pwd/tmproot@izwz91h49n3mj8r232gqwez tmp]# mkdir composetest[root@izwz91h49n3mj8r232gqwez tmp]# cd composetest/ ls -la[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]#

在 /tmp/composetest文件夹下 创建app.py文件

import timeimport redisfrom flask import Flaskapp = Flask(__name__)cache = redis.Redis(host='redis', port=6379)def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5)@app.route('/')def hello(): count = get_hit_count() return 'Hello World! I have been seen {} times.\n'.format(count)

备注

1.cache = redis.Redis(host='redis', port=6379) 这里的redis,是与后面创建的redis容器的名字是一致的,如果你的容器的名字不是redis, 那么这里需要改成你后面创建的容器的名字,6379是对应容器的端口

创建requirements.txt文件

[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]# vim requirements.txt[root@izwz91h49n3mj8r232gqwez composetest]#

requirements.txt文件内容

flaskredis

创建Dockerfile文件

[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]# vim Dockerfile[root@izwz91h49n3mj8r232gqwez composetest]#

Dockfile文件内容

FROM python:3.7-alpineWORKDIR /codeENV FLASK_APP app.pyENV FLASK_RUN_HOST 0.0.0.0RUN apk add --no-cache gcc musl-dev linux-headersCOPY requirements.txt requirements.txtRUN pip install -r requirements.txtCOPY . .CMD ["flask", "run"]

构建Python这个应用程序的image

[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]# docker build -t python-app-image .Sending build context to Docker daemon 4.608kBStep 1/9 : FROM python:3.7-alpine3.7-alpine: Pulling from library/python89d9c30c1d48: Pull complete 910c49c00810: Pull complete 7efe415eb85a: Pull complete 7d8d53519b81: Pull complete 519124ac136c: Pull complete Digest: sha256:de9fc5bc46cb1a7e2222b976394ea8aa0290592e3075457d41c5f246f176b1bfStatus: Downloaded newer image for python:3.7-alpine ---> 8922d588eec6Step 2/9 : WORKDIR /code ---> Running in 064aa863a5d1Removing intermediate container 064aa863a5d1 ---> e0d0f7a10b40Step 3/9 : ENV FLASK_APP app.py ---> Running in 0c12a404e52bRemoving intermediate container 0c12a404e52b ---> b4ba157f615cStep 4/9 : ENV FLASK_RUN_HOST 0.0.0.0 ---> Running in ba3bf6ec86d2Removing intermediate container ba3bf6ec86d2 ---> 0584db739547Step 5/9 : RUN apk add --no-cache gcc musl-dev linux-headers ---> Running in 42f9c797d10bfetch Installing binutils (2.32-r0)(2/12) Installing gmp (6.1.2-r1)(3/12) Installing isl (0.18-r0)(4/12) Installing libgomp (8.3.0-r0)(5/12) Installing libatomic (8.3.0-r0)(6/12) Installing libgcc (8.3.0-r0)(7/12) Installing mpfr3 (3.1.5-r1)(8/12) Installing mpc1 (1.1.0-r0)(9/12) Installing libstdc++ (8.3.0-r0)(10/12) Installing gcc (8.3.0-r0)(11/12) Installing linux-headers (4.19.36-r0)(12/12) Installing musl-dev (1.1.22-r3)Executing busybox-1.30.1-r2.triggerOK: 121 MiB in 47 packagesRemoving intermediate container 42f9c797d10b ---> 9859b83b89e9Step 6/9 : COPY requirements.txt requirements.txt ---> 65ea1158149cStep 7/9 : RUN pip install -r requirements.txt ---> Running in f35c9718cb07Collecting flask Downloading (94kB)Collecting redis Downloading (66kB)Collecting itsdangerous>=0.24 Downloading Jinja2>=2.10.1 Downloading (125kB)Collecting click>=5.1 Downloading (81kB)Collecting Werkzeug>=0.15 Downloading (327kB)Collecting MarkupSafe>=0.23 Downloading wheels for collected packages: MarkupSafe Building wheel for MarkupSafe (setup.py): started Building wheel for MarkupSafe (setup.py): finished with status 'done' Created wheel for MarkupSafe: filename=MarkupSafe-1.1.1-cp37-cp37m-linux_x86_64.whl size=32320 sha256=293afa3635708a72787c2e70e7f3dbdf57705de8b8d89e7cfdb057cf3bdb7649 Stored in directory: /root/.cache/pip/wheels/f2/aa/04/0edf07a1b8a5f5f1aed7580fffb69ce8972edc16a505916a77Successfully built MarkupSafeInstalling collected packages: itsdangerous, MarkupSafe, Jinja2, click, Werkzeug, flask, redisSuccessfully installed Jinja2-2.10.3 MarkupSafe-1.1.1 Werkzeug-0.16.0 click-7.0 flask-1.1.1 itsdangerous-1.1.0 redis-3.3.11Removing intermediate container f35c9718cb07 ---> db2e815e7795Step 8/9 : COPY . . ---> af81ca7db43dStep 9/9 : CMD ["flask", "run"] ---> Running in 38c06fed8d87Removing intermediate container 38c06fed8d87 ---> d1ff3f955ba5Successfully built d1ff3f955ba5Successfully tagged python-app-image:latest[root@izwz91h49n3mj8r232gqwez composetest]# [root@izwz91h49n3mj8r232gqwez composetest]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEpython-app-image latest d1ff3f955ba5 About a minute ago 213MB[root@izwz91h49n3mj8r232gqwez composetest]#

拉取redis的镜像

[root@izwz91h49n3mj8r232gqwez composetest]# docker pull redis:alpinealpine: Pulling from library/redis89d9c30c1d48: Already exists b2eb22a0b7db: Pull complete c5ccbdf10203: Pull complete 592c37d15428: Pull complete b70a614994bf: Pull complete 60027bdc030c: Pull complete Digest: sha256:ee13953704783b284c080b5b0abe4620730728054f5c19e9488d7a97ecd312c5Status: Downloaded newer image for redis:alpinedocker.io/library/redis:alpine[root@izwz91h49n3mj8r232gqwez composetest]#

备注

redis:alpine:这个版本比较小

创建应用网络 docker network create --subnet=172.26.0.0/24 compose-test-net

[root@izwz91h49n3mj8r232gqwez ~]# docker network create --subnet=172.26.0.0/24 python-app-net908680b363d9de50e1b3a76cc06dc5992721c609c370570407ae9886742bd6c0[root@izwz91h49n3mj8r232gqwez ~]#

启动Python应用

[root@izwz91h49n3mj8r232gqwez ~]# docker run -d --name python-app-container -p 5000:5000 --net=python-app-net python-app-imagef20c6595a1b91b3985005131c45e956da37de458c26d47e8a8962d6f0c7ae8e3[root@izwz91h49n3mj8r232gqwez ~]#

启动redis容器

[root@izwz91h49n3mj8r232gqwez ~]# docker run -d --name redis --net=python-app-net redis:alpine c08887abf7597a7831b12df1d1a8418962bcc8c071ca174b3c0f2c294d5147e1[root@izwz91h49n3mj8r232gqwez ~]#

访问测试

[root@izwz91h49n3mj8r232gqwez ~]# curl Hello World! I have been seen 1 times.[root@izwz91h49n3mj8r232gqwez ~]# curl Hello World! I have been seen 2 times.[root@izwz91h49n3mj8r232gqwez ~]# curl Hello World! I have been seen 3 times.[root@izwz91h49n3mj8r232gqwez ~]# curl Hello World! I have been seen 4 times.[root@izwz91h49n3mj8r232gqwez ~]# curl Hello World! I have been seen 5 times.[root@izwz91h49n3mj8r232gqwez ~]#

备注

1.每次自动增加1

Docker Compose

官网

​​Compose简介

1.Docker Compose是对容器级别的管理2.Docker Compose 是一种定义和启动Docker容器应用的工具;使用Compose,你可以用yaml文件去定义你的应用服务; 然后,我们可以使用简单的命令,通过yaml配置文件内容去创建和启动服务;3.通俗的讲,以前的时候,我们可能部署一个应用,需要访问redis,这个时候部署的应用会通过应用的image启动容器 redis通过其image也会启动一个容器; 现在的话 我们通过Docker Compose和配置yaml文件,就可以将redis这个放到ymal文件中指定相关的配置,然后我们一键启动应用的时候 同时启动redis,并连接redis

Docker Compose 安装 (这里操作linux系统的安装)

官方地址​​​~]# sudo curl -L "-s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 617 0 617 0 0 975 0 --:--:-- --:--:-- --:--:-- 974100 16.2M 100 16.2M 0 0 3080k 0 0:00:05 0:00:05 --:--:-- 3987k

赋予可执行命令

[root@izwz91h49n3mj8r232gqwez ~]# sudo chmod +x /usr/local/bin/docker-compose

查看是否安装了Docker Compose

[root@izwz91h49n3mj8r232gqwez ~]# docker compose --versionDocker version 19.03.5, build 633a0ea[root@izwz91h49n3mj8r232gqwez ~]#

Docker Compose的使用(对上面项目进行改造)

官方案例地址参考​​​tmp]# pwd/tmproot@izwz91h49n3mj8r232gqwez tmp]# mkdir composetest[root@izwz91h49n3mj8r232gqwez tmp]# cd composetest/ ls -la[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]#

编译app.py程序,上面也有了

import timeimport redisfrom flask import Flaskapp = Flask(__name__)cache = redis.Redis(host='redis', port=6379)def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5)@app.route('/')def hello(): count = get_hit_count() return 'Hello World! I have been seen {} times.\n'.format(count)

创建Dockerfile文件

跟上面一样

FROM python:3.7-alpineWORKDIR /codeENV FLASK_APP app.pyENV FLASK_RUN_HOST 0.0.0.0RUN apk add --no-cache gcc musl-dev linux-headersCOPY requirements.txt requirements.txtRUN pip install -r requirements.txtCOPY . .CMD ["flask", "run"]

创建docker-compose.yml

version: '3'services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine"

docker-compose.yml 文件节点详解

version: ‘3’

1.docker-compose 的版本

services:

1.services:主要容器的定义2.web/redis:主要是容器的别名3.一个service标识一个容器

build .

1.在当前目录下构建镜像

ports

1.相当于-p 5000:5000

备注具体语言使用参考

文件目录结构如下

启动Docker Compose

[root@izwz91h49n3mj8r232gqwez ~]# cd /tmp/composetest1/[root@izwz91h49n3mj8r232gqwez composetest1]# pwd/tmp/composetest1[root@izwz91h49n3mj8r232gqwez composetest1]# docker-compose upCreating network "composetest1_default" with the default driverBuilding webStep 1/9 : FROM python:3.7-alpine ---> 8922d588eec6Step 2/9 : WORKDIR /code ---> Using cache ---> e0d0f7a10b40Step 3/9 : ENV FLASK_APP app.py ---> Using cache ---> b4ba157f615cStep 4/9 : ENV FLASK_RUN_HOST 0.0.0.0 ---> Using cache ---> 0584db739547Step 5/9 : RUN apk add --no-cache gcc musl-dev linux-headers ---> Using cache ---> 9859b83b89e9Step 6/9 : COPY requirements.txt requirements.txt ---> 81f390e6e195Step 7/9 : RUN pip install -r requirements.txt ---> Running in 71470915b84bCollecting flask Downloading (94kB)Collecting redis Downloading (66kB)Collecting itsdangerous>=0.24 Downloading Werkzeug>=0.15 Downloading (327kB)Collecting click>=5.1 Downloading (81kB)Collecting Jinja2>=2.10.1 Downloading (125kB)Collecting MarkupSafe>=0.23 Downloading wheels for collected packages: MarkupSafe Building wheel for MarkupSafe (setup.py): started Building wheel for MarkupSafe (setup.py): finished with status 'done' Created wheel for MarkupSafe: filename=MarkupSafe-1.1.1-cp37-cp37m-linux_x86_64.whl size=32331 sha256=7d99db7a613823168d08b0c6975d1b9930ad7f22a35b449c2a6525bf911806e2 Stored in directory: /root/.cache/pip/wheels/f2/aa/04/0edf07a1b8a5f5f1aed7580fffb69ce8972edc16a505916a77Successfully built MarkupSafeInstalling collected packages: itsdangerous, Werkzeug, click, MarkupSafe, Jinja2, flask, redisSuccessfully installed Jinja2-2.10.3 MarkupSafe-1.1.1 Werkzeug-0.16.0 click-7.0 flask-1.1.1 itsdangerous-1.1.0 redis-3.3.11Removing intermediate container 71470915b84b ---> f447d3f215b9Step 8/9 : COPY . . ---> 8cb3451f0767Step 9/9 : CMD ["flask", "run"] ---> Running in abb9c82f8eebRemoving intermediate container abb9c82f8eeb ---> b2270c2c1058Successfully built b2270c2c1058Successfully tagged composetest1_web:latestWARNING: Image for service web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.Creating composetest1_web_1 ... doneCreating composetest1_redis1_1 ... doneAttaching to composetest1_redis1_1, composetest1_web_1redis1_1 | 1:C 16 Dec 2019 23:50:07.066 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Ooredis1_1 | 1:C 16 Dec 2019 23:50:07.066 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1, just startedredis1_1 | 1:C 16 Dec 2019 23:50:07.066 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.confredis1_1 | 1:M 16 Dec 2019 23:50:07.067 * Running mode=standalone, port=6379.redis1_1 | 1:M 16 Dec 2019 23:50:07.067 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.redis1_1 | 1:M 16 Dec 2019 23:50:07.067 # Server initializedredis1_1 | 1:M 16 Dec 2019 23:50:07.067 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.redis1_1 | 1:M 16 Dec 2019 23:50:07.067 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.redis1_1 | 1:M 16 Dec 2019 23:50:07.067 * Ready to accept connectionsweb_1 | * Serving Flask app "app.py"web_1 | * Environment: productionweb_1 | WARNING: This is a development server. Do not use it in a production deployment.web_1 | Use a production WSGI server instead.web_1 | * Debug mode: offweb_1 | * Running on (Press CTRL+C to quit)

1.docker-comose up 默认执行当前目录下的docker-compose.yml文件 如果要指定文件,可以使用下面的 docker-comose -f {文件目录}

这里注意下,由于容器中访问的host是redis这个域名,因此需要在python的那个容器中配置一下hosts,

172.19.0.3 是python的那个web容器172.19.0.2

[root@izwz91h49n3mj8r232gqwez ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES29091b5a999b redis:alpine "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 6379/tcp composetest_redis1_1f11f0d0e2dba composetest_web "flask run" 11 minutes ago Up 11 minutes 0.0.0.0:5000->5000/tcp composetest_web_1effa9ca46624 pxc "/entrypoint.sh " 3 days ago Up 3 days 4567-4568/tcp, 0.0.0.0:3303->3306/tcp pxc-node3389f7bc5a96e pxc "/entrypoint.sh " 3 days ago Up 3 days 4567-4568/tcp, 0.0.0.0:3302->3306/tcp pxc-node29c79dc31201a pxc "/entrypoint.sh " 3 days ago Up 3 days 4567-4568/tcp, 0.0.0.0:3301->3306/tcp pxc-node1[root@izwz91h49n3mj8r232gqwez ~]# [root@izwz91h49n3mj8r232gqwez ~]# docker exec -it composetest_web_1 sh/code # vi /etc/hosts

1.这里注意下,我们发现启动的容器,容器的名字跟我们在docker-compose.yml文件中定义的不太一样; 如:文件中定义的容器名字:web,但是实际docker ps 之后显示的是composetest_web_1 如:文件中定义的容器名字:redis1,但是实际docker ps之后显示的是composetest_redis1_1 其命名规范就是:{当前docker-compose.yml文件所在的文件夹}_{docker-compose.yml文件中的容器的名字}_{序列化}

127.0.0.1 localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters172.19.0.3 f11f0d0e2dba# 相当于redis会去自动解析成172.19.0.2172.19.0.2

测试

然后测试

[root@izwz91h49n3mj8r232gqwez ~]# curl World! I have been seen 1 times.[root@izwz91h49n3mj8r232gqwez ~]# [root@izwz91h49n3mj8r232gqwez ~]# curl World! I have been seen 2 times.[root@izwz91h49n3mj8r232gqwez ~]# curl World! I have been seen 3 times.[root@izwz91h49n3mj8r232gqwez ~]# [root@izwz91h49n3mj8r232gqwez ~]# curl World! I have been seen 4 times.[root@izwz91h49n3mj8r232gqwez ~]# curl World! I have been seen 5 times.[root@izwz91h49n3mj8r232gqwez ~]#

Docker Comopose 常用命令

docker-compose --version 查看版本

[root@izwz91h49n3mj8r232gqwez ~]# docker-compose --versiondocker-compose version 1.25.0, build 0a186604[root@izwz91h49n3mj8r232gqwez ~]#

docker-compose up 启动

[root@izwz91h49n3mj8r232gqwez composetest]# pwd /tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]# ls -latotal 24drwxr-xr-x 2 root root 4096 Dec 18 17:08 .drwxrwxrwt. 19 root root 4096 Dec 19 07:21 ..-rw-r--r-- 1 root root 514 Dec 15 11:44 app.py-rw-r--r-- 1 root root 109 Dec 17 08:12 docker-compose.yml-rw-r--r-- 1 root root 240 Dec 15 11:50 Dockerfile-rw-r--r-- 1 root root 12 Dec 15 11:47 requirements.txt[root@izwz91h49n3mj8r232gqwez composetest]# docker-compose up Creating composetest_web_1 ... doneCreating composetest_redis1_1 ... doneAttaching to composetest_redis1_1, composetest_web_1redis1_1 | 1:C 18 Dec 2019 23:25:34.162 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Ooredis1_1 | 1:C 18 Dec 2019 23:25:34.163 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=1, just startedredis1_1 | 1:C 18 Dec 2019 23:25:34.163 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.confredis1_1 | 1:M 18 Dec 2019 23:25:34.164 * Running mode=standalone, port=6379.redis1_1 | 1:M 18 Dec 2019 23:25:34.164 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.redis1_1 | 1:M 18 Dec 2019 23:25:34.164 # Server initializedredis1_1 | 1:M 18 Dec 2019 23:25:34.164 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.redis1_1 | 1:M 18 Dec 2019 23:25:34.164 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.redis1_1 | 1:M 18 Dec 2019 23:25:34.168 * Ready to accept connectionsweb_1 | * Serving Flask app "app.py"web_1 | * Environment: productionweb_1 | WARNING: This is a development server. Do not use it in a production deployment.web_1 | Use a production WSGI server instead.web_1 | * Debug mode: offweb_1 | * Running on (Press CTRL+C to quit)

docker-compose images 查看当前compose下的镜像

[root@izwz91h49n3mj8r232gqwez ~]# cd /tmp/composetest/[root@izwz91h49n3mj8r232gqwez composetest]# docker-compose images Container Repository Tag Image Id Size -------------------------------------------------------------------------composetest_redis1_1 redis alpine a49ff3e0d85f 29.31 MBcomposetest_web_1 composetest_web latest 8589e863cf67 213.1 MB[root@izwz91h49n3mj8r232gqwez composetest]#

docker-compose stop 停止当前的compose下的容器

[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]# docker-compose stopStopping composetest_web_1 ... doneStopping composetest_redis1_1 ... done[root@izwz91h49n3mj8r232gqwez composetest]#

docker-compose start 启动当前的compose下的容器

[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]# docker-compose startStarting web ... doneStarting redis1 ... done[root@izwz91h49n3mj8r232gqwez composetest]#

docker-compose exec ${container-name} sh

[root@izwz91h49n3mj8r232gqwez composetest]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESa46f11a3cf4b composetest_web "flask run" 9 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp composetest_web_13ec52dbc5b02 redis:alpine "docker-entrypoint.s…" 9 minutes ago Up 2 minutes 6379/tcp composetest_redis1_1effa9ca46624 pxc "/entrypoint.sh " 4 days ago Up 4 days 4567-4568/tcp, 0.0.0.0:3303->3306/tcp pxc-node3389f7bc5a96e pxc "/entrypoint.sh " 4 days ago Up 4 days 4567-4568/tcp, 0.0.0.0:3302->3306/tcp pxc-node29c79dc31201a pxc "/entrypoint.sh " 4 days ago Up 4 days 4567-4568/tcp, 0.0.0.0:3301->3306/tcp pxc-node1[root@izwz91h49n3mj8r232gqwez composetest]# docker-compose exec redis1 sh/data #

1.container-name:这里是redis1,就是docker-compose.yml文件中定义的那个;

docker-compose ps 显示docker-compose.yml文件中定义的services

[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]# docker-compose ps Name Command State Ports --------------------------------------------------------------------------------------composetest_redis1_1 docker-entrypoint.sh redis ... Up 6379/tcp composetest_web_1 flask run Up 0.0.0.0:5000->5000/tcp[root@izwz91h49n3mj8r232gqwez composetest]#

docker-compose down 删除docker-compose,同时删除容器以及创建的网络和volume挂载目录

[root@izwz91h49n3mj8r232gqwez composetest]# pwd/tmp/composetest[root@izwz91h49n3mj8r232gqwez composetest]# docker network ls NETWORK ID NAME DRIVER SCOPE38455e5a2df6 bridge bridge local23837bec4fcc composetest_default bridge local6f425e496441 host host locald082dd604405 none null locald1f57596c5c7 pxc-net bridge local908680b363d9 python-app-net bridge local[root@izwz91h49n3mj8r232gqwez composetest]# docker volume lsDRIVER VOLUME NAMElocal 570dd6b79f23b52c8e10c4f40d6e2e10628c2d06f2589fb8479c15c9b553cab0local 776ab96d5ec80d782c04a9db700058a32255539080c71bb8dddbf697328e21ealocal 913fd743532b955efc5889d779bb8dc64f7ec99fb7f0fd8570e474a0806f6398local bf9c00e7deebb7d2a30f3961d99cd7b57eb64013b7859c793024fbc3a4a6a078local e6cf1291a2f972c3d6a10e0b2c8d6818718fcfe097bb689fb1e922ce8950f0c9local pxc-v1local pxc-v2local pxc-v3[root@izwz91h49n3mj8r232gqwez composetest]# docker-compose downStopping composetest_web_1 ... doneStopping composetest_redis1_1 ... doneRemoving composetest_web_1 ... doneRemoving composetest_redis1_1 ... doneRemoving network composetest_default[root@izwz91h49n3mj8r232gqwez composetest]# docker network lsNETWORK ID NAME DRIVER SCOPE38455e5a2df6 bridge bridge local6f425e496441 host host locald082dd604405 none null locald1f57596c5c7 pxc-net bridge local908680b363d9 python-app-net bridge local[root@izwz91h49n3mj8r232gqwez composetest]# docker volume lsDRIVER VOLUME NAMElocal 570dd6b79f23b52c8e10c4f40d6e2e10628c2d06f2589fb8479c15c9b553cab0local 776ab96d5ec80d782c04a9db700058a32255539080c71bb8dddbf697328e21ealocal 913fd743532b955efc5889d779bb8dc64f7ec99fb7f0fd8570e474a0806f6398local bf9c00e7deebb7d2a30f3961d99cd7b57eb64013b7859c793024fbc3a4a6a078local e6cf1291a2f972c3d6a10e0b2c8d6818718fcfe097bb689fb1e922ce8950f0c9local pxc-v1local pxc-v2local pxc-v3[root@izwz91h49n3mj8r232gqwez composetest]#

总结

1.docker-compose:主要应用于单机(一台机器)的容器化集成部署, 如果需要分布式的部署,可能docker-compose不太适合应用

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Dockerfile运行jar包和war包
下一篇:Java 常见排序算法代码分享
相关文章

 发表评论

暂时没有评论,来抢沙发吧~