使用Docker时,我们从基本映像开始.我们启动它,创建更改并将这些更改保存在层中,形成另一个图像.
所以我最终得到了一个用于我的PostgreSQL实例的图像和一个用于我的Web应用程序的图像,这些图像继续保持不变.
所以问题是:什么是容器?
在实践中我开始一个容器:
docker run a8asd8f9asdf0
Run Code Online (Sandbox Code Playgroud)
如果是这样的话,那会是什么:
docker start
Run Code Online (Sandbox Code Playgroud)
做?
在手册中说
启动一个或多个已停止的容器
我最近进入了 CI/CD,对我来说一个很好的起点是 GitLab,因为它们为此提供了一个简单的界面,我开始了解管道和阶段是什么,但我遇到了一些关于 GitLab CI 的矛盾想法在 Docker 上运行。
我的应用程序在 Docker Compose 上运行。它包含(等等),可以轻松构建和运行容器。Docker Compose 中的每个服务都创建了一个 Docker 容器,除了 php-fpm 一个,它能够完成称为“水平扩展”的事情,因此我可以稍后对其进行扩展。
我将使用 Docker Compose 进行生产,我目前正在开发中使用它,我也想在 CI/CD 管道中使用它。
然而 .gitlab-ci.yml 只支持一个镜像,所以我必须构建它并将它推送到他们的 GitLab Registry 或 Docker Hub,以便稍后在 CI/CD 过程中提取它。
如何将 Docker Compose 的服务构建为单个映像,以便将其推送到注册表/Docker,以便将其拉入 CI/CD?
我的项目包含一个 docker 文件夹和一个 docker-compose.yml。在 docker 文件夹中,每个服务都有自己独立的目录(php-fpm、nginx、mysql 等),每个服务(自己准备)都包含一个包含构建细节的 Dockerfile,尤其是 php-fpm 一个(deps 和 libs 很强)用这个)
docker-compose.yml 中的每个服务在它们自己的文件夹中都有一个构建上下文。
如果我不清楚,我可以提供其他信息。
有没有办法我们可以传递一个变量让我们在这个例子中说我想使用 ENV animals="turtle, monkey, goose"
但是我希望能够在运行容器时传递不同的动物,例如 docker run -t image animals="mouse,rat,kangaroo"
在运行 docker run 命令时如何传递参数?
目标是在使用 docker run 命令时获取该变量并将它们插入到 entrypoint.sh 文件中
现在我在我的 Dockerfile 中对其进行了硬编码。但是我希望在运行 docker run 命令时能够做到这一点,所以我不必总是更改 Dockerfile。
FROM anapsix/alpine-java:8u121b13_jdk
ENV FILE_NAME="file_to_run.zip"
ENV animals="turtle, monkey, goose"
ADD ${FILE_NAME} .
RUN echo "${FILENAME} ${animals}" > ./entrypoint.sh
CMD [ "/bin/ash", "./entrypoint.sh" ]
Run Code Online (Sandbox Code Playgroud) 我只有一天到码头,所以这对我来说相对来说很新.
我读了docker.io,但无法得到几个基本问题的答案.这是它的内容:
这是一个10000英尺鸟瞰的码头车吗?
2.容器究竟是什么意思?它是图像的同义词吗?
3.我记得在某处读它可以让你部署应用程序.它是否正确 ?换句话说,它会像IIS一样部署.net应用程序吗?
请回答我上面的问题,这样我就能更好地理解它并将其推进.
我有一个在本地开发中运行的项目,使用 docker-compose
作为 gitlab 和部署的组织要求的一部分,应用程序需要构建到单个 Docker 映像中。
我知道这可以通过向Dockerfile项目添加 a来完成。
但是,我想知道是否有任何关于如何将通过docker-compose应用程序代码库运行多个服务的项目包含到Dockerfile用于部署的单个映像中的建议或建议,谢谢。
编辑:据我所知,该方法是使用 Dockerfile 从应用程序代码库构建一个新映像,然后将其包含在docker-compose.yml部署环境的文件中?
编辑 2:对混淆表示歉意。我是 Docker 的新手,有一点学习曲线!在这种情况下,似乎可以在 gitlab 注册表中构建应用程序映像,然后将该映像包含在 docker-compose 中进行部署,可以尝试一下。