Docker – 无法使用入口点从导入的图像运行容器

我有一个官方的MySQL容器。 我做

docker export <cont_name> > ~/Desktop/mysql.tar 

接下来我做

 sudo tar -c ~/Desktop/mysql.tar | docker import --change "ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" --change "ENV MYSQL_MAJOR 5.7" --change "ENV MYSQL_VERSION 5.7.8-rc" --change "ENTRYPOINT [\"/entrypoint.sh\"]" --change "EXPOSE 3306" --change "VOLUME /var/lib/mysql" --change "CMD [\"mysqld\"]" - mysql:kyriakos 

最后

 docker run --env "MYSQL_ROOT_PASSWORD=root" --name mysql_kyr mysql:kyriakos 

我得到了

 exec: "/entrypoint.sh": stat /entrypoint.sh: no such file or directory Error response from daemon: Cannot start container a15613493ee94a159ff0821974742350ae5df26b0f659932dc7cb3264295e944: [8] System error: exec: "/entrypoint.sh": stat /entrypoint.sh: no such file or directory 

我是否在导入时出错? 在.tar文件中/entrypoint.sh似乎存在..

谢谢

你到底在想什么呢?

 sudo tar -c ~/Desktop/mysql.tar | docker import 
  • 你不需要sudo ,因为你刚刚在你的主目录下创build了这个文件。
  • 已经是一个tar文件。 通过使用tar -c你正在创build一个新的 tar档案,其内容是mysql.tar 。 你将这个传递给docker import
  • 这给你一个包含单个文件mysql.tar ,所以当然你会得到有关/entrypoint.sh不存在的错误。

我想你真正想要的是:

 docker import --change "ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \ --change "ENV MYSQL_MAJOR 5.7" \ --change "ENV MYSQL_VERSION 5.7.8-rc" \ --change "ENTRYPOINT [\"/entrypoint.sh\"]" \ --change "EXPOSE 3306" \ --change "VOLUME /var/lib/mysql" \ --change "CMD [\"mysqld\"]" - mysql:kyriakos < mysql.tar 

而你真正想要的是使用Dockerfile,而不是这个奇怪的导出/导入pipe道。

 FROM mysql ENV MYSQL_MAJOR 5.7 ENV MYSQL_VERSION 5.7.8 ENTRYPOINT ["/entrypoint.sh"] EXPOSE 3306 VOLUME /var/lib/mysql CMD ["mysqld"]