2015-08-15 98 views
0

我有一個官方的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似乎存在..

謝謝

回答

5

究竟你認爲這是在幹什麼?

sudo tar -c ~/Desktop/mysql.tar | docker import 
  • 你不需要sudo,因爲你剛剛創建這個文件在你的home目錄。
  • 這是已經一個tar文件。通過使用tar -c您正在創建一個新的 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,而不是這種怪異的出口/進口管道。

FROM mysql 

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