# Transfer/Move Docker ##### Sample: osslab-dekiwiki ```shell docker run -d -p 8880:80 \ -v /etc/localtime:/etc/localtime:ro \ -v $PWD/vol/data:/data \ -v $PWD/vol/var-lib-mysql:/var/lib/mysql \ -v $PWD/vol/var-log-httpd:/var/log/httpd \ -v $PWD/vol/var-log-dekiwiki:/var/log/dekiwiki \ -v $PWD/vol/var-www-dekiwiki-attachments:/var/www/dekiwiki/attachments \ -v $PWD/vol/var-www-dekiwiki-bin-cache:/var/www/dekiwiki/bin/cache \ --name $NAME \ osslab-dekiwiki \ /bin/bash ``` ##### Using Save Command Save Image ```shell # osslab-dekiwiki is image name docker save osslab-dekiwiki > osslab-dekiwiki.tar ls -l ``` ``` -rw-r--r-- 1 root root 2519701504 Feb 27 19:19 osslab-dekiwiki.tar ``` Load Image ``` docker load < osslab-dekiwiki.tar ``` ##### Using Export Command Run the instance in detach mode ```shell docker run -it --detach --name osslab-mig osslab-dekiwiki docker ps ``` ``` CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 673f45c27a8b osslab-dekiwiki "/bin/sh -c /startup…" 5 seconds ago Up 4 seconds 80/tcp osslab-mig ``` Export Docker Container ```shell docker export 673f45c27a8b > osslab-mig.tar ls -l ``` ``` -rw-r--r-- 1 root root 1143085568 Feb 27 14:21 osslab-mig.tar ``` Import Docker Container to the target machine ```shell tar -c osslab-mig.tar | docker import - osslab-dekiwiki ``` ##### Move Container ```bash ## Stop the container docker stop ## Save container image docker commit mycontainerimage docker save mycontainerimage | gzip > mycontainerimage.tar.gz ## Load container image to destination host gunzip -c mycontainerimage.tar.gz | docker load ## Transfer image without creating a file docker save mycontainerimage | gzip | ssh root@203.0.113.1 'gunzip | docker load' ``` ##### Backup & Restore Volume Backup volume ```shell # Backup cd /root/osslab docker stop osslab-dekiwiki docker rm osslab-dekiwiki tar czf osslab-val.tar.gz vol # Restore to target machine cd /root/osslab tar xpzf osslab-val.tar.gz ``` ##### FAQ Q: Import 完成,但無法啟動 container。 > Error response from daemon: OCI runtime create failed: container\_linux.go:380: starting container process caused: exec: "/bin/sh": stat /bin/sh: no such file or directory: unknown > Error: failed to start containers: osslab Solution: 不要使用 Export-Import 改成 Save-Load 方式移轉。 Q: 執行 docker load 發生錯誤。 > open /var/lib/docker/tmp/docker-import-863867335/bin/json: no such file or directory Solution: 只有 Save 的 image 檔才能執行 `docker load`;Export 的 image 檔只能用 `docker import`。