docker和docker-in-docker在哪条路径中运行其容器?

时间:2018-06-05 13:16:57

标签: docker gitlab gitlab-ci gitlab-ci-runner docker-in-docker

我有一个dockerized nginx服务器,我可以在本地计算机上构建和运行,没有任何问题。所以现在我想在gitlab运行器的帮助下部署它。

这是我简单的dockerfile:

FROM nginx

COPY web /usr/share/nginx/html

EXPOSE 80

因此,如果我在本地计算机上构建并运行它,它就可以工作。但是我在这一点上有第一个问题:docker在哪里运行nginx服务器?因为如果我看/ usr / share那里什么都没有。

现在,如果我将项目推送到gitlab,请注册一个运行器并让它执行以下gitlab-ci文件:

image: docker:stable

variables:
  DOCKER_DRIVER: overlay2

services:
- docker:dind

before_script:
  - docker info

build:
  script:
    - docker build -t bd24_nginx .
    - docker run -d -p 80:80 bd24_nginx

......工作完成得很好。 gitlab页面的控制台输出中没有错误。这是输出:

Successfully built 9903dc370422
Successfully tagged bd24_nginx:latest
$ docker run -d -p 80:80 bd24_nginx
b1e24c7cf9af8a43b3c2418d1ca1b90a58e445eb6b0b0ac9cde61f99be8cff7b
Job succeeded

但是,如果我现在访问我的服务器的IP地址,静态html测试页面不会显示。所以我怀疑这些路径有问题吗?还是我有什么遗失? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用泊坞窗意味着数据将复制到相应的容器中。当docker完成运行时,容器不会保留任何数据。

您可能尝试将某些主机目录安装到docker以获得持久存储。 请参阅this answer for instance

希望这有帮助!