Docker cp 問題

  1. docker run 背景執行一個名為 myweb 的 httpd 容器。
    [root@kvm7 ~]# docker run -dit --name myweb -P centos/httpd
    3114e98d1dd8e1546f6bb5325229a23d8c4e0e3f8126836c9b275727bd5cd013
    [root@kvm7 ~]# docker ps
    CONTAINER ID  IMAGE         COMMAND          CREATED       STATUS        PORTS                  NAMES
    3114e98d1dd8  centos/httpd  "/run-httpd.sh"  7 seconds ago Up 4 seconds  0.0.0.0:32779->80/tcp  myweb
    
  2. docker exec 進入容器 myweb 並執行 bash,取得與系統互動的界面。查看網頁根目錄 /var/www/html 下沒有任何檔案,且 /www 目錄不存在。
    [root@kvm7 ~]# docker exec -it myweb bash
    [root@3114e98d1dd8 /]# ll www
    ls: cannot access www: No such file or directory
    [root@3114e98d1dd8 /]# ll /var/www/html/    
    total 0
    [root@3114e98d1dd8 /]# exit
    exit
    
  3. 在 host 建立 index.html 並使用 docker cp 複製到容器 myweb 的 /var/www/html 目錄。
    [root@kvm7 ~]# echo 'myweb test' > index.html
    [root@kvm7 ~]# docker cp index.html myweb:/var/www/html/
    
  4. curl 連線容器 myweb 的 index.html,回應沒有這個檔案?
    [root@kvm7 ~]# curl -s http://127.0.0.1:32779/index.html
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>404 Not Found</title>
    </head><body>
    <h1>Not Found</h1>
    <p>The requested URL /index.html was not found on this server.</p>
    </body></html>
    
  5. docker exec 再進入容器 myweb 並執行 bash,查看網頁根目錄 /var/www/html 還是下沒有任何檔案,且出現 /www/html/index.html,將此檔案移到 /var/www/html。
    [root@kvm7 ~]# docker exec -it myweb bash
    [root@3114e98d1dd8 /]# find / -name index.html 2>/dev/null
    /usr/share/httpd/noindex/index.html
    /www/html/index.html
    [root@3114e98d1dd8 /]# mv www/html/index.html /var/www/html/
    [root@3114e98d1dd8 /]# exit
    exit
    
  6. curl 再連線容器 myweb 的 index.html,成功存取 index.html。
    [root@kvm7 ~]# curl -s http://127.0.0.1:32779/index.html
    myweb test
    
  7. 經測試只有複製到容器 /var 目錄下的檔案,會被移到根目錄下,其他目錄不會有此問題,待解決?