Docker命令中的各種參數(shù)使用(run、v、rm、-w、-u、-e)
介紹
run 的各種參數(shù)
docker run [OPTIONS] IMAGE [COMMOND] [ARGS...] # OPTIONS 說(shuō)明 --name="容器新名字": 為容器指定一個(gè)名稱; -d: 后臺(tái)運(yùn)行容器,并返回容器ID,也即啟動(dòng)守護(hù)式容器; -i:以交互模式運(yùn)行容器,通常與 -t 同時(shí)使用; -t:為容器重新分配一個(gè)偽輸入終端,通常與 -i 同時(shí)使用; -P: 隨機(jī)端口映射; -p: 指定端口映射,有以下四種格式 ip:hostPort:containerPort ip::containerPort hostPort:containerPort containerPort -w: 指定命令執(zhí)行時(shí),所在的路徑 # IMAGE XXX_IMAGE_NAME:XXX_IMAGE_VER # COMAND 例:mvn -Duser.home=xxx -B clean package -Dmaven.test.skip=true
常用OPTIONS補(bǔ)足:
--name:容器名字
--network:指定網(wǎng)絡(luò)
--rm:容器停止自動(dòng)刪除容器
-i:--interactive,交互式啟動(dòng)
-t:--tty,分配終端
-v:--volume,掛在數(shù)據(jù)卷
-d:--detach,后臺(tái)運(yùn)行
(-w 在run中,似乎也可直接使用)
在已運(yùn)行的容器中運(yùn)行命令
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
常用選項(xiàng):
-d:--detach ,后臺(tái)運(yùn)行命令
-e, --env list 設(shè)置env
-i, --interactive 啟用交互式
-t, --tty 啟用終端
-u, --user string 指定用戶 (格式: <name|uid>[:<group|gid>])
-w, --workdir string 指定工作目錄
在容器內(nèi)執(zhí)行/bin/bash命令
# eg: 使用鏡像nginx:latest以交互模式啟動(dòng)一個(gè)容器,在容器內(nèi)執(zhí)行/bin/bash命令。 docker run -it centos /bin/bash
docker -v 掛載 (目錄)
比如我要啟動(dòng)一個(gè)centos容器,宿主機(jī)的/test目錄掛載到容器的/soft目錄,可通過(guò)以下方式指定:
# docker run -it -v /test:/soft centos /bin/bash
冒號(hào)":"前面的目錄是宿主機(jī)目錄,后面的目錄是容器內(nèi)目錄。
# docker run -it -v /test:/soft centos /bin/bash
一、容器目錄不可以為相對(duì)路徑
二、宿主機(jī)目錄如果不存在,則會(huì)自動(dòng)生成
# docker run -it -v test1:/soft centos /bin/bash
三、宿主機(jī)的目錄如果為相對(duì)路
?容器內(nèi)的/soft目錄掛載的是宿主機(jī)上的/var/lib/docker/volumes/test1/_data目錄
?所謂的相對(duì)路徑指的是/var/lib/docker/volumes/,與宿主機(jī)的當(dāng)前目錄無(wú)關(guān)。
四、如果在容器內(nèi)修改了目錄的屬主和屬組,那么對(duì)應(yīng)的掛載點(diǎn)會(huì)跟著修改
其他更多掛載目錄的方法 (可以使用鏡像直接掛載)
docker -v 掛載 (Volume)
Docker的數(shù)據(jù)持久化—數(shù)據(jù)不隨著container的結(jié)束而結(jié)束,
數(shù)據(jù)存在于host機(jī)器上:(以下兩種中的一種)
- 存在于host的某個(gè)指定目錄中(使用bind mount),
- 使用docker自己管理的volume(/var/lib/docker/volumes下)
Docker Volume示例
-v maven-repository-volume:/MyPoroject/mvn/.m2
查看【maven-repository-volume】的volume:
docker volume inspect my-volume
注意:
- host機(jī)器的目錄路徑必須為全路徑(即需要以/或~/開(kāi)始的路徑),
- 不然docker會(huì)把這個(gè)目錄當(dāng)做volume
docker --rm
容器退出時(shí)就能夠自動(dòng)清理容器內(nèi)部的文件系統(tǒng)。
即當(dāng)使用docker stop后,會(huì)直接刪除容器,若數(shù)據(jù)沒(méi)有掛載出來(lái)的話就直接被刪除了,所以這個(gè)需要看自己具體的業(yè)務(wù)場(chǎng)景去使用。
docker -w -it
-w 指的是在哪個(gè)目錄下去執(zhí)行這個(gè)命令。這個(gè)目錄指的是容器內(nèi)的目錄。
docker run -i --rm --name getSign \ -v /opt/getSign:/usr/src/app -v /opt/getSign:/root/.npm \ -w /usr/src/app dockerhub.com/common/node:19.7.0 bash -c "pnpm install && pnpm run build:dev"
可以看到上面的示例,我把容器外的/opt/getSign的代碼目錄掛載到了容器內(nèi)的/usr/src/app目錄。那么此時(shí)我的代碼就是在容器內(nèi)的 /usr/src/app 目錄下了,所以我想執(zhí)行pnpm命令的時(shí)候,需要指定執(zhí)行目錄為 -w /usr/src/app 這個(gè)目錄。
到此這篇關(guān)于Docker命令中的各種參數(shù)使用(run、v、rm、-w、-u、-e)的文章就介紹到這了,更多相關(guān)Docker命令的各種參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Docker部署打包發(fā)布springboot項(xiàng)目
本文主要介紹了使用Docker部署打包發(fā)布springboot項(xiàng)目,從安裝docker到多種方式打包發(fā)布,編譯,鏡像,容器等問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Docker學(xué)習(xí)筆記之Docker部署Java web系統(tǒng)
這篇文章主要介紹了Docker學(xué)習(xí)筆記之Docker部署Java web系統(tǒng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02docker學(xué)習(xí)筆記之把容器commit成鏡像的方法
本篇文章主要介紹了docker學(xué)習(xí)筆記之把容器commit成鏡像,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05docker Overlay目錄占用的磁盤(pán)空間過(guò)大問(wèn)題
這篇文章主要介紹了docker Overlay目錄占用的磁盤(pán)空間過(guò)大問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08docker容器內(nèi)運(yùn)行jupyter映射到本地方式
通過(guò)在容器內(nèi)指定Jupyter的IP為0.0.0.0,并使用--no-browser參數(shù),可以正確將Jupyter端口映射到本地,具體步驟包括在本地機(jī)器運(yùn)行Docker容器,指定端口映射;在容器內(nèi)運(yùn)行Jupyter Notebook,設(shè)置--ip和--no-browser參數(shù)(一般還需--allow-root)2024-11-11Windows10安裝WSL2 Ubuntu20.04并設(shè)置docker環(huán)境的方法
這篇文章主要介紹了Windows10安裝WSL2 Ubuntu20.04并設(shè)置docker環(huán)境的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05