欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          Docker基礎(chǔ)命令詳解 – 鏡像及容器操作

          前言

          ? 上篇文章介紹了有關(guān)Docker的基礎(chǔ)與Linux下docker的安裝,本文主要講解安裝docker后的基礎(chǔ)使用方法以及命令的介紹,主要是docker鏡像操作及容器操作命令。

          ? 當(dāng)然,docker的相關(guān)命令非常多,可以使用docker help命令查看對應(yīng)目錄以及相關(guān)提示命令。

          Docker鏡像操作命令

          [root@docker ~]# which docker  /usr/bin/docker

          1、鏡像搜索:docker search

          命令描述:從Docker Hub中搜索并且顯示你所需要的鏡像

          命令格式:docker search [options] term

          Options:    -f, --filter filter   Filter output based on conditions provided         --format string   Pretty-print search using a Go template        --limit int       Max number of search results (default 25)        --no-trunc        Don't truncate output     -s: -s 100 #表示收藏數(shù)大于100的鏡像

          實例操作演示:

          [root@docker ~]# docker search nginx  NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED  nginx                              Official build of Nginx.                        12968               [OK]                  jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1772                                    [OK]  richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   764                                     [OK]  ...//省略部分內(nèi)容    [root@docker ~]# docker search -s 100 nginx  Flag --stars has been deprecated, use --filter=stars=3 instead  NAME                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED  nginx                     Official build of Nginx.                        12968               [OK]                  jwilder/nginx-proxy       Automated Nginx reverse proxy for docker con…   1772                                    [OK]  richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM capable of…   764                                     [OK]  linuxserver/nginx         An Nginx container, brought to you by LinuxS…   104                   

          簡要說明:

          • NAME:鏡像名稱
          • DESCRIPTION:該鏡像的描述信息
          • STARS:星級,越高則說明使用者,喜歡的人越多
          • OFFICIAL:是否為官方發(fā)布
          • AUTOMATED:自動創(chuàng)建

          該命令作為檢索命令,下面我們需要獲取你檢索后選擇的每個鏡像

          2、鏡像獲取:docker pull

          命令描述:從鏡像倉庫中拉?。ㄐ蜗蟮恼f法嘛)或者更新指定鏡像

          命令格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

          Options:    -a, --all-tags                Download all tagged images in the repository        --disable-content-trust   Skip image verification (default true)    -q, --quiet                   Suppress verbose output

          OPTIONS說明:

          • -a :拉取所有 tagged 鏡像
          • –disable-content-trust :忽略鏡像的校驗,默認(rèn)開啟

          實例演示:拉取nginx鏡像為例

          [root@docker ~]# docker pull nginx  Using default tag: latest  latest: Pulling from library/nginx  c499e6d256d6: Pull complete   74cda408e262: Pull complete   ffadbd415ab7: Pull complete   Digest: sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596  Status: Downloaded newer image for nginx:latest  docker.io/library/nginx:lates

          這樣我們就拉取了一個nginx鏡像,那么我們怎么查看呢?

          3、鏡像信息查看:docker images

          命令描述:列出本地鏡像

          命令格式:docker images [OPTIONS] [REPOSITORY[:TAG]]

          OPTIONS說明:  -a :列出本地所有的鏡像(含中間映像層,默認(rèn)情況下,過濾掉中間映像層);  --digests :顯示鏡像的摘要信息;  -f :顯示滿足條件的鏡像;  --format :指定返回值的模板文件;  --no-trunc :顯示完整的鏡像信息;  -q :只顯示鏡像ID。

          實例演示:

          [root@docker ~]# docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  nginx               latest              ed21b7a8aee9        6 days ago          127MB  #等價于下面的命令  [root@docker ~]# docker image ls   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  nginx               latest              ed21b7a8aee9        6 days ago          127MB  

          簡要說明:

          • REPOSITORY:倉庫名稱
          • TAG:標(biāo)簽
          • IMAGE ID:鏡像id
          • CREATE:創(chuàng)建狀態(tài)(按照時間)
          • SIZE:文件大小

          PS:補(bǔ)充使用docker inspect IMAGE ID可以查看鏡像的詳細(xì)信息。

          下面看看這個TAG的作用

          4、鏡像標(biāo)簽操作:docker tag

          命令描述:標(biāo)記本地鏡像,將其歸入某一倉庫

          命令格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

          實例演示:

          [root@docker ~]# docker tag nginx:latest nginx:lokott  [root@docker ~]# docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  nginx               latest              ed21b7a8aee9        6 days ago          127MB  nginx               lokott              ed21b7a8aee9        6 days ago          127MB  

          假設(shè)我們創(chuàng)建的時候發(fā)現(xiàn)有錯誤,或者在不需要的時候怎么刪除鏡像呢?繼續(xù)來看哈!

          5、刪除鏡像:docker rmi

          命令描述:刪除本地一個或多個鏡像

          命令格式:docker rmi [OPTIONS] IMAGE [IMAGE…]

          Options:    -f, --force      Force removal of the image        --no-prune   Do not delete untagged parents  

          實例演示:

          [root@docker ~]# docker rmi nginx:lokott   Untagged: nginx:lokott  [root@docker ~]# docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  nginx               latest              ed21b7a8aee9        6 days ago          127MB    [root@docker ~]# docker rmi nginx:latest   Untagged: nginx:latest  Untagged: nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596  Deleted: sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291  Deleted: sha256:8a305f371a6c3c445a1dfc500c1364743868a269ab8cdaf95902692e82168352  Deleted: sha256:d079ef06ec1f10a8050887365f9a940b39547ba6bcc46b16a463e740984f3223  Deleted: sha256:c3a984abe8a88059915bb6c7a1d249fd1ccc16d931334ac8816540b0eb686b45  

          刪除打標(biāo)簽的鏡像其實本質(zhì)就是一個脫去標(biāo)簽的操作,與刪除原鏡像文件是不一樣的。

          盡量不要使用刪除ID號的方式刪除鏡像,并且注意盡量刪除依賴該鏡像的所有容器后再刪除這個鏡像。

          那么我們需要考慮我們拉取了鏡像之后怎么存出鏡像呢?這就需要使用下面的命令來實現(xiàn)了。

          6、存出鏡像:docker save

          ? 所謂存出,我們設(shè)想這樣的場景應(yīng)用:當(dāng)需要將一臺機(jī)器上的鏡像遷移到另一臺機(jī)器上的時候,需要將鏡像保存成本地文件,這個過程就叫做存出鏡像。

          ? 你可以簡單理解為將鏡像打成壓縮包方便使用

          命令描述:將指定鏡像保存成 tar 歸檔文件

          命令格式:docker save [OPTIONS] IMAGE [IMAGE…]

          OPTIONS 說明:  -o :輸出到的文件。

          實例演示:

            [root@docker ~]# docker save -o /opt/nginx nginx:latest    [root@docker ~]# ll /opt/  總用量 127560  drwx--x--x. 4 root root        28 4月   6 09:45 containerd  -rw-------. 1 root root 130618880 4月   6 14:04 nginx  drwxr-xr-x. 2 root root         6 10月 31 2018 rh  

          那么有存出,就必定有對應(yīng)的載入操作,我們將存出的文件從本地復(fù)制一份到其他機(jī)器上是,我們需要使用這個鏡像,可以通過下面的命令實現(xiàn)載入鏡像

          7、載入鏡像:docker load

          命令描述:載入鏡像文件

          命令格式:docker load [OPTIONS]

          Options:    -i, --input string   Read from tar archive file, instead of STDIN    -q, --quiet          Suppress the load output  

          實例演示:

          [root@docker ~]# docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  #一:  [root@docker ~]# docker load < /opt/nginx   c3a984abe8a8: Loading layer  72.48MB/72.48MB  99134ec7f247: Loading layer  58.11MB/58.11MB  d37eecb5b769: Loading layer  3.584kB/3.584kB  Loaded image: nginx:latest  [root@docker ~]# docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  nginx               latest              ed21b7a8aee9        6 days ago          127MB  #二:從tar存檔文件中讀取,而不是從STDIN中讀取  [root@docker ~]# docker load --input /opt/nginx #或者使用-i代替--input也是一樣的  c3a984abe8a8: Loading layer  72.48MB/72.48MB  99134ec7f247: Loading layer  58.11MB/58.11MB  d37eecb5b769: Loading layer  3.584kB/3.584kB  Loaded image: nginx:latest

          8、上傳鏡像:docker login (不做細(xì)說以及演示)

          命令描述:將自己本地的鏡像制作好后上傳到倉庫中

          命令格式:docker login

          結(jié)合docker push NAME[:TAG]使用

          Docker容器操作命令

          關(guān)于Docker容器的操作筆者換一種風(fēng)格來介紹,但是還是會通過實例來方便大家理解。

          首先,容器簡單而言,是基于鏡像的一個運(yùn)行實例,是獨立運(yùn)行的一個或一組應(yīng)用以及其所必需的運(yùn)行環(huán)境,包括文件系統(tǒng)、系統(tǒng)類庫、shell環(huán)境等。鏡像是只讀模板,而容器會給這個只讀模板一個額外的可寫層。

          接下來就容器來講述具體的操作命令。

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

          ? 容器創(chuàng)建就是將鏡像加載到容器的過程,因為是docker是輕量級的應(yīng)用工具,用戶可以隨時進(jìn)行創(chuàng)建或者刪除。新建的容器默認(rèn)處于停止?fàn)顟B(tài),不允許任何程序,需要在其中發(fā)起一個進(jìn)程來啟動容器,這個進(jìn)程就是這個容器的唯一進(jìn)程,因此在該進(jìn)程結(jié)束的時候,容器也會完全停止。停止的容器可以重新啟動并且保留原來的修改。

          容器的創(chuàng)建

          容器創(chuàng)建命令:docker create

          命令格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG…]

          常用的options:

          • -i:讓容器的輸入保持打開
          • -t:讓docker分配一個偽終端

          實例演示:

          [root@docker ~]# docker create -it nginx:latest /bin/bash  a1a2e8468189b146b0215971cf76947987d8fc3f42c58e77371e8d48afb030d1  [root@docker ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  a1a2e8468189        nginx:latest        "/bin/bash"         7 seconds ago       Created                                 gallant_feynman  

          相關(guān)說明:

          CONTAINER ID:容器ID號

          IMAGE:使用的鏡像

          COMMAND :

          CREATED:顯示操作時間

          STATUS:顯示狀態(tài),created表示已創(chuàng)建

          PORTS:端口 信息和使用的連接類型(tcp/udp)

          NAMES:自動分配容器的名稱

          容器的啟動

          命令:docker start

          命令格式:docker start [OPTIONS] CONTAINER [CONTAINER…]

          實例演示:

          [root@docker ~]# docker start a1a2e8468189  a1a2e8468189  [root@docker ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  a1a2e8468189        nginx:latest        "/bin/bash"         10 minutes ago      Up 2 seconds        80/tcp              gallant_feynman  

          啟動后,發(fā)現(xiàn)端口信息出來了,并且顯示是up狀態(tài),表示容器已經(jīng)是啟動狀態(tài)了。

          下面看另一種啟動容器的方式:

          [root@docker ~]# docker run CentOS /usr/bin/bash -c ls /  Unable to find image 'centos:latest' locally  latest: Pulling from library/centos  8a29a15cefae: Pull complete   Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700  Status: Downloaded newer image for centos:latest  bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var  [root@docker ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES  4835176a7d8e        centos              "/usr/bin/bash -c ls…"   About a minute ago   Exited (0) About a minute ago                       affectionate_keldysh  a1a2e8468189        nginx:latest        "/bin/bash"              28 minutes ago       Up 17 minutes                   80/tcp              gallant_feynman  

          -c參數(shù)表示的是需要執(zhí)行的命令,這種方式適用于一次執(zhí)行,Exited (0) 表示正常正確退出,及終止運(yùn)行。

          docker run的命令執(zhí)行流程為:先從本地查找鏡像(本地沒有image不表示容器不依賴image),如果沒有會從公共倉庫中下載;再通過鏡像創(chuàng)建并且啟動一個容器;分配一個文件系統(tǒng)給容器,在只讀的鏡像層外面掛載一層可讀寫層;從宿主機(jī)配置的網(wǎng)橋接口中橋接一個虛擬接口到容器中;分配一個地址池中的IP地址給容器;執(zhí)行用戶指定的應(yīng)用程序;執(zhí)行之后容器被終止(后臺運(yùn)行除外)。

          后臺運(yùn)行:run 后面加參數(shù)-d即可。

          2、容器運(yùn)行與終止

          想要在運(yùn)行中的容器停下來,使用docker stop 命令

          命令格式:docker stop [OPTIONS] CONTAINER [CONTAINER…]

          實例演示:

          [root@docker ~]# docker stop a1a2e8468189  a1a2e8468189  [root@docker ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES  4835176a7d8e        centos              "/usr/bin/bash -c ls…"   9 minutes ago       Exited (0) 9 minutes ago                       affectionate_keldysh  a1a2e8468189        nginx:latest        "/bin/bash"              36 minutes ago      Exited (0) 3 seconds ago                       gallant_feynman  

          3、容器的進(jìn)入

          想要進(jìn)入容器進(jìn)行相應(yīng)操作時可以使用docker exec命令進(jìn)入運(yùn)行著的容器。

          命令格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]

          [root@docker ~]# docker ps -a #檢查容器是否是運(yùn)行狀態(tài)(up)  CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES  4835176a7d8e        centos              "/usr/bin/bash -c ls…"   12 minutes ago      Exited (0) 12 minutes ago                       affectionate_keldysh  a1a2e8468189        nginx:latest        "/bin/bash"              38 minutes ago      Up 4 seconds                80/tcp              gallant_feynman    [root@docker ~]# docker exec -it a1a2e8468189 /bin/bash #進(jìn)入偽終端  root@a1a2e8468189:/# ls  bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var    root@a1a2e8468189:/# exit #使用exit退出偽終端  exit  [root@docker ~]#   

          4、容器的導(dǎo)出和導(dǎo)入

          類似鏡像,用戶也可以將容器從一臺機(jī)器遷移到另一臺機(jī)器。在遷移過程中,首先需要將已經(jīng)創(chuàng)建好的容器導(dǎo)出為文件,使用docker export實現(xiàn),無論這個容器是處于運(yùn)行狀態(tài)還是停止?fàn)顟B(tài)均可以導(dǎo)出。導(dǎo)出之后可將導(dǎo)出文件傳輸?shù)狡渌麢C(jī)器,通過對應(yīng)的導(dǎo)入命令實現(xiàn)遷移過程。

          容器導(dǎo)出命令:docker export

          命令格式:docker export [OPTIONS] CONTAINER

          實例演示:一個運(yùn)行狀態(tài)一個停止?fàn)顟B(tài),都演示

          [root@docker ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES  4835176a7d8e        centos              "/usr/bin/bash -c ls…"   21 minutes ago      Exited (0) 21 minutes ago                       affectionate_keldysh  a1a2e8468189        nginx:latest        "/bin/bash"              48 minutes ago      Up 9 minutes                80/tcp              gallant_feynman  

          運(yùn)行中的容器導(dǎo)出:

          [root@docker ~]# docker export a1a2e8468189 > nginx_contain  [root@docker ~]# ls  anaconda-ks.cfg  initial-setup-ks.cfg  nginx  nginx_contain  公共  模板  視頻  圖片  文檔  下載  音樂  桌面  [root@docker ~]# ll  總用量 253448  -rw-------. 1 root root      1954 4月   6 08:49 anaconda-ks.cfg  -rw-r--r--. 1 root root      2002 4月   6 08:50 initial-setup-ks.cfg  -rw-------. 1 root root 130618880 4月   6 14:04 nginx #鏡像存出的文件  -rw-r--r--. 1 root root 128899072 4月   6 16:04 nginx_contain #容器導(dǎo)出文件 二者權(quán)限不同  

          終止的容器導(dǎo)出:

          [root@docker ~]# docker export 4835176a7d8e > centos_contain  [root@docker ~]# ls  anaconda-ks.cfg  initial-setup-ks.cfg  nginx_contain  模板  圖片  下載  桌面  centos_contain   nginx                 公共           視頻  文檔  音樂  

          導(dǎo)出的文件從本地拷貝到遠(yuǎn)程服務(wù)器,之后使用docker import命令導(dǎo)入,成為鏡像

          容器導(dǎo)入命令:docker import

          命令格式:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

          實例演示:

          [root@docker ~]# docker import centos_contain centos_new:54  sha256:f32b5354c81de72a71af50468d09803aa9e62e08741e3cd3e84c10c9a74e2204  [root@docker ~]# docker images  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE  centos_new          54                  f32b5354c81d        10 seconds ago      0B  nginx               latest              ed21b7a8aee9        6 days ago          127MB  centos              latest              470671670cac        2 months ago        237MB

          或者使用cat 文件名 | docker import – 鏡像名稱:tag 執(zhí)行命令也可以的

          5、容器的刪除

          容器的刪除:docker rm

          命令格式:docker rm [OPTIONS] CONTAINER [CONTAINER…]

          實例演示:

          [root@docker ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES  4835176a7d8e        centos              "/usr/bin/bash -c ls…"   31 minutes ago      Exited (0) 31 minutes ago                       affectionate_keldysh  a1a2e8468189        nginx:latest        "/bin/bash"              58 minutes ago      Up 19 minutes               80/tcp              gallant_feynman  

          刪除已終止的容器:

          [root@docker ~]# docker rm 4835176a7d8e  4835176a7d8e  [root@docker ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  a1a2e8468189        nginx:latest        "/bin/bash"         59 minutes ago      Up 20 minutes       80/tcp              gallant_feynman  

          刪除成功了!

          刪除還在運(yùn)行中的容器:

          [root@docker ~]# docker rm a1a2e8468189   Error response from daemon: You cannot remove a running container a1a2e8468189b146b0215971cf76947987d8fc3f42c58e77371e8d48afb030d1. Stop the container before attempting removal or force remove  

          發(fā)現(xiàn)Error了,不能這樣刪除運(yùn)行狀態(tài)中的容器,提示你的操作是嘗試刪除容器前停止容器的運(yùn)行或者強(qiáng)制刪除

          推薦前者,后者只需要如下操作,但盡量不要隨意使用哈!

          [root@docker ~]# docker rm a1a2e8468189 -f  a1a2e8468189  [root@docker ~]# docker ps -a  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES  

          友情提示:docker默認(rèn)的存儲目錄在/var/lib/docker目錄下,docker的鏡像、容器、日志等內(nèi)容全部都存儲在此,當(dāng)然也可以單獨使用大容量的分區(qū)來存儲這些內(nèi)容,并且一般選擇建立在LVM邏輯卷,從而方便后續(xù)擴(kuò)容操作。

          總結(jié)

          ? 本文講述的是docker基礎(chǔ)命令(鏡像和容器)的操作,通過實實在在的實際案例方便理解。對于docker的介紹與安裝可以查閱筆者的前一篇文章。

          ? 感謝閱讀!

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號