容器數據掛載到物理機上的三種方式
1 ) 實名(指定路徑)掛載數據卷
docker run -v 物理機目錄:容器內目錄 鏡像id
- 示例
docker run -it -d --name mynginx_p_v -p 82:80 -v /root/www:/usr/share/nginx/html nginx
- 此時訪問 會報 403 forbidden
- 因為 物理機上的 root/www 中是沒有東西的,所以403
- touch root/www/index.html 并寫一些東西進去
- 再次訪問就行了
- 查看容器內信息:
docker inspect 容器Id | grep www
- 這種用法的最多的,清晰方便的管理
2 )匿名(自動分配)掛載數據卷
docker run -v 容器內目錄 鏡像ID
docker volume ls
可以看到 數據卷的列表docker inspect 容器ID | grep volume
可查看到當前數據卷在哪個目錄中- 這種在具體項目中,也可以使用,也就是對存儲位置要求不嚴格
3 )具名掛載數據卷
docker run -v 卷名稱:容器內目錄 鏡像ID
- 這個和匿名掛載非常相似
- 這個卷名稱是指定的
docker volume ls
- 可看到具名掛載的數據卷信息
docker inspect 容器ID | grep volume
- 可看到這個具名數據卷的具體信息
- 這種基于卷名稱自主設定的數據卷掛載比匿名掛載的好處是名稱上的簡潔和好認
- 匿名掛載產生的是一長串的隨機hash字符串
以上,三種方式掛載后,在物理機或容器內操作,都會互相同步數據
運行容器時傳遞的環境變量
docker run -e 變量名=變量值 鏡像ID/鏡像NAME
- 舉例
docker run -it centos printenv
這時候打印的都是系統變量docker run -it -e TEST_ENV=sssss centos printenv
這樣就多打印出了新加的這個變量docker run -it -e TEST_ENV=sssss -e NNN_ENV=dddd centos printenv
這樣可以傳遞多個環境變量
- 習慣上,傳遞的變量名都是大寫