Docker的常用管理命令Docker将数据挂载到容器的三种方式
生活随笔
收集整理的這篇文章主要介紹了
Docker的常用管理命令Docker将数据挂载到容器的三种方式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 鏡像管理命令
- 容器管理常用命令
- docker run常用參數(shù)
- Docker run的其他參數(shù)
- docker 創(chuàng)建容器命令
- 容器資源限制
- docker管理容器常用命令
- docker將數(shù)據(jù)掛載到容器的三種方式
- Volume特點(diǎn):
- Bind Mounts特點(diǎn):
鏡像管理命令
[root@linux-node4 diff]# docker help # 查看docker幫助 [root@linux-node4 diff]# docker image --help # 查看 docker中 鏡像相關(guān)幫助 [root@linux-node4 diff]# docker image ls # 查看當(dāng)前所有鏡像 [root@linux-node4 diff]# docker image inspect nginx # 查看指定鏡像(nginx鏡像)詳細(xì)信息 [root@linux-node4 diff]# docker pull nginx:1.14 # 下載指定版本鏡像 nginx [root@linux-node4 diff]# docker image rm nginx:1.14 # 刪除nginx 1.14版本 [root@linux-node4 diff]# docker image save nginx > nginx.tar # 導(dǎo)出niginx鏡像容器管理常用命令
docker run常用參數(shù)
-d # 后臺運(yùn)行容器,并返回容器ID; -i # 以交互模式運(yùn)行容器,通常與 -t 同時使用; -t # 為容器重新分配一個偽輸入終端,通常與 -i 同時使用; -P # 隨機(jī)端口映射,容器內(nèi)部端口隨機(jī)映射到主機(jī)的高端口 -p # 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口 --name="nginx-lb" # 為容器指定一個名稱; --dns 8.8.8.8 # 指定容器使用的DNS服務(wù)器,默認(rèn)和宿主一致;Docker run的其他參數(shù)
--dns-search example.com: 指定容器DNS搜索域名,默認(rèn)和宿主一致;-h "mars": 指定容器的hostname;-e username="ritchie": 設(shè)置環(huán)境變量;--env-file=[]: 從指定文件讀入環(huán)境變量;--cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運(yùn)行;-m :設(shè)置容器使用內(nèi)存最大值;--net="bridge": 指定容器的網(wǎng)絡(luò)連接類型,支持 bridge/host/none/container: 四種類型;--link=[]: 添加鏈接到另一個容器;--expose=[]: 開放一個端口或一組端口;--volume , -v: 綁定一個卷-a stdin: 指定標(biāo)準(zhǔn)輸入輸出內(nèi)容類型,可選 STDIN/STDOUT/STDERR 三項;docker 創(chuàng)建容器命令
[root@linux-node4 diff]# docker run --help # 查看創(chuàng)建容器幫助 [root@linux-node4 diff]# docker run -it centos # 創(chuàng)建centos鏡像并進(jìn)入終端 [root@linux-node4 diff]# docker run -d nginx # 后臺啟動nginx容器 [root@linux-node4 diff]# docker stop 6bb09dce461f # 關(guān)閉一個容器 [root@linux-node4 diff]# docker ps -l # 查看最近運(yùn)行的容器 [root@linux-node4 diff]# docker run -itd centos # 啟用一個偽終端守護(hù)centos容器 [root@linux-node4 diff]# docker container run -d --name web3 -e test=123456 -p 8800:80 -h webhostname --restart always nginx -d # 后臺啟動nginx容器 --name web3 # 自定義容器名字(默認(rèn)會是一段隨機(jī)字符串) -e test=123456 # 啟動容器添加變量 test=123456 (echo $test) -p 8800:80 # 宿主機(jī)的8800端口映射到docker容器的80端口中 -h webhostname # docker容器主機(jī)名 (a300f394af88) --restart always # 宿主機(jī)重啟自動拉起這個docker容器 nginx # 使用這個nginx鏡像啟動容器 注:http://192.168.56.12:8800/ 訪問這個docker nginx [root@linux-node4 diff]# docker logs web # 查看上面啟動的web容器的日志 [root@linux-node4 diff]# docker exec -it web bash # 進(jìn)入容器web容器資源限制
'''1. 內(nèi)存限額: 允許容器最多使用500M內(nèi)存和100M的Swap,并禁用 OOM Killer ''' [root@linux-node4 diff]# docker run -d --name nginx03 --memory="500m" --memory-swap="600m" --oom-kill-disable nginx'''2. CPU限額:''' [root@linux-node4 diff]# docker run -d --name nginx04 --cpus="1.5" nginx # 允許容器最多使用一個半的CPU [root@linux-node4 diff]# docker run -d --name nginx05 --cpus=".5" nginx # 允許容器最多使用50%的CPUdocker管理容器常用命令
docker ps # 僅列出當(dāng)前運(yùn)行的容器 docker ps -l # 列出最新創(chuàng)建得容器 docker ps -a # 列出素有容器(包括 未運(yùn)行的) docker inspect web4 # 列出指定容器的詳細(xì)信息#### 持久化容器 docker exec -it web4 bash # 進(jìn)入容器web4中 touch 1.txt 2.txt # 對容器進(jìn)行修改 docker commit web4 nginx:web4 # 將修改后的web4容器提交為一個新鏡像 nginx:web4 docker images # 可以看到 多了一個 TAG標(biāo)記為 web4 的鏡像 docker run -d --name web4-1 nginx:web4 # 使用剛剛提交的鏡像web4創(chuàng)建一個容器web4-1 docker exec -it web4-1 bash # 進(jìn)入web4-1的bash環(huán)境#### 從宿主機(jī)復(fù)制文件到docker容器 docker cp nginx.tar web4-1:/home # 將宿主機(jī)nginx.tar文件拷貝到容器web4-1的/home目錄中 docker exec -it web4-1 ls /home # 在容器web4-1中執(zhí)行 "ls /home" 命令#### 容器常用查詢命令 docker logs web4-1 # 查看web4-1中控制臺日志 docker port 55f870061ed9 # 查看指定容器端口映射 docker top 00f7ddc96622 # 查看容器中有哪些進(jìn)程docker stats 00f7ddc96622 # 查看容器資源使用情況##### 啟動、停止、刪除 容器docker ps -a # 列出素有容器(包括 未運(yùn)行的) docker start web # 啟動容器web docker stop web # 停止容器web docker rm webdocker將數(shù)據(jù)掛載到容器的三種方式
Docker提供三種方式將數(shù)據(jù)從宿主機(jī)掛載到容器中
- volumes:Docker管理宿主機(jī)文件系統(tǒng)的一部分(/var/lib/docker/volumes) 保存數(shù)據(jù)的最佳方式
- bind mounts:將宿主機(jī)上的任意位置的文件或者目錄掛載到容器中, 就像軟連接一樣
- tmpfs:掛載存儲在主機(jī)系統(tǒng)的內(nèi)存中,而不會寫入主機(jī)的文件系統(tǒng)(不常用)
區(qū)別:
- volume : 是docker的宿主機(jī)文件系統(tǒng)一部分,只有docker可以進(jìn)行更改,其他進(jìn)程不能修改
- bind mounts : 是掛載在宿主機(jī)文件系統(tǒng)的任意位置,除了docker所有進(jìn)程都可以進(jìn)行修改
、
管理卷
volumes:將容器中的數(shù)據(jù)持久化到宿主機(jī)中
- 1)用卷創(chuàng)建一個容器:
- 2)清理卷:
bind mounts:將宿主機(jī)中的數(shù)據(jù)掛載到容器中
- 1)用卷創(chuàng)建一個容器:
- 2)清理:
注意:
Volume特點(diǎn):
- 多個運(yùn)行容器之間共享數(shù)據(jù)
- 當(dāng)容器停止或被移除時,該卷依然存在
- 多個容器可以同時掛載相同的卷
- 當(dāng)明確刪除卷時,卷才會被刪除
- 將容器的數(shù)據(jù)存儲在遠(yuǎn)程主機(jī)或其他存儲上
- 將數(shù)據(jù)從一臺Docker主機(jī)遷移到另一臺時,先停止容器,然后備份卷的目錄(/var/lib/docker/volumes/)
Bind Mounts特點(diǎn):
- 從主機(jī)共享配置文件到容器。默認(rèn)情況下,掛載主機(jī)/etc/resolv.conf到每個容器,提供DNS解析
- 在Docker主機(jī)上的開發(fā)環(huán)境和容器之間共享源代碼。例如,可以將Maven target目錄掛載到容器中,每次在Docker主機(jī)
上構(gòu)建Maven項目時,容器都可以訪問構(gòu)建的項目包 - 當(dāng)Docker主機(jī)的文件或目錄結(jié)構(gòu)保證與容器所需的綁定掛載一致時
總結(jié)
以上是生活随笔為你收集整理的Docker的常用管理命令Docker将数据挂载到容器的三种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django rest framewor
- 下一篇: Dockerfile 部署Djano项目