Michael.W談Docker 第二期-docker的鏡像管理和容器管理

1 Docker的鏡像管理

1.1 鏡像的搜索

    # 查看docker中的所有指令
    docker --help
    # 命令
    $ docker search 鏡像名

在這里插入圖片描述

NAME: 鏡像名字
DESCRIPTION: 描述信息
STARS: 下載量
OFFICIAL: 鏡像是否為官方發(fā)行
AUTOMATED: 是否會啟動一些腳本之類的程序

1.2 鏡像的獲取

    # 下載遠程倉庫(如Docker Hub)中的鏡像
    $ docker pull 鏡像名
    # 下載完成之后, 就存儲到了本地的鏡像倉庫 /var/lib/docker

鏡像名為docker search xxx中Name字段對應的名字

1.3 鏡像的查看

    # 查看所有的鏡像
    $ docker images
    $ docker image ls
    # 查看某個鏡像
    $ docker images 鏡像名
    $ docker image ls 鏡像名字

在這里插入圖片描述

REPOSITORY: 鏡像的名字
TAG: 鏡像版本
IMAGE ID: 鏡像ID(唯一)
CREATED: 創(chuàng)建時間
SIZE: 鏡像的大小
注:在docker中描述一個鏡像的時候,必須用鏡像名:版本號(TAG)的方式來描述。如果TAG為latest,TAG可以省略不寫袜蚕。即:ubuntu 等價于 ubuntu:latest

1.4 鏡像的別名

    $ docker tag 現(xiàn)在的名字:tag 別名:tag 

不同的名字對應的ID相同阱高。鏡像并沒有復制, 只是多了一個別名而已捉兴。
鏡像名中必須是小寫字母钓觉。

1.5 鏡像的刪除

    $ docker rmi [OPTIONS] 鏡像名/鏡像ID
  1. 如果鏡像有別名, 只能夠按照鏡像名:tag 進行刪除, 不能根據(jù)ID進行刪除
  2. 如果鏡像有多個名字, 刪除任意一個名字肢娘,如果鏡像有多個名字,刪除任意一個名字舆驶,名字會刪除橱健,鏡像還在;
  3. 當鏡像只剩下一個名字的時候沙廉,對其進行刪除拘荡,鏡像可被刪除。當鏡像只剩下一個名字的時候撬陵,對其進行刪除珊皿,鏡像可被刪除;
  4. 可以一次刪除多個鏡像巨税。


    在這里插入圖片描述

1.6 鏡像的導入和導出

像將自己倉庫中的鏡像文件做備份或者傳給其他人需要做鏡像的導入和導出蟋定。
注:鏡像存儲的倉庫目錄為/var/lib/docker,但是在該路徑下都是很多瑣碎的文件草添,并沒有完整的文件驶兜。所以不要嘗試去路徑下直接考走。
導入

    $ docker load -i 倉庫中的鏡像名
    $ docker load < 倉庫中的鏡像名
在這里插入圖片描述

導出

# 將本地倉庫中的鏡像導出的磁盤目錄
    $ docker save -o 導出之后鏡像名字(自己起名) 倉庫中的鏡像名 

1.7 鏡像的歷史和詳細信息

    # 制作鏡像的時候的操作步驟
    $ docker history 倉庫中的鏡像名
在這里插入圖片描述
    # 鏡像的屬性信息, 以json格式輸出的
    $ docker inspect 鏡像名/鏡像ID

關于Docker --format 格式化輸出概要操作說明可訪問:https://yq.aliyun.com/articles/230067

2 Docker的容器管理

啟動Docker的鏡像文件就會得到一個容器远寸。一個容器可以被看做一個運行的操作系統(tǒng)抄淑。
啟動的每個容器都是一個進程

2.1 容器的查看

    # 命令, 只能看到正在運行的容器的狀態(tài)
    $ docker ps
    #參數(shù):
    #  -a, --all: 顯示所有容器, 默認只顯示running狀態(tài)的
    #  -q, --quiet: 只顯示容器ID
在這里插入圖片描述

CONTAINER ID: 容器啟動之后的ID, 唯一驰后;
IMAGE: 當前容器是基于那個鏡像啟動的肆资;
COMMAND: 容器啟動之后, 默認執(zhí)行了什么命令;
CREATED: 容器的創(chuàng)建時間灶芝;
STATUS: 容器當前狀態(tài)迅耘。容器一共有四種狀態(tài):

  1. created: 容器被創(chuàng)建, 但是不能使用
  2. runing: 運行狀態(tài)
  3. pause: 暫停狀態(tài)
  4. exited: 終止運行
    PORTS: 映射端口,具體指主機和容器之間的端口映射贱枣;
    NAMES: 容器啟動之后的名字, 如果沒有指定, 會隨機生成一個, 這個名字不能重復。

2.2 容器的創(chuàng)建

容器被創(chuàng)建颤专, 但是還不能使用纽哥,需要啟動!

    $ docker create [OPTIONS] 倉庫中的鏡像名 [COMMAND] 
    #   OPTIONS:
    #       -a, --attach list   給容器關聯(lián) STDIN, STDOUT or STDERR
    #       -t, --tty: 給容器綁定終端
    #       -i, --interactive: 關聯(lián)標準輸入
    #       --rm: 容器終止運行的時候, 自動被刪除
    #       --name string: 手動指定容器的名字
    #   COMMAND: 可以不寫, 或許寫個bash
    #   例子
    $ docker create -it --rm --name myubuntu ubuntu bash
在這里插入圖片描述

可見創(chuàng)建后的容器并不是運行狀態(tài),需要docker ps -a 才可以顯示出來栖秕。

2.3 啟動創(chuàng)建的容器

    $ docker start [OPTIONS] 容器名或者容器ID [CONTAINER...]
        OPTIONS:
            -a, --attach        Attach STDOUT/STDERR and forward signals
            -i, --interactive   Attach container's STDIN
     # 例子
     $ docker start -i ubuntu
在這里插入圖片描述

啟動后春塌,直接進入容器內的系統(tǒng)中

2.4 創(chuàng)建并啟動容器

docker run 等價于 docker create + docker start ,一般開發(fā)中都使用docker run

    # 通過一個命令創(chuàng)建容器, 并且啟動
    $ docker run  [OPTIONS] 倉庫中的鏡像名 [COMMAND] 
    # OPTIONS: 
    #   -d, --detach: 以守護進程的形式運行
    #   -a, --attach list   給容器關聯(lián) STDIN, STDOUT or STDERR
    #   -t, --tty: 給容器綁定終端
    #   -i, --interactive: 關聯(lián)標準輸入
    #   --rm: 容器終止運行的時候, 自動被刪除
    #   --name string: 手動指定容器的名字

在這里插入圖片描述

創(chuàng)建并運行簇捍。參數(shù)-d是docker run特有的只壳,即啟動容器后并不進入容器

2.5 容器的暫停和重啟

    # 暫停
    $ docker pause 容器名或ID [CONTAINER...]
    # 取消暫停
    $ docker unpause 容器名或ID [CONTAINER...]
    # 重啟
    $ docker restart [OPTIONS] 容器名或ID [CONTAINER...]
    # Options:
    #  -t, --time int: 延時時間, 默認10s

重啟容器后暑塑,其STATUS選項重新從0開始計時吼句。
這三個指令都可以接多個容器。
pause后容器狀態(tài)為paused事格,unpause和restart后容器狀態(tài)為running惕艳。

2.6 容器的關閉、終止和刪除

    # 關閉容器:狀態(tài), 容器還在, 有延時
    $ docker stop [OPTIONS] 容器名或ID [CONTAINER...]
    # Options:
    #  -t, --time int: 延時時間, 默認10s

關閉容器后驹愚,狀態(tài)從running變成exited远搪。


在這里插入圖片描述
    # 終止容器:容器還在, 直接關閉, 沒有延時
    $ docker kill [OPTIONS] 容器名或ID [CONTAINER...]
    # Options:
    #  -s, --signal string: 指定發(fā)出的信號, 一般不用

終止容器后,狀態(tài)從running變成exited逢捺。

    # 刪除未運行的容器
    $ docker rm 容器名或ID
    # 刪除運行中的容器
    $ docker rm 容器名或ID -f
    # 批量刪除容器(二者均可)
    $ docker rm $(docker ps -aq) -f
    $ docker rm `docker ps -aq` -f

關于批量刪除容器的解釋:
docker ps -aq 是顯示當前所有的容器的ID谁鳍。把這個返回值作為docker rm 的一個參數(shù),達到一鍵刪除所有容器的功效劫瞳。
這個需要記住倘潜,在開發(fā)中很有用!

在這里插入圖片描述

2.7 容器的進入和退出

    # 創(chuàng)建并啟動容器志于。前面提到過窍荧,例子如下:
    $ docker run -itd --rm --name myubuntu ubuntu bash
    # 手動進入容器中
    $ docker exec [OPTIONS] 容器名字或ID COMMAND [ARG...]
    # OPTIONS:
    #   -i, --interactive          保持與標注輸入的連接
    #   -t, --tty                  將容器與終端綁定
    # COMMAND: shell指令 -> bash
    # [ARG...]: shell命令的參數(shù)

注:docker run這種創(chuàng)建、啟動并直接進入容器的方式使用頻率很低恨憎。建議多多使用docker exec這種方式蕊退。如果docker exec不加-it參數(shù),在終端將無法顯示出進入容器的效果憔恳。
同時COMMAND位置這次不是可選填項瓤荔。沒有任何操作,請?zhí)韇ash钥组。


在這里插入圖片描述
    # 容器內輸入
    $ exit
    # 或直接按Ctrl+D输硝,均可退出容器

2.8 容器的日志、信息程梦、端口和重命名

    # 查看容器日志
    $ docker logs 容器名或ID
    # 查看容器的詳細信息
    $ docker inspect 容器名或ID
    # 查看本機和容器的端口映射
    $ docker port 容器名或ID
    # 容器重命名
    $ docker rename 容器名 新的容器名
在這里插入圖片描述
  1. 容器運行一段時間后才會有日志生成,点把。如果沒有生成, 是看不到的橘荠;
  2. 查看容器詳細信息返回的是json對象。關于輸出格式的設定郎逃,可查閱:https://yq.aliyun.com/articles/230067

2.9 基于容器的鏡像導入和導出

導出容器的鏡像文件

    # 第一種
    $ docker export -o 導出的鏡像的名字(自定義) 容器名或ID
    # 第二種               
    $ docker export 容器名或ID > 導出的鏡像的名字(自定義)

鏡像導入到本地的鏡像倉庫中

    $ cat 要導入的鏡像文件 | docker import - 新的鏡像名:tag
在這里插入圖片描述

2.10 對比

docker save 和 docker export:

  1. 使用save是基于倉庫內的鏡像導出文件, 不能對鏡像進行修改哥童;
  2. export通過容器導出, 原始鏡像可以通過啟動容器進行修改;
  3. 通過export導出鏡像, 會丟失鏡像的歷史記錄褒翰;
  4. 如果沒有通過容器對進行做任何修改, export導出的鏡像小贮懈。

docker load 和 docker import:

  1. 都是將導出的鏡像導入到本地鏡像倉庫
  2. 如果使用load進行導入: 鏡像名無法修改优训;
  3. 如果使用import進行導入: 鏡像名是可以修改的朵你。

在網(wǎng)上找到一個圖把這些指令的操作關系描述的很到位。最后分享給大家:


在這里插入圖片描述

ps:
本人熱愛圖靈揣非,熱愛中本聰抡医,熱愛V神,熱愛一切被梨花照過的姑娘早敬。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末忌傻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子搁嗓,更是在濱河造成了極大的恐慌,老刑警劉巖箱靴,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腺逛,死亡現(xiàn)場離奇詭異,居然都是意外死亡衡怀,警方通過查閱死者的電腦和手機棍矛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抛杨,“玉大人够委,你說我怎么就攤上這事〔老郑” “怎么了茁帽?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長屈嗤。 經常有香客問我潘拨,道長,這世上最難降的妖魔是什么饶号? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任铁追,我火速辦了婚禮,結果婚禮上茫船,老公的妹妹穿的比我還像新娘琅束。我一直安慰自己扭屁,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布涩禀。 她就那樣靜靜地躺著料滥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪埋泵。 梳的紋絲不亂的頭發(fā)上幔欧,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音丽声,去河邊找鬼礁蔗。 笑死,一個胖子當著我的面吹牛雁社,可吹牛的內容都是我干的浴井。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼霉撵,長吁一口氣:“原來是場噩夢啊……” “哼磺浙!你這毒婦竟也來了?” 一聲冷哼從身側響起徒坡,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撕氧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后喇完,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伦泥,經...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年锦溪,在試婚紗的時候發(fā)現(xiàn)自己被綠了不脯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡刻诊,死狀恐怖防楷,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情则涯,我是刑警寧澤复局,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站粟判,受9級特大地震影響肖揣,放射性物質發(fā)生泄漏。R本人自食惡果不足惜浮入,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一龙优、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦彤断、人聲如沸野舶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽平道。三九已至,卻和暖如春供炼,著一層夾襖步出監(jiān)牢的瞬間一屋,已是汗流浹背墩虹。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工薛窥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留束凑,地道東北人懈凹。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像妨马,于是被迫代替她去往敵國和親进每。 傳聞我的和親對象是個殘疾皇子创橄,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內容