我画了一个图来展示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的运行机制

スクリーンショット 2022-11-11 11.50.56.png
    1. 使用build命令根据Dockerfile构建镜像时,可以将本地文件包含(绑定)到镜像中。

 

    1. 使用create命令从镜像创建容器。

 

    使用start命令启动容器时,可以挂载本地文件。

Docker Compose的运行行为

スクリーンショット 2022-11-11 11.51.11.png
    1. 进行 build 操作时,根据docker-compose.yml文件组装镜像,可以使用Dockerfile并进行本地文件绑定。

 

    进行 start 操作时,首先检查是否存在停止的容器,如果不存在则创建容器从镜像中。然后执行容器。可以在此过程中进行本地文件挂载。

总结

自己开发的程序应该被绑定或挂载以进行持久化。然而,仅仅挂载程序并不能将开发程序加载到镜像中。如果想要构建测试环境或商业环境,需要使用自动生成的镜像,而不是挂载。因此必须进行绑定。

广告
将在 10 秒后关闭
bannerAds