docker提供三種方式將數據從宿主機掛載到容器中:html
volumes: Docker管理宿主機文件系統的一部分(/var/lib/docker/vollumes)保存數據的最佳方式。nginx
bind mounts: 將宿主機上的任意位置的文件或者目錄掛載到容器中。web
tmpfs:: 掛載存儲在主機系統的內存中,而不會寫入主機的文件系統。若是不但願將數據持久存儲在任何位置,能夠使用tmpfs,同時避免寫入容器可寫層以提升容器性能。docker
docker volume create nginx_vol #使用docker自帶的volime數據持久化 ls /var/lib/docker/volumes/nginx_vol/
能夠看到數據目錄爲_data安全
docker run -d --name nginx-ceshi -p 888:80 --mount -v nginx-ceshi:/usr/share/nginx/html nginx 或者 docker run -d --name nginx-ceshi -p 888:80 --mount src=nginx-ceshi,dst=/usr/share/nginx/html nginx #src:指定/var/lib/docker/volumes/下數據持久目錄名稱,dst:指定容器內數據持久目錄 docker inspect nginx-ceshi
建立完容器能夠完整看到剛纔持久化的數據目錄信息bash
驗證:網絡
cd /var/lib/docker/volumes/nginx-ceshi/_data echo "helllo world nginx" > index.html http://192.168.106.100:888/ #說明持久化成功
docker run -d -it --name=nginx-test --mount type=bind,src=/app/wwwroot,dst=/usr/share/nginx/html/ nginx docker run -d -it --name=nginx-test -v /root/html:/usr/share/nginx/html/ nginx
#兩種方式均可以, -v +絕對路徑就是bind模式 -v +文件名就是volumes模式 #Bind模式源文件必須存在,不存在沒法建立容器 #容器被掛載的目錄若是不爲空則被隱藏。
-net=bridge 默認的網絡模式,Docker啓動後建立一個docker0網橋,默認建立的容器也是添加到這個網絡中app
-net=host 容器不會得到一個獨立的netwrok namespace,而是與宿主機共用一個。這就覺得這容器不會有本身的網卡curl
-net=none 獲取獨立的network namespace,可是不爲容器進行任何網絡配置,須要咱們手動配置。ide
-net=container:Name/ID 與指定的容器使用同一個network namespace,具備一樣配置信息,兩個容器除了網絡,其餘仍是隔離的
用法:
docker run -itd --name zd -p 99:80 busybox docker run -itd --name nginx-zd --net container:zd nginx curl 192.168.106.100:99 #使用container將nginx網絡使用zd網絡代替
自定義網絡:與默認的bridge原理同樣,可是自定義網絡具有內部DNS發現,能夠經過容器名或者主機名容器之間網絡通訊。
容器網絡訪問原理以下圖所示
docker network create zf-100
docker容器能夠對資源作一些限制,防止容器消耗完宿主機的資源。對容器的安全作一些隔離
經常使用的資源限制選項
-m , -memory 容器能夠使用的最大內存量 -memory-swap 容許交換到磁盤的內存量(物理內存-swap內存=真實swap空間) -oom-kill-disable 禁用OOM killer (找出最多消耗資源的進程並殺掉) -cpus 能夠使用的CPU數量 -cpuset-cpus 限制容器使用特定的CPU核心,(0-3,0,1) -cpu-shares CPU共享(相對權重)
實例
docker run -d --name web03 --memory="500m" --memory-swap="600m" --oom-kill-disable nginx #限制內存使用500m,大於500時使用swap交換空間100m docker stats --no-stream web03 #查看容器內存使用詳細信息
#限制使用一個CPU docker run -d --name web01 --cpus="1" nginx #容許使用最多百分之50%的CPU docker run -d --name web01 --cpus=".5" nginx