Docker Compose的理解与多场景应用
前言
上一期我们简单介绍了Dockerfile及对应使用方法,本地项目打包成镜像并上传到docker仓库。那么本期继续对Docker进行深入,了解Docker Compose多容器编排的处理。
本文使用的为docker compose v2,版本为v2.28.1,v1已经停止维护了(docker compose的版本为2.x.x就是v2,v1的命令使用-
连接的,如v1:docker-compose up
v2:docker compose up
)。
Docker Compose简单认识
Docker Compose 用于定义和运行多容器 Docker 应用的工具,通过一个 docker-compose.yml
文件来配置应用服务,简化了多容器环境的管理。很多复杂的项目往往需要各种各样的中间件,在以前我们需要手动一个一个配置,而现在,我们只需要执行别人写好的docker-compose文件即可完成各种组件和环境的引入。
安装Docker Compose
mac&windows
mac与windows的Docker Compose
包含在Docker桌面端,直接安装桌面端Docker即可。
linux
执行下面命令将Docker安装在/usr/local/bin
目录下,其中版本号是可以自由变更的,这里我用的最新的版本,当然你可以去对应的GitHub地址更换为自己想要的版本 DockerCompose发布地址
命令解析:
curl
:调用命令行工具curl
-L
:如果请求的资源被重定向到另一个URL,curl
将自动跟随重定向
-o /usr/local/bin/docker-compose
:将下载的文件保存到/usr/local/bin/
目录,并命名为docker-compose
1 | sudo curl -L "https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-amd64" -o /usr/local/bin/docker-compose |
添加对应的执行权限
1 | sudo chmod +x /usr/local/bin/docker-compose |
验证安装版本
1 | docker compose version |
Docker Compose常用命令
docker compose up:
启动并运行 Docker Compose 定义的所有服务
docker compose down:
停止并删除运行中的容器、网络、镜像和卷
docker compose start:
启动已停止的服务容器
docker compose stop:
停止运行中的服务容器
docker compose restart:
重启服务容器
docker compose ps:
列出与当前项目关联的所有容器
docker compose logs:
查看服务的输出日志
docker compose -p mycompose logs nacos:在名为mycompose的容器组中,查看nacos服务的日志。
docker compose config:
验证和查看 Compose 文件的配置
docker compose exec:
在运行的容器中执行命令
docker compose -p mycompose exec db bash:在名为mycompose的容器组中,进入db服务容器内。
docker compose version:
查看当前版本
Docker Compose示例(本地项目与已有网络)
下面是一个简单的配置示例,注意,Docker compose的yml文件名必须为docker-compose.yml
!这个因为用的是我本地的项目,所以参考一下即可,第二个示例可以实际运行。
下面对其中部分进行更细致的关系解释:
- 配置文件中的服务名是可以自定义的,如web、db、redis等
- 如果想将我们自己的项目加入到docker compose,有2种方法,第一种是直接使用build命令,其中context是上下文路径,会在构建web服务时,将该路径作为构建时的工作目录,同时dockerfile需要设置为对应的dockerfile位置及名字(这里我没写Dockerfile的路径原因是默认会在上下文中找)。第二种是提前将自己的项目上传到Docker仓库,使用镜像来创建,在第二个示例会展示这种方法。
- depends_on为依赖其他服务,例如web依赖于db和redis,那么在db和redis启动后,web才会启动
- 服务中volumes所挂载的卷,如果为名字的话,并且在volumes有定义(倒数第八行),那么有Docker自动创建并管理。通过下面2个命令来查看具体信息:
docker volume ls, docker volume inspect '${name}'
- 网络可以在yml中定义一个新的直接使用,也可以使用已有的网络。第一个例子是使用已有网络,第二个示例则是创建一个新的网络
1 | version: '3.8' # 指定使用的Docker Compose版本 |
Docker Compose示例(自有镜像与新建网络)
这个示例我使用我自己的仓库,同时,网络使用的是内部网络。
使用docker compose -p mydocker up -d
来启动该容器组并命名为mydocker
,这里命名不可以包含大写!
1 | version: '3.8' |
启动成功后,可以自己尝试连接MySQL与Redis,端口号分别为3310和6333。web服务则可以通过127.0.0.1:1234/ai/A
来访问验证。
结束语
以上就是 Docker Compose
的认识与部署,现在越来越多的项目使用Docker Compose部署,如果掌握了这种方法,对于部署的我们来说也是越来越简单。希望通过本文,可以帮助大家更好的理解Docker Compose~