我有一个使用docker compose的系统。
示例docker-compose文件:
version: '3'
services:
base:
container_name: base
image: <hub host>/base
build:
context: ..
dockerfile: BaseDockerfile
environment:
- PYTHONPATH=/usr/local/lib/python3.6/site-packages
volumes:
- data:/volumes/data/
postgres:
container_name: postgres
image: "postgres:latest"
ports:
- 5432:5432
现在,我以两种不同的方式使用此docker-compose文件-在线和离线。
在联机模式下,我先运行docker-compose build
,然后运行docker-compose push
,然后SSH到要部署它的服务器并拉出映像并运行(docker-compose pull && docker-compose up
)。
在脱机方法中,我运行docker-compose build
(与第一个相同),然后将docker save
的每个图像保存到.tar文件,然后使用docker load -i <file name>
方法将其加载,然后运行{{ 1}}
由于某种原因,我在离线方法中收到错误(与numpy软件包不匹配有关),但在服务器中却没有。
我认为方法之间应该没有什么区别,因为它们都构建相同的映像并使用相同的参数(在docker-compose文件中定义)运行容器。
我在所有相关的机器上都尝试了docker docker-compose up
,以确保它不是缓存问题。
关于这两种方法之间可能有什么区别的任何想法?
编辑: 保存泊坞窗:
system prune && docker volume prune
图像加载:
#!/usr/bin/env bash
for image in $docker_hub/base redis postgres
do
echo "Saving $image"
docker save $image | gzip > $directory/${image//$docker_hub}.tar.gz
done
与二进制文件有关的错误:
print "Loading images"
for file in ./*.tar.gz
do
echo "Loading file: "$file
docker load -i $file
done