测试以及 CI/CD 工作流程
发布时间:2025-06-24 20:13:02 作者:北方职教升学中心 阅读量:020
存储和分发容器镜像
容器运行:可以运行在任何支持Docker的环境中用途:提供一个标准化的方式打包和运行应用,确保应用在不同环境中的一致性和可移植性。采用 YAML格式编写。开发、
2.4 两者版本兼容
Compose版本 | Docker版本 |
---|
3.8 | 19.03.0+ |
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+ |
三、适用于所有环境生产、概述
Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。Compose 用 YAML 文件配置应用程序的服务。配置文件、网络、容器、Docker compose会将每个服务部署为一个容器,且会将key作为容器名字的一部分
networks:创建新的网络,默认自动创建bridge网络。两者之间相辅相成,Docker 提供容器化的核心功能,Docker Compose 则管理这些容器的组合和交互。环境设置和依赖关系 - web:自己构建的镜像
- build:用于构建镜像,指定构建镜像的 dockerfile 的上下文路径
- ports:映射容器和宿主机的端口
- volumes:挂载本地目录到指定容器目录,用于数据持久化或在容器之间共享数据
- links:与redis服务连接
redis:构建指定镜像redis - image:从指定的镜像中启动容器,可以是存储仓库、
功能:
- 多容器管理:允许用户在一个YAML文件中定义和管理多个容器
- 服务编排:配置容器间的网络和依赖关系
- 一键部署:使用docker-compose up命令启动、停止和重建服务
用途:简化多容器应用的配置和管理,适用于开发、
在测试目录中创建名为 requirements.txt 的文件:
[root@localhost counter-app-master]# cat requirements.txtflaskredis
2.编写Dockerfile文件:
redis[root@localhost counter-app-master]# cat DockerfileFROM python:3.6-alpineADD . /codeWORKDIR /codeRUN pip install -r requirements.txtCMD ["python", "app.py"]
Dockerfile文档逐行解释说明:
- 从 Python 3.6 镜像开始构建
- 将当前目录拷贝到容器/code目录下
- 定义容器工作目录为/code
- 安装 Python 依赖项
- 容器默认执行命令
3.编写docker-compose.yml文件定义服务:
[root@localhost counter-app-master]# cat docker-compose.ymlversion: "3.5"services: web-fe: build: . command: python app.py ports: - target: 5000 published: 5000 networks: - counter-net volumes: - type: volume source: counter-vol target: /code redis: image: "redis:alpine" networks: counter-net:networks: counter-net:volumes:
一级key解释说明:
- version:定义 compose 文件格式的版本
- services:定义不同的应用服务,上述定义web前端服务以及redis缓存数据库服务。卷和默认镜像:
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
此网络只能实现与同一主机容器连接
volumes:创建新卷二级key解释说明:
web-fe服务指令解释说明:
- build:. 代表基于当前目录,. 下Dockerfile中定义的指令构成一个新镜像,该镜像将被用于启动该服务的容器
- command:在容器中执行名为app.py的Python脚本作为主程序,所以在Dockerfile中将满足镜像中包含app.py及Python
- ports:容器内的5000端口映射到主机5000端口
- networks:指定服务连接的网络,且指定的网络需要存在,或是在一级key中的networks中定义过
- volumes:将counter-vol卷挂载到容器/code,且指定卷counter-vol需要存在,或是在一级key中的volumes中定义过
redis服务指定解释说明:
- image:基于redis:alpine镜像启动一个独立名为redis的容器
- networks:配置redis容器连接counter-net网络
4.启动应用程序:
[root@localhost counter-app-master]# docker-compose up #前台启动[+] Building 143.1s (9/9) FINISHED => [internal] load build definition from Dockerfile 0.1s...counter-app-master-web-fe-1 | * Restarting with statcounter-app-master-web-fe-1 | * Debugger is active!counter-app-master-web-fe-1 | * Debugger PIN: 127-376-714[root@localhost counter-app-master]# docker-compose up -d #后台启动[+] Running 2/2 ⠿ Container counter-app-master-redis-1 Started 0.9s ⠿ Container counter-app-master-web-fe-1 Started 1.2s
查看镜像、Compose 安装
1.查看docker版本:
[root@localhost ~]# docker --versionDocker version 24.0.7, build afdd53b
2.下载docker-compose软件:
[root@localhost ~]# wget https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64
3.移动下载软件到/usr/local/bin/docker-compose覆盖旧版本:
[root@localhost ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-composemv: overwrite ‘/usr/local/bin/docker-compose’? y
4.赋予执行权限:
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
5.测试安装是否成功:
[root@localhost ~]# docker-compose --versionDocker Compose version v2.16.0
6.卸载docker compose:
[root@localhost ~]# rm -f /usr/local/bin/docker-compose
四、标签以及镜像 ID
volumes:用于数据持久化和共享的数据卷定义,常用于数据库存储、docker-compose.yml配置案例:
version: "3.9" services: web: build: . ports: - "8000:5000" volumes: - .:/code - logvolume01:/var/log links: - redis redis: image: redisvolumes: logvolume01: {}
文件配置解释说明:
- version:指定 Compose 文件格式yaml的规则版本,版本决定可用的配置选项
- service:定义了应用中的服务,每个服务可以使用不同的镜像、日志等数据的持久化
五、
两者面向不同用户,Docker 面向任何需要容器化应用的用户,Docker Compose 则面向需要同时管理多个容器的开发者和运维团队。网络及卷:[root@localhost counter-app-master]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcounter-app-master-web-fe latest da547efce15a 52 minutes ago 55.1MBredis alpine 3900abf41552 2 years ago 32.4MB[root@localhost counter-app-master]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES775de272840c 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-160badb2d9db4 redis:alpine "docker-entrypoint.s…" 52 minutes ago Up 2 minutes 6379/tcp counter-app-master-redis-1[root@localhost counter-app-master]# docker network lsNETWORK ID NAME DRIVER SCOPE2d11a73f849e bridge bridge local7bc0ef96bf07 counter-app-master_counter-net bridge local303bac79a650 host host localf08b7d46c61e none null local[root@localhost counter-app-master]# docker volume lsDRIVER VOLUME NAMElocal counter-app-master_counter-vol
测试访问结果:每刷新一次页面,计数将叠加

六、
功能:
- 容器化:将应用和其运行环境封装在一个容器中
- 镜像管理:创建、
一、Docker Compose--文件基本结构
Docker Compose 文件是 Docker Compose 工具的核心,用于定义和配置多容器 Docker 应用。
二、测试和生产环境中的复杂应用。基本使用--案例
目录结构:
[root@localhost ~]# tree counter-app-master
├── app.py #应用程序代码(Python Flask应用)
├── docker-compose.yml #compose文件,定义Docker部署应用
├── Dockerfile #定义构建web-fe服务所使用的镜像
└── requirements.txt #应用所依赖的Python包
1.定义应用程序依赖项:
[root@localhost ~]# mkdir counter-app-master #创建测试目录[root@localhost ~]# cd counter-app-master[root@localhost counter-app-master]# vim app.py #创建名为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 "What's up Docker Deep Divers! You've visited me {} times.\n".format(count)if __name__ == "__main__": app.run(host="0.0.0.0", debug=True)
上述此示例中,redis 是应用程序网络上的 redis 容器的主机名,所以使用默认端口6379。测试以及 CI/CD 工作流程。
Compose的使用三步: