docker import 导入镜像后,运行报docker: Error response from daemon: No command specified.错误

原创
09/04 21:14
阅读数 518

docker export/import命令的坑(建议用save/load),google了半天没有解决,问题如下:

导出容器:
 docker export 7083e75fd861 >php74-fpm.tar

导入容器:
cat php74-fpm.tar | docker import - php74-fpm:v1


正常,启动新的容器
docker run --name php7-fpm -p 9000:9000 \
--link mysql-5.7:mysql \
-v ~/Documents/WORK/docker/nginx/www:/var/www/html \
-v ~/Documents/WORK/docker/nginx/conf/php-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro \
-v ~/Documents/WORK/docker/nginx/conf/php/php.ini:/usr/local/etc/php/php.ini:ro \
-dit  php74-fpm:v1

执行上面操作后,报如下错误
docker: Error response from daemon: No command specified.

See 'docker run --help'.

问题解析及解决办法:

首先,export和import都比较简单,照着doc,或者找些文档都能很容易的执行成功,但是启动容器时就会报错。提示:“Error response from daemon: No command specified”。
这是因为docker export不会将容器所有的东西都保存,只会保存文件系统。所以当import一个容器的时候,需要额外添加一些信息来重建context。

例如,原本的容器正常运行,因为创建image的Dockerfile中有命令CMD["php-fpm"],那么就需要像这样import(以php-fpm和nginx为例):

php-fpm:

导入
docker import \
--change 'CMD ["php-fpm"]' \
./php7_fpm.tar php7-fpm:v1

启动
docker run --name php7-fpm-v1 -p 9000:9000 \
--link mysql-5.7:mysql \
-v ~/下载/nginx/www:/var/www/html \
-v ~/下载/nginx/conf/php-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro \
-v ~/下载/nginx/conf/php-conf/php.ini:/usr/local/etc/php/php.ini:ro \
-d php7-fpm:v1



nginx:

导入
docker import \
--change 'CMD ["nginx","-g","daemon off;"]' \
./nginx_stable.tar  php-nginx:v1

启动
docker run --name php-nginx-v1 -p 80:80 \
    -v ~/下载/nginx/www:/var/www/html:ro \
    -v ~/下载/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
    --link php7-fpm-v1:php \
    -d php-nginx:v1 

下图为查看容器运行时命令

 

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

cat php74-fpm.tar | docker import - php7.4-fpm:v1

执行后输出:
sha256:d38d6ca1bfe07e3a6c3d71ae77aa32bc8e82e582c7296812de92a0ea76b962d3


启动容器
docker run --name php7-fpm -p 9000:9000 \
--link mysql-5.7:mysql \
-v ~/Documents/WORK/docker/nginx/www:/var/www/html \
-v ~/Documents/WORK/docker/nginx/conf/php-fpm/www.conf:/usr/local/etc/php-fpm.d/www.conf:ro \
-v ~/Documents/WORK/docker/nginx/conf/php/php.ini:/usr/local/etc/php/php.ini:ro \
-d php:7.4-fpm -g d38d6ca1bfe07e3a6c3d71ae77aa32bc8e82e582c7296812de92a0ea76b962d3

注:就是加-g 参数,把镜像导入时生成的id,带上

 

References:

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部