为“离线”环境准备 docker 安装

为“离线”环境准备 docker 安装

我们将使用 docker 在没有出站互联网访问的环境中部署我们的代码库。但是,我们似乎无法预先构建整个内容,因此我们不必从任何存储库中提取图像。服务器已准备好 docker 和 docker-compose。

我们有一个docker-compose.yml文件,它比这个长很多,但这是我们无法处理的部分:

 node:
    container_name: my-node
    build: ./docker/node
    volumes_from:
      - volumes_source
    ports:
      - "5000:5000"
    links:
      - mysql
      - redis

在 /docker/node 中我们有一个 Dockerfile:

FROM node:latest

EXPOSE 5000

RUN npm install pm2 -g

CMD ["pm2-docker", "/var/www/laravel/socket/socket.js"]

我想预先构建它,这样它就不必运行位npm install pm2 -g- 因为它不会工作。我尝试过的是:

  1. 将其作为容器在连接互联网的主机上启动
  2. docker commit 8671bf3bd1b5 my-node:latest(8671bf3bd1b5 是容器 ID)
  3. docker save -o my-node.docker my-node:latest
  4. docker export 8671bf3bd1b5 > my-node_latest.tar
  5. 将文件传输至离线环境
  6. docker load -i my-node.docker
  7. cat my-node_latest.tar | docker import - my-node:latest
  8. 在离线环境中从 docker-compose.yml 中删除build: ./docker/node并替换为image: my-node:latest

它仍然尝试拉取 node:latest 并运行npm install pm2 -g。我们做错了什么?

答案1

是的,您已导出名为 my-node:latest 的镜像/容器。但在 Dockerfile 中,它是基于您忘记导出的 node:latest 构建的。...

相关内容