背景:

在测试机器上,通过镜像创建了可运行的容器,在容器改了默认配置参数,需要把容器制作成生产环境下的镜像。

问题现象:

通过export 把容器生成tar包,然后load、import方式在另外一台机器run 后,

提示:

docker: Error response from daemon: No command specified.

在run 的最后加上 /bin/bash  /bin/sh   /docker-entrypoint.sh

提示:

docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/directory: unknown.

,发现容器无法运行,端口不通

问题分析:

export容器后,镜像的命令入口丢失,通过    docker inspect  镜像名:版本  命令查看,是否有 Entrypoint 属性配置。没有的话容器是无法正常运行的,需要在运行时特殊处理,比较麻烦

参考:

https://www.doubao.com/thread/wc464fd4fe136b6ce

解决方法:

1、先把容器 commit 成镜像  

docker commit mycontainer myimage:latest

2、保存镜像到本地

docker save -o myimage.tar myimage:latest

3、在生成环境导入镜像

docker load -i myimage.tar

4、再通过run即可正常运行

docker run ....

更多推荐