docker import容器后,启动镜像

建议还是用Dockerfile更好一点,但是真的有import的容器需要启动怎么搞呢?折腾了一会,成功运行。
docker.png

References:

首先,export和import都比较简单,照着doc,或者找些文档都能很容易的执行成功,但是启动容器时就会报错。提示:“Error response from daemon: No command specified”。
这是因为docker export不会将容器所有的东西都保存,只会保存文件系统。所以当import一个容器的时候,需要额外添加一些信息来重建context。
例如,原本的容器正常运行,因为创建image的Dockerfile中有命令CMD["/usr/bin/supervisord"],那么就需要像这样import:

docker import \
--change 'CMD ["/usr/bin/supervisord"]' \
path/to/dump.tar imagename:tagname

如果import的时候没有通过--change将Dockerfile指令应用到image,那么就需要在启动时将命令带上。
下面以Nginx为例,看下如何启动import命令导入的容器。
首先查看已有的image:

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              395b700bb640        3 weeks ago         88.3 MB
docker.io/java      latest              d23bdf5b1b1b        2 years ago         643 MB

已经pull了官方的Java和Nginx,现在我们导入一个nginx,由于--change的方式尝试了N次都失败了,所以这里贴以下带命令的方式:
先导入

[root@localhost ~]# docker import nginx_my.tar nginx:import

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               import              4f4fa7429078        22 seconds ago      86.8 MB
docker.io/nginx     latest              395b700bb640        3 weeks ago         88.3 MB
docker.io/java      latest              d23bdf5b1b1b        2 years ago         643 MB

然后运行:

[root@localhost ~]# docker run --name nginx_import -p 333:80 -d nginx:import nginx -g 'daemon off;'
086c5af7cb23f97e481d3224c5b7bf263b13db277221221bdc3258bacd851169
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
086c5af7cb23        nginx:import        "nginx -g 'daemon ..."   7 seconds ago       Up 4 seconds        0.0.0.0:333->80/tcp   nginx_import
23d72cc48ab4        nginx               "nginx -g 'daemon ..."   18 hours ago        Up 18 hours         0.0.0.0:233->80/tcp   focused_shirley

这样就启动成功了,查资料的时候看到有人说即使加了命令也会启动失败,猜测是少了什么参数吧。
建议这种方式还是不用的为好,有点坑。

标签: none

添加新评论

ali-01.gifali-58.gifali-09.gifali-23.gifali-04.gifali-46.gifali-57.gifali-22.gifali-38.gifali-13.gifali-10.gifali-34.gifali-06.gifali-37.gifali-42.gifali-35.gifali-12.gifali-30.gifali-16.gifali-54.gifali-55.gifali-59.gif

加载中……