Docker學習筆記——鏡像、容器、倉庫

Docker三個基本概念

  • 鏡像(image)

  • 容器(container)

  • 倉庫(Repository)

  1. 鏡像(image)

搜索鏡像

docker search nginx

獲取鏡像

docker pull nginx

指定Registry地址和具體的倉庫名下載鏡像,沒有指定Registry地址,默認從Docker Hub上下載

docker pull jwilder/nginx-proxy

查看鏡像

docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mongo               latest              b39de1d79a53        2 weeks ago         359MB
nginx               latest              b8efb18f159b        4 weeks ago         107MB
mysql               latest              c73c7527c03a        4 weeks ago         412MB

列表中包含倉庫名、標籤、鏡像ID、創建時間及鏡像大小

查看鏡像是可以指定只顯示鏡像ID或者按照特定格式顯示鏡像內容

docker images -q
b39de1d79a53
b8efb18f159b
c73c7527c03a
docker images --format "table ``.`ID`\t``.`Repository`\t``.`Tag`"
IMAGE ID            REPOSITORY          TAG
b39de1d79a53        mongo               latest
b8efb18f159b        nginx               latest
c73c7527c03a        mysql               latest

刪除鏡像

docker rmi 鏡像ID

注意沒有標籤名稱的,tag顯示爲none表示虛懸鏡像,會佔用系統資源,可以使用下面命令清除

docker rmi $(docker images -q -f dangling=true)

2、容器(container)

創建並運行容器

docker run centos /bin/echo 'hello world!'
hello world!

docker run 常用參數

   -d 後臺運行容器,並返回容器ID;
   -i 以交互模式運行容器,通常與 -t 同時使用;
   -t 爲容器重新分配一個僞輸入終端,通常與 -i 同時使用;

   --name="web01" 爲容器指定一個名稱;

   -p 指定容器到主機的端口映射;

   -P 映射容器端口到主機的隨機端口;

   --dns 8.8.8.8 指定容器使用的DNS服務器,默認和宿主一致;
   -h "web01" 指定容器的hostname;
   -e username="docker" 設置環境變量;

   -v 綁定數據卷

docker run -i -t centos /bin/bash
docker run -d --name nginx01 -p 80:80  nginx

查看所有容器

docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                NAMES
0f3bae62200a        nginx               "nginx -g 'daemon ..."   14 seconds ago      Up 10 seconds               0.0.0.0:80->80/tcp   nginx01
b1cdeb403e25        centos              "/bin/bash"              3 minutes ago       Exited (0) 2 minutes ago                         nifty_bohr
aa243f5f4595        centos              "/bin/echo 'hello ..."   22 minutes ago      Exited (0) 22 minutes ago                        confident_shaw

列表中包含容器ID,鏡像名稱,運行命令,創建時間,容器狀態,端口映射,容器名稱,創建容器時建議給容器起一個有意義的名稱便於識別,默認會隨機生成一個容器名稱

停止容器

docker stop 容器ID

重啓容器

docker restart 容器ID

刪除容器

docker rm 容器ID

默認情況下,rm不會刪除正在運行的容器,所以可以通過docker rm $(docker ps -a -q)刪除所有未運行的容器

進入容器

docker exec -it nginx01 bash

還可通過docker attach 容器ID和nsenter的方式進入容器,前者不安全,後者有點麻煩,就不記錄了

退出容器

exit

3、倉庫(Repository)

倉庫(Repository)是集中存放鏡像的地方,一個容易混淆的概念是註冊服務器(Registry)。實際上註冊服務器是管理倉庫的具體服務器,每個服務器上可以有多個倉庫,而每個倉庫下面有多個鏡像。從這方面來說,倉庫可以被認爲是一個具體的項目或目錄。

目前鏡像默認都使用Docker Hub的公共倉庫,國內訪問緩慢可以使用一些知名的鏡像加速源,可參考Docker學習筆記——Docker安裝部署或者可以構建私有的倉庫,後續文章將詳細介紹。


知行辦公,專業移動辦公平臺
【總監】十二春秋之,[email protected]
【Master】zelo,[email protected]
【運營】運維艄公[email protected]
【產品設計】流浪貓,[email protected]
【體驗設計】兜兜,[email protected]
【iOS】淘碼小工,[email protected];iMcG33K,[email protected]
【Android】人猿居士,[email protected];思路的頓悟,[email protected]
【java】首席工程師MR_W,[email protected]
【測試】土鏡問道,[email protected]
【數據】喜樂多,[email protected]
【安全】保密,你懂的。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章