完整的docker打包流程
完整的docker打包流程
把外网服务器上的docker搬到内网使用时,报了两个错误,外网容器到tar包都没问题,在内网使用tar包的时候报了两个错误
- cannot connect to the Docker daemon at is the docker daemon running
- starting container process caused: "exec: "/bin/sh": stat /bin/sh: no such file or directory
发现是tar包到镜像的问题,我用的命令是docker load --input xxx.tar
正确的是docker load < xxx.tar
现总结整个docker打包搬运流程如下:
1. 将容器变为镜像
docker commit 261314c94305 imagexxx
可用参数
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
imagexxx 是新创建的镜像的名字
2. 将镜像打包成tar包
docker save -o xxx.tar imagexxx # 当前路径下会生成一个xxx.tar
例如:
docker save -o electric_know_1.31_0.tar electric_know_1.31_0:latest
3. 将tar包再次压缩为gz包
tar -zcvf xxx.tar.gz xxx.tar # 当前路径生成一个xxx.tar.gz压缩包
4. 将tar.gz 挪到内网服务器
5. 将tar.gz 解压缩,会生成一个tar包
tar -zxvf xxx.tar.gz
6. 将tar包生成镜像
docker load < xxx.tar # 生成的镜像跟之前打包的镜像名称一样
7. 将镜像生成容器
docker run -it --name 容器名称 镜像名称 /bin.bash
# 给与开通sshd的sudo权限的方式生成容器
sudo docker run -d --name=wang --privileged=true --networ=khost -p 20000:22 9a5d1fa93203 /usr/sbin/init
sudo docker exec -it wang /bin/bash