Docker cp 問題解決

  1. 移除 docker。
    [root@kvm7 ~]# yum remove docker-*
    
  2. *設定 docker-ce 套件庫 repository,docker-ce 套件已加入 dywang repository,此步驟可略過。
    [root@kvm7 ~]# vim /etc/yum.repos.d/dywang.repo 
    [root@kvm7 ~]# grep docker -A4 /etc/yum.repos.d/dywang.repo 
    [docker]
    name=Docker
    baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/
    gpgcheck=0
    
  3. 安裝 docker-ce 套件。
    [root@kvm7 ~]# yum install docker-ce
    
  4. 重新啟動 docker。
    [root@kvm7 ~]# systemctl restart docker
    
  5. docker 版本 19.03.5。
    [root@kvm7 ~]# docker version
    Client: Docker Engine - Community
     Version:           19.03.5
     API version:       1.40
     Go version:        go1.12.12
     Git commit:        633a0ea
     Built:             Wed Nov 13 07:25:41 2019
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.5
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.12.12
      Git commit:       633a0ea
      Built:            Wed Nov 13 07:24:18 2019
      OS/Arch:          linux/amd64
      Experimental:     false
    
  6. docker myweb 出現錯誤。
    [root@kvm7 ~]# docker start myweb
    Error response from daemon: Unknown runtime specified docker-runc
    Error: failed to start containers: myweb
    
  7. 將所有容器的 hostconfig.json 中的 docker-runc 改成 runc。
    [root@kvm7 ~]# sed -i 's/docker-runc/runc/g' /var/lib/docker/containers/*/hostconfig.json
    
  8. 再重新啟動 docker。
    [root@kvm7 ~]# systemctl restart docker
    
  9. 成功啟動容器 myweb。
    [root@kvm7 ~]# docker start myweb
    myweb
    
  10. 成功啟動容器 myweb。
    [root@kvm7 ~]# docker ps
    CONTAINER ID  IMAGE         COMMAND          CREATED         STATUS        PORTS                  NAMES
    3114e98d1dd8  centos/httpd  "/run-httpd.sh"  56 minutes ago  Up 5 minutes  0.0.0.0:32768->80/tcp  myweb
    
  11. 在 host 建立 index.html 並使用 docker cp 複製到容器 myweb 的 /var/www/html 目錄。
    [root@kvm7 ~]# echo 'myweb test1' > index.html
    [root@kvm7 ~]# docker cp index.html myweb:/var/www/html/
    
  12. curl 再連線容器 myweb 的 index.html,成功存取 index.html。
    [root@kvm7 ~]# curl -s http://127.0.0.1:32768/index.html
    myweb test1