docker 常用命令

0 背景

在開發(fā)過程中津肛,經(jīng)常涉及到 docker 的相關(guān)操作屎飘,本文對常用的指令進行匯總

1 鏡像相關(guān)

1.1 查看鏡像列表

sudo docker images

1.2 鏡像搜索

比如搜索 ubuntu 基礎(chǔ)鏡像

sudo docker search ubuntu

可輸出官方的鏡像名稱竭缝,以及 star 數(shù)量,選擇一個需要的鏡像下拉即可


image.png

1.3 下拉鏡像

sudo docker pull 鏡像名
sudo docker pull 鏡像名:Tag

1.4 刪除鏡像

sudo docker rmi -f 鏡像名/鏡像ID

1.5 保存鏡像

將我們的鏡像 保存為tar 壓縮文件 這樣方便鏡像轉(zhuǎn)移和保存 ,然后 可以在任何一臺安裝了docker的服務(wù)器上 加載這個鏡像

docker save 鏡像名/鏡像ID -o 鏡像保存在哪個位置與名字

1.6 加載鏡像

任何裝 docker 的地方加載鏡像保存文件,使其恢復(fù)為一個鏡像

docker load -i 鏡像保存文件位置

12 容器相關(guān)

2.1 容器列表

sudo docker ps
sudo docker ps -a # 查看所有容器 -----包含正在運行 和已停止的

2.2 創(chuàng)建容器

docker run -it -d --name 要取的別名 -p 宿主機端口:容器端口 -v 宿主機文件存儲位置:容器內(nèi)文件位置 鏡像名:Tag /bin/bash 

參數(shù)含義:

-it 表示 與容器進行交互式啟動
-d 表示可后臺運行容器 (守護式運行)  
--name 給要運行的容器 起的名字  
/bin/bash  交互路徑
-p 將容器的端口映射到宿主機上悉罕,通過宿主機訪問內(nèi)部端口
-v 將容器內(nèi)的指定文件夾掛載到宿主機對應(yīng)位置

2.3 運行一個容器

# -it 表示 與容器進行交互式啟動 -d 表示可后臺運行容器 (守護式運行)  --name 給要運行的容器 起的名字  /bin/bash  交互路徑
docker run -it -d --name 要取的別名 鏡像名:Tag /bin/bash 

例如我們要啟動一個redis 把它的別名取為redis001 并交互式運行 需要的命令 —我這里指定版本號為5.0.5

1. 拉取redis 鏡像

docker pull redis:5.0.5

2.命令啟動

docker run -it -d --name redis001 redis:5.0.5 /bin/bash

3.容器端口與服務(wù)器端口映射

命令:

-p 宿主機端口:容器端口
1
還是使用前方的 redis 鏡像 嘗試 將6379端口 映射到服務(wù)器的8888 如果成功了的話 那么咱們訪問服務(wù)器的8888端口就會訪問到咱們的 docker 中 的容器 redis002

-p 8888:6379 解析 將容器內(nèi)部的 6379端口與docker 宿主機(docker裝在哪臺服務(wù)器 哪臺服務(wù)器就是宿主機)8888 端口進行映射 那通過外部訪問宿主機8888端口 即可訪問到 docker 容器 6379 端口了

docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash

netstat是控制臺命令,是一個監(jiān)控TCP/IP網(wǎng)絡(luò)的非常有用的工具,它可以顯示路由表跟狱、實際的網(wǎng)絡(luò)連接以及每一個網(wǎng)絡(luò)接口設(shè)備的狀態(tài)信息

netstat -untlp
image.png

netstat -untlp

2.3 停止容器

sudo docker stop 容器名/容器ID

2.4 刪除容器

刪除一個容器

docker rm -f 容器名/容器ID

刪除多個容器 空格隔開要刪除的容器名或容器ID

docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID

刪除全部容器

docker rm -f $(docker ps -aq)

kill

docker kill 容器ID/容器名

2.5 進入容器

進入正在運行中的容器

sudo docker attach 容器ID/容器名
docker exec -it 容器名/容器ID /bin/bash   推薦使用
#進入 前面的 redis001容器   
docker exec -it redis001 /bin/bash

2.6從容器內(nèi) 退出到自己服務(wù)器中 需注意 兩個退出命令的區(qū)別

直接退出  未添加 -d(持久化運行容器) 時 執(zhí)行此參數(shù) 容器會被關(guān)閉  
exit
 優(yōu)雅退出 --- 無論是否添加-d 參數(shù) 執(zhí)行此命令容器都不會被關(guān)閉
Ctrl + p + q

2.7容器文件拷貝 —無論容器是否開啟 都可以進行拷貝

#docker cp 容器ID/名稱:文件路徑  要拷貝到外部的路徑   |     要拷貝到外部的路徑  容器ID/名稱:文件路徑
#從容器內(nèi) 拷出
docker cp 容器ID/名稱: 容器內(nèi)路徑  容器外路徑
#從外部 拷貝文件到容器內(nèi)
docker  cp 容器外路徑 容器ID/名稱: 容器內(nèi)路徑

2.8查看容器日志

docker logs -f --tail=要查看末尾多少行 默認all 容器ID
image.png

2.9運維

我們在運維的時候扎运,通常給一些軟件喜歡設(shè)置開機自啟動脖母,例如 mysql士鸥、redis,這樣測試環(huán)境服務(wù)器重啟時可節(jié)省不少運維時間成本,那么我們?nèi)绻莇ocker容器 是否也可以設(shè)置開機自啟動容器呢谆级?

啟動容器時烤礁,使用docker run命令時 添加參數(shù)--restart=always 便表示,該容器隨docker服務(wù)啟動而自動啟動
docker run -itd --name redis002 -p 8888:6379 --restart=always redis:5.0.5 /bin/bash

3.0運維數(shù)據(jù)掛載

什么是數(shù)據(jù)掛載肥照?

簡單來講脚仔,就是將容器內(nèi)的數(shù)據(jù)與外部宿主機文件綁定起來,類似一個雙持久化舆绎,當(dāng)容器刪除時鲤脏,宿主機文件數(shù)據(jù)目錄仍在,下次啟動容器只要將數(shù)據(jù)目錄指向宿主機數(shù)據(jù)所在位置即可恢復(fù)
具體請參考:docker 文件分層與數(shù)據(jù)卷掛載
方法一:
命令:

-v 宿主機文件存儲位置:容器內(nèi)文件位置
1
如此操作吕朵,就將 容器內(nèi)指定文件掛載到了宿主機對應(yīng)位置猎醇,-v命令可以多次使用,即一個容器可以同時掛載多個文件

-v 宿主機文件存儲位置:容器內(nèi)文件位置 -v 宿主機文件存儲位置:容器內(nèi)文件位置 -v 宿主機文件存儲位置:容器內(nèi)文件位置
1
示例:

# 運行一個docker redis 容器 進行 端口映射 兩個數(shù)據(jù)卷掛載 設(shè)置開機自啟動
docker run -d -p 6379:6379 --name redis505 --restart=always  -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf  redis:5.0.5 --requirepass "password"

此方法完了你很無語努溃?那還不是得刪容器硫嘶?是呀!沒錯梧税!那么為什么你有數(shù)據(jù)恢復(fù)需求而沒有想到數(shù)據(jù)持久化沦疾,數(shù)據(jù)恢復(fù)備份,數(shù)據(jù)卷掛載第队?自己DEMO的吃虧哮塞,是為了平時開發(fā)少扣腦殼多摸魚!
方法二:不想刪容器斥铺,又想讓這個容器設(shè)置開機自啟動彻桃,那么我們修改其啟動配置即可坛善!
命令:

docker  update --restart=always 容器Id 或者 容器名
或
docker container update --restart=always 容器Id 或者 容器名

如上晾蜘,雖然不刪容器就設(shè)置了自啟動需求滿足了邻眷,但是,危不危險剔交,這個容器有沒有需要數(shù)據(jù)恢復(fù)的情況肆饶?自己考量吧!岖常!

3.1更換容器名

docker rename 容器ID/容器名 新容器名

3.2docker 運維命令

可能有時候發(fā)布會遇到如下錯誤:

docker: write /var/lib/docker/tmp/GetImageBlob325372670: no space left on device

這個錯誤是docker在寫入的時候報錯無機器無空間

查看docker工作目錄

sudo docker info | grep "Docker Root Dir"

查看docker磁盤占用總體情況

du -hs /var/lib/docker/ 

查看Docker的磁盤使用具體情況

docker system df

查找大文件

find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr

查找指定docker使用目錄下大于指定大小文件

find / -type f -size +100M -print0 | xargs -0 du -h | sort -nr |grep '/var/lib/docker/overlay2/*'

掛載

docker run -di --name tomcat9 -v /data/tomcat/webapps:/usr/local/tomcat/webapps --privileged=true -p 8083:8083 tomcat:9

構(gòu)建鏡像 Dockerfile

FROM openjdk:8
ADD docker-service3-1.0-SNAPSHOT.jar /app.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t docker-service3 .
#創(chuàng)建 docker-service3 鏡像
. 是上下文路徑驯镊,那么什么是上下文路徑呢?
上下文路徑竭鞍,是指 docker 在構(gòu)建鏡像板惑,有時候想要使用到本機的文件(比如復(fù)制),docker build 命令得知這個路徑后偎快,會將路徑下的所有內(nèi)容打包冯乘。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市晒夹,隨后出現(xiàn)的幾起案子裆馒,更是在濱河造成了極大的恐慌,老刑警劉巖丐怯,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喷好,死亡現(xiàn)場離奇詭異,居然都是意外死亡读跷,警方通過查閱死者的電腦和手機梗搅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來舔亭,“玉大人些膨,你說我怎么就攤上這事∏掌蹋” “怎么了订雾?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長矛洞。 經(jīng)常有香客問我洼哎,道長,這世上最難降的妖魔是什么沼本? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任噩峦,我火速辦了婚禮,結(jié)果婚禮上抽兆,老公的妹妹穿的比我還像新娘识补。我一直安慰自己,他們只是感情好辫红,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布凭涂。 她就那樣靜靜地躺著祝辣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪切油。 梳的紋絲不亂的頭發(fā)上蝙斜,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機與錄音澎胡,去河邊找鬼孕荠。 笑死,一個胖子當(dāng)著我的面吹牛攻谁,可吹牛的內(nèi)容都是我干的稚伍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼戚宦,長吁一口氣:“原來是場噩夢啊……” “哼槐瑞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起阁苞,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤困檩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后那槽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悼沿,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年骚灸,在試婚紗的時候發(fā)現(xiàn)自己被綠了糟趾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡甚牲,死狀恐怖义郑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丈钙,我是刑警寧澤非驮,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站雏赦,受9級特大地震影響劫笙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜星岗,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一填大、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧俏橘,春花似錦允华、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽汉额。三九已至,卻和暖如春榨汤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怎茫。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工收壕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人轨蛤。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓蜜宪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親祥山。 傳聞我的和親對象是個殘疾皇子圃验,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容