Docker 最常用的鏡像命令和容器命令

本文列出了 Docker 使用過程中最常用的鏡像命令和容器命令,以及教大家如何操作容器數據卷射赛,實現容器數據的備份。熟練練習這些命令以后奶是,再來一些簡單的應用部署練習楣责,大家就可以學習 Docker 的鏡像構建、備份恢復遷移聂沙、鏡像倉庫秆麸、網絡、集群等等更多的內容及汉。

鏡像相關命令

官方文檔:https://docs.docker.com/reference/

查看鏡像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        7 months ago        13.3kB
  • REPOSITORY:鏡像在倉庫中的名稱沮趣,本文中以后都簡稱鏡像名稱
  • TAG:鏡像標簽
  • IMAGE ID:鏡像 ID
  • CREATED:鏡像的創(chuàng)建日期(不是獲取該鏡像的日期)
  • SIZE:鏡像大小

這些鏡像都是存儲在 Docker 宿主機的 /var/lib/docker 目錄下。

搜索鏡像

如果你需要從網絡中查找需要的鏡像坷随,可以通過以下命令搜索房铭。

docker search 鏡像名稱
  • NAME:鏡像名稱
  • DESCRIPTION:鏡像描述
  • STARS:用戶評價,反映一個鏡像的受歡迎程度
  • OFFICIAL:是否為官方構建
  • AUTOMATED:自動構建温眉,表示該鏡像由 Docker Hub 自動構建流程創(chuàng)建的缸匪。

拉取鏡像

拉取鏡像就是從中央倉庫下載鏡像到本地。

docker pull 鏡像名稱

假如我要拉取 centos 鏡像到本地类溢,如果不聲明 tag 鏡像標簽信息則默認拉取 latest 版本凌蔬,也可以通過:https://hub.docker.com/ 搜索該鏡像,查看支持的 tag 信息闯冷。

通過查看 tag 信息砂心,如果我們要下載 centos7 的鏡像。

docker pull centos:7

刪除鏡像

按鏡像 ID 刪除鏡像蛇耀。

# 刪除單個鏡像
docker rmi 鏡像ID
# 刪除多個鏡像
docker rmi 鏡像ID 鏡像ID 鏡像ID

docker images -q 可以查詢到所有鏡像的 ID计贰,通過組合命令可以實現刪除所有鏡像的操作。

docker rmi `docker images -q`

注意:如果通過某個鏡像創(chuàng)建了容器蒂窒,則該鏡像無法刪除躁倒。

解決辦法:先刪除鏡像中的容器,再刪除該鏡像洒琢。

容器相關命令

查看容器

查看正在運行的容器秧秉。

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE        COMMAND        CREATED        STATUS        PORTS        NAMES
  • CONTAINER ID:容器 ID
  • IMAGE:所屬鏡像
  • COMMAND
  • CREATED:創(chuàng)建時間
  • STATUS:容器狀態(tài)
  • PORTS:端口
  • NAMES:容器名稱

查看停止的容器。

docker ps -f status=exited

查看所有容器(包括運行和停止)衰抑。

docker ps -a

查看最后一次運行的容器象迎。

docker ps -l

創(chuàng)建與啟動容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • -i:表示運行容器;
  • -t:表示容器啟動后會進入其命令行呛踊。加入這兩個參數后砾淌,容器創(chuàng)建就能登錄進去。即分配一個偽終端谭网;
  • --name:為創(chuàng)建的容器命名汪厨;
  • -v:表示目錄映射關系(前者是宿主機目錄,后者是映射到宿主機上的目錄)愉择,可以使用多個 -v 做多個目錄或文件映射劫乱。注意:最好做目錄映射,在宿主機上做修改锥涕,然后共享到容器上衷戈;
  • -d:在 run 后面加上 -d 參數,則會創(chuàng)建一個守護式容器在后臺運行(這樣創(chuàng)建容器后不會自動登錄容器层坠,如果只加 -i -t 兩個參數殖妇,創(chuàng)建容器后就會自動進容器里);
  • -p:表示端口映射破花,前者是宿主機端口谦趣,后者是容器內的映射端口【善颍可以使用多個 -p 做多個端口映射蔚润。
  • -P:隨機使用宿主機的可用端口與容器內暴露的端口映射。

創(chuàng)建并進入容器

下面這行命令的意思就是通過鏡像 AA 創(chuàng)建一個容器 BB尺栖,運行容器并進入容器的 /bin/bash嫡纠。

docker run -it --name 容器名稱 鏡像名稱:標簽 /bin/bash

注意:Docker 容器運行必須有一個前臺進程, 如果沒有前臺進程執(zhí)行延赌,容器認為是空閑狀態(tài)除盏,就會自動退出。

退出當前容器

exit

守護式方式創(chuàng)建容器

docker run -di --name 容器名稱 鏡像名稱:標簽

登錄守護式容器方式

docker exec -it 容器名稱|容器ID /bin/bash

停止與啟動容器

# 停止容器
docker stop 容器名稱|容器ID
# 啟動容器
docker start 容器名稱|容器ID

文件拷貝

如果我們需要將文件拷貝到容器內可以使用 cp 命令挫以。

docker cp 需要拷貝的文件或目錄 容器名稱:容器目錄

也可以將文件從容器內拷貝出來者蠕。

docker cp 容器名稱:容器目錄 需要拷貝的文件或目錄

目錄掛載(容器數據卷操作)

我們可以在創(chuàng)建容器的時候,將宿主機的目錄與容器內的目錄進行映射掐松,這樣我們就可以通過修改宿主機某個目錄的文件從而去影響容器踱侣,而且這個操作是雙向綁定的粪小,也就是說容器內的操作也會影響到宿主機,實現備份功能抡句。

但是容器被刪除的時候探膊,宿主機的內容并不會被刪除,因為底層是通過拷貝實現的待榔。如果多個容器掛載同一個目錄逞壁,其中一個容器被刪除,其他容器的內容也不會受到影響锐锣,同理腌闯,底層是拷貝實現的。

但是容器被刪除的時候雕憔,宿主機的內容并不會被刪除姿骏。如果多個容器掛載同一個目錄,其中一個容器被刪除橘茉,其他容器的內容也不會受到影響工腋。

容器與宿主機之間的數據卷屬于引用的關系,數據卷是從外界掛載到容器內部中的畅卓,所以可以脫離容器的生命周期而獨立存在擅腰,正是由于數據卷的生命周期并不等同于容器的生命周期,在容器退出或者刪除以后翁潘,數據卷仍然不會受到影響趁冈,數據卷的生命周期會一直持續(xù)到沒有容器使用它為止。

創(chuàng)建容器添加 -v 參數拜马,格式為宿主機目錄:容器目錄渗勘,例如:

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目錄掛載
docker run -di -v /宿主機目錄:/容器目錄 -v /宿主機目錄2:/容器目錄2 鏡像名

目錄掛載操作可能會出現權限不足的提示。這是因為 CentOS7 中的安全模塊 SELinux 把權限禁掉了俩莽,在 docker run 時通過 --privileged=true 給該容器加權限來解決掛載的目錄沒有權限的問題旺坠。

匿名掛載

匿名掛載只需要寫容器目錄即可,容器外對應的目錄會在 /var/lib/docker/volume 中生成扮超。

# 匿名掛載
docker run -di -v /usr/local/data --name centos7-02 centos:7
# 查看 volume 數據卷信息
docker volume ls

具名掛載

具名掛載就是給數據卷起了個名字取刃,容器外對應的目錄會在 /var/lib/docker/volume 中生成。

# 匿名掛載
docker run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7
# 查看 volume 數據卷信息
docker volume ls

指定目錄掛載

一開始給大家講解的方式就屬于指定目錄掛載出刷,這種方式的掛載不會在 /var/lib/docker/volume 目錄生成內容璧疗。

docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目錄掛載
docker run -di -v /宿主機目錄:/容器目錄 -v /宿主機目錄2:/容器目錄2 鏡像名

查看目錄掛載關系

通過 docker volume inspect 數據卷名稱 可以查看該數據卷對應宿主機的目錄地址。

[root@localhost ~]# docker volume inspect docker_centos_data
[
    {
        "CreatedAt": "2020-08-13T20:19:51+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/docker_centos_data/_data",
        "Name": "docker_centos_data",
        "Options": null,
        "Scope": "local"
    }
]

通過 docker inspect 容器ID或名稱 馁龟,在返回的 JSON 節(jié)點中找到 Mounts崩侠,可以查看詳細的數據掛載信息。

只讀/讀寫

# 只讀坷檩。只能通過修改宿主機內容實現對容器的數據管理却音。
docker run -it -v /宿主機目錄:/容器目錄:ro 鏡像名
# 讀寫改抡,默認。宿主機和容器可以雙向操作數據僧家。
docker run -it -v /宿主機目錄:/容器目錄:rw 鏡像名

volumes-from(繼承)

# 容器 centos7-01 指定目錄掛載
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 容器 centos7-04 和 centos7-05 相當于繼承 centos7-01 容器的掛載目錄
docker run -di --volumes-from centos7-01 --name centos7-04 centos:7
docker run -di --volumes-from centos7-01 --name centos7-05 centos:7

查看容器 IP 地址

我們可以通過以下命令查看容器的元信息雀摘。

docker inspect 容器名稱|容器ID

也可以直接執(zhí)行下面的命令直接輸出 IP 地址。

docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱|容器ID

刪除容器

# 刪除指定容器
docker rm 容器名稱|容器ID
# 刪除多個容器
docker rm 容器名稱|容器ID 容器名稱|容器ID

常用命令的練習就到這里八拱,下文我們來一些簡單的應用部署練習,加強 Docker 命令的使用涯塔。

本文采用 知識共享「署名-非商業(yè)性使用-禁止演繹 4.0 國際」許可協(xié)議肌稻。

大家可以通過 分類 查看更多關于 Docker 的文章。


?? 您的點贊轉發(fā)是對我最大的支持匕荸。

?? 關注公眾號 哈嘍沃德先生「文檔 + 視頻」每篇文章都配有專門視頻講解爹谭,學習更輕松噢 ~


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市榛搔,隨后出現的幾起案子诺凡,更是在濱河造成了極大的恐慌,老刑警劉巖践惑,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腹泌,死亡現場離奇詭異,居然都是意外死亡尔觉,警方通過查閱死者的電腦和手機凉袱,發(fā)現死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侦铜,“玉大人专甩,你說我怎么就攤上這事《ど裕” “怎么了涤躲?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贡未。 經常有香客問我种樱,道長,這世上最難降的妖魔是什么羞秤? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任缸托,我火速辦了婚禮,結果婚禮上瘾蛋,老公的妹妹穿的比我還像新娘俐镐。我一直安慰自己,他們只是感情好哺哼,可當我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布佩抹。 她就那樣靜靜地躺著叼风,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棍苹。 梳的紋絲不亂的頭發(fā)上无宿,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音枢里,去河邊找鬼孽鸡。 笑死,一個胖子當著我的面吹牛栏豺,可吹牛的內容都是我干的彬碱。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼奥洼,長吁一口氣:“原來是場噩夢啊……” “哼巷疼!你這毒婦竟也來了?” 一聲冷哼從身側響起灵奖,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嚼沿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瓷患,有當地人在樹林里發(fā)現了一具尸體骡尽,經...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年尉尾,在試婚紗的時候發(fā)現自己被綠了爆阶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡沙咏,死狀恐怖辨图,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情肢藐,我是刑警寧澤故河,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站吆豹,受9級特大地震影響鱼的,放射性物質發(fā)生泄漏痘煤。R本人自食惡果不足惜凑阶,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一宙橱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦师郑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至地梨,卻和暖如春菊卷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宝剖。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工的烁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诈闺。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像铃芦,于是被迫代替她去往敵國和親雅镊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,527評論 2 349