我画了一个图来展示Docker和docker-compose的运行方式
我在考虑尝试基于Docker容器进行CI/CD实践,但是意识到如果没有充分理解Docker镜像和容器的概念,将无法创建CI/CD流水线,这让我感到有些困惑。
在此,我总结了关于Docker和docker-compose的操作情况。
CI/CDにコンテナを使うときの課題
我以为我理解了,但当我尝试构建CI/CD流程时,遇到了以下问题。
这意味着包含持久性的文件吗?
docker-compose.yml文件中的环境部分会怎样处理?
Dockerfile和镜像容器之间的关系是什么?
我想在商用环境容器和测试环境容器中修改连接数据库,该怎么做呢?
如果真的要在容器中构建CI/CD,不熟悉Docker容器规范是无法进行运维的。?
(Translation: In order to build CI/CD with containerization, it is essential to be familiar with Docker container specifications; otherwise, it would be impossible to operate.)
首先需要整理容器和镜像之间的关系。
因此,我决定整理一下Docker容器和镜像之间的关系。
尽管有很多人写了关于容器和镜像的定义,这对我来说非常有帮助,但关于Docker命令和docker-compose命令中的build、up、run、create等操作的具体过程,现在的信息还有点不足。
在这种情况下,我参考了以下文章,并试图将其图解化。
※这个是我个人的解释。
Docker的运行机制

-
- 使用build命令根据Dockerfile构建镜像时,可以将本地文件包含(绑定)到镜像中。
-
- 使用create命令从镜像创建容器。
- 使用start命令启动容器时,可以挂载本地文件。
Docker Compose的运行行为

-
- 进行 build 操作时,根据docker-compose.yml文件组装镜像,可以使用Dockerfile并进行本地文件绑定。
- 进行 start 操作时,首先检查是否存在停止的容器,如果不存在则创建容器从镜像中。然后执行容器。可以在此过程中进行本地文件挂载。
总结
自己开发的程序应该被绑定或挂载以进行持久化。然而,仅仅挂载程序并不能将开发程序加载到镜像中。如果想要构建测试环境或商业环境,需要使用自动生成的镜像,而不是挂载。因此必须进行绑定。