ToB企服应用市场:ToB评测及商务社交产业平台

标题: Docker Compose - 安装和基本使用 [打印本页]

作者: 李优秀    时间: 2024-8-5 03:44
标题: Docker Compose - 安装和基本使用
一、概述

Compose 是一个用于界说和运行多容器 Docker 应用步伐的工具。Compose 用 YAML 文件设置应用步伐的服务。使用单一命令,可以从 YAML 文件设置中创建并启动所有服务。适用于所有环境生产、开发、测试以及 CI/CD 工作流程。
Compose的使用三步:


二、Docker Compose与Docker关系

2.1 Docker Compose(容器编排工具)

界说:Docker Compose 是一个用于界说和运行多容器 Docker 应用的工具。
功能:

用途:简化多容器应用的设置和管理,适用于开发、测试和生产环境中的复杂应用。
2.2 Docker(容器平台)

界说:一个开放源代码的容器化平台,允许开发者将应用及其依赖打包进轻量级、可移植的容器中。
功能:

用途:提供一个标准化的方式打包和运行应用,确保应用在不同环境中的一致性和可移植性。
2.3 两者关系

2.4 两者版本兼容

Compose版本Docker版本3.819.03.0+3.718.06.0+3.618.02.0+3.517.12.0+ 3.4
17.09.0+3.317.06.0+3.217.04.0+3.11.13.1+3.01.13.0+2.417.12.0+2.317.06.0+2.21.13.0+2.11.12.0+2.01.10.0+
三、Compose 安装

1.查看docker版本:
  1. [root@localhost ~]# docker --version
  2. Docker version 24.0.7, build afdd53b
复制代码
2.下载docker-compose软件:
  1. [root@localhost ~]# wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64
复制代码
3.移动下载软件到/usr/local/bin/docker-compose覆盖旧版本:
  1. [root@localhost ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
  2. mv: overwrite ‘/usr/local/bin/docker-compose’? y
复制代码
4.赋予实行权限:
  1. [root@localhost ~]# chmod +x /usr/local/bin/docker-compose
复制代码
5.测试安装是否乐成:
  1. [root@localhost ~]# docker-compose --version
  2. Docker Compose version v2.16.0
复制代码
6.卸载docker compose:
  1. [root@localhost ~]# rm -f /usr/local/bin/docker-compose
复制代码

四、Docker Compose--文件基本布局

        Docker Compose 文件是 Docker Compose 工具的焦点,用于界说和设置多容器 Docker 应用。接纳 YAML格式编写。
docker-compose.yml设置案例
  1. version: "3.9"
  2.   services:
  3.     web:
  4.       build: .
  5.       ports:
  6.         - "8000:5000"
  7.       volumes:
  8.         - .:/code
  9.         - logvolume01:/var/log
  10.       links:
  11.         - redis
  12.     redis:
  13.       image: redis
  14. volumes:
  15.   logvolume01: {}
复制代码
  文件设置解释阐明:
  
  
五、基本使用--案例

目录布局:
   [root@localhost ~]# tree counter-app-master
├── app.py    #应用步伐代码(Python Flask应用)
├── docker-compose.yml    #compose文件,界说Docker部署应用
├── Dockerfile    #界说构建web-fe服务所使用的镜像
└── requirements.txt    #应用所依赖的Python包
  1.界说应用步伐依赖项:
  1. [root@localhost ~]# mkdir counter-app-master    #创建测试目录
  2. [root@localhost ~]# cd counter-app-master
  3. [root@localhost counter-app-master]# vim app.py    #创建名为app.py的文件
  4. import time
  5. import redis
  6. from flask import Flask
  7. app = Flask(__name__)
  8. cache = redis.Redis(host='redis', port=6379)
  9. def get_hit_count():
  10.     retries = 5
  11.     while True:
  12.         try:
  13.             return cache.incr('hits')
  14.         except redis.exceptions.ConnectionError as exc:
  15.             if retries == 0:
  16.                 raise exc
  17.             retries -= 1
  18.             time.sleep(0.5)
  19. @app.route('/')
  20. def hello():
  21.     count = get_hit_count()
  22.     return "What's up Docker Deep Divers! You've visited me {} times.\n".format(count)
  23. if __name__ == "__main__":
  24.     app.run(host="0.0.0.0", debug=True)
复制代码
        上述此示例中,redis 是应用步伐网络上的 redis 容器的主机名,所以使用默认端口6379。
在测试目录中创建名为 requirements.txt 的文件:
  1. [root@localhost counter-app-master]# cat requirements.txt
  2. flask
  3. redis
复制代码
2.编写Dockerfile文件:
  1. redis[root@localhost counter-app-master]# cat Dockerfile
  2. FROM python:3.6-alpine
  3. ADD . /code
  4. WORKDIR /code
  5. RUN pip install -r requirements.txt
  6. CMD ["python", "app.py"]
复制代码
  Dockerfile文档逐行解释阐明:
  
  3.编写docker-compose.yml文件界说服务:
  1. [root@localhost counter-app-master]# cat docker-compose.yml
  2. version: "3.5"
  3. services:
  4.   web-fe:
  5.     build: .
  6.     command: python app.py
  7.     ports:
  8.       - target: 5000
  9.         published: 5000
  10.     networks:
  11.       - counter-net
  12.     volumes:
  13.       - type: volume
  14.         source: counter-vol
  15.         target: /code
  16.   redis:
  17.     image: "redis:alpine"
  18.     networks:
  19.       counter-net:
  20. networks:
  21.   counter-net:
  22. volumes:
复制代码
  一级key解释阐明:
  
    二级key解释阐明:
  web-fe服务指令解释阐明:
  
  redis服务指定解释阐明:
  
  4.启动应用步伐:
  1. [root@localhost counter-app-master]# docker-compose up    #前台启动
  2. [+] Building 143.1s (9/9) FINISHED
  3. => [internal] load build definition from Dockerfile                                            0.1s
  4. ...
  5. counter-app-master-web-fe-1  |  * Restarting with stat
  6. counter-app-master-web-fe-1  |  * Debugger is active!
  7. counter-app-master-web-fe-1  |  * Debugger PIN: 127-376-714
  8. [root@localhost counter-app-master]# docker-compose up -d    #后台启动
  9. [+] Running 2/2
  10. ⠿ Container counter-app-master-redis-1   Started                                               0.9s
  11. ⠿ Container counter-app-master-web-fe-1  Started                                               1.2s
复制代码
查看镜像、容器、网络及卷:
  1. [root@localhost counter-app-master]# docker images
  2. REPOSITORY                  TAG       IMAGE ID       CREATED          SIZE
  3. counter-app-master-web-fe   latest    da547efce15a   52 minutes ago   55.1MB
  4. redis                       alpine    3900abf41552   2 years ago      32.4MB
  5. [root@localhost counter-app-master]# docker ps
  6. CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS         PORTS                                       NAMES
  7. 775de272840c   counter-app-master-web-fe   "python app.py"          52 minutes ago   Up 2 minutes   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   counter-app-master-web-fe-1
  8. 60badb2d9db4   redis:alpine                "docker-entrypoint.s…"   52 minutes ago   Up 2 minutes   6379/tcp                                    counter-app-master-redis-1
  9. [root@localhost counter-app-master]# docker network ls
  10. NETWORK ID     NAME                             DRIVER    SCOPE
  11. 2d11a73f849e   bridge                           bridge    local
  12. 7bc0ef96bf07   counter-app-master_counter-net   bridge    local
  13. 303bac79a650   host                             host      local
  14. f08b7d46c61e   none                             null      local
  15. [root@localhost counter-app-master]# docker volume ls
  16. DRIVER    VOLUME NAME
  17. local     counter-app-master_counter-vol
复制代码
测试访问效果:每革新一次页面,计数将叠加


六、常用命令


        docker-compose up    #在前台启动服务
        docker-compose up -d    #启动服务在配景运行
        docker-compose up --build    #重新构建服务

        docker-compose down    #停止并移除服务
        docker-compose down -v    #停止服务并移除卷

        docker-compose pause

        docker-compose unpause

        docker-compose logs    #查看所有服务日志
        docker-compose logs -f    #实时查看日志

        docker-compose start

        docker-compose stop

        docker-compose restart

        docker-compose ps

        docker-compose exec 容器名 /bin/sh

        docker-compose pull

        docker-compose build

        docker-compose rm

        docker-compose cp

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4