Docker 入門教程(鏡像與容器的使用) 二

Docker 鏡像與容器的使用

Docker 系統(tǒng)有兩個程序:docker 服務(wù)端和 docker 客戶端。其中 docker 服務(wù)端是一個服務(wù)進(jìn)程,管理著所有的容器。docker 客戶端則扮演著 docker 服務(wù)端的遠(yuǎn)程控制器,可以用來控制 docker 的服務(wù)端進(jìn)程。大部分情況下 docker 服務(wù)端和客戶端運行在一臺機(jī)器上。

一 搜索可用的docker鏡像

命令行的格式為:docker search 鏡像名字,例如:

$ docker search ubuntu
NAME                             DESCRIPTION                                     STARS     OFFICIAL    AUTOMATED
ubuntu                           Ubuntu is a Debian-based Linux operating sys…   9978      [OK]
dorowu/ubuntu-desktop-lxde-vnc   Docker image to provide HTML5 VNC interface …   345                   [OK]
rastasheep/ubuntu-sshd           Dockerized SSH service, built on top of offi…   231                   [OK]
consol/ubuntu-xfce-vnc           Ubuntu container with "headless" VNC session…   187                   [OK]
ubuntu-upstart                   Upstart is an event-based replacement for th…   99        [OK]
ansible/ubuntu14.04-ansible      Ubuntu 14.04 LTS with ansible                   97                    [OK]
neurodebian                      NeuroDebian provides neuroscience research s…   59        [OK]
..........
二 下載容器鏡像

命令行的格式為:docker pull 鏡像名字,例如:

# 下載 latest 版本的鏡像
$ docker pull ubuntu

# 下載指定版本號的鏡像
$ docker pull ubuntu:18.04
三 運行容器

命令行的格式為:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]。
1、 在容器中運行 hello world

$ docker run ubuntu:18.04 echo "hello world"
hello world

2、更新容器中的系統(tǒng)

$ docker run ubuntu:18.04 apt update

備注:apt update 命令執(zhí)行完畢之后,容器就會停止,但對容器的改動不會丟失。

四 Docker 鏡像、容器的查看與刪除

1、查詢鏡像 docker images ,可以看到所有已經(jīng)存在的鏡像的 ID (IMAGE ID)。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              18.04               a2a15febcdf3        5 weeks ago         64.2MB
hello-world         latest              fce289e99eb9        8 months ago        1.84kB

2、查詢?nèi)萜鳎?code>docker ps -a,可以看到所有容器的 ID (CONTAINER ID)。

$ docker ps -a
CONTAINER ID   IMAGE               COMMAND        CREATED      STATUS                   PORTS     NAMES
ce8a07737e4f   testnet:18.04       "/bin/bash"    5 days ago   Exited (0) 5 days ago              test1
df329130a249   ubuntu_base:18.04   "/bin/bash"    2 weeks ago  Exited (0) 5 days ago              test2
39d2edba3611   ubuntu:18.04        "/bin/bash"    2 weeks ago  Exited (0) 2 weeks ago             musing_lalande

3、先刪除容器:docker rm 容器ID

$ docker rm ce8a07737e4f

4、再刪除鏡像:docker rmi 鏡像ID

$ docker rmi 9764aa177ecf

注意:

  • 刪除前需要保證容器是停止的 docker stop test1
  • 順序是需要先刪除容器,再刪除鏡像
  • 需要注意刪除鏡像和容器的命令不一樣。
$ docker rm CONTAINER_ID   刪除容器
$ docker rmi IMAGE_ID      刪除鏡像
五 保存對容器的修改

當(dāng)你對某一個容器做了修改之后(通過在容器中運行某一個命令),可以把對容器的修改保存下來,這樣下次可以從保存后的最新狀態(tài)運行該容器。docker中保存狀態(tài)的過程稱之為 committing,它保存新舊狀態(tài)之間的區(qū)別,從而產(chǎn)生一個新的版本。
命令行的格式為:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

# 1、使用 docker ps -l 命令獲得安裝完ping命令之后容器的id
$ docker ps -l
CONTAINER ID   IMAGE          COMMAND        CREATED        STATUS                     PORTS               NAMES
e5d13254f0fb   ubuntu:18.04   "apt update"   3 minutes ago  Exited (0) 3 minutes ago                       trusting_meninsky

# 2、使用 commit 提交更改
$ docker commit e5d13254f0fb  ubuntu-update:18.04

# 3、查看新提交的鏡像
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu-update       18.04               3f68ea2d04da        6 seconds ago       91.4MB
六 后臺運行容器并訪問

1、后臺運行容器
命令行的格式為:docker run -itd IMAGE [COMMAND] [ARG...]
參數(shù)說明:

  • -i : 讓容器的標(biāo)準(zhǔn)輸入保持打開。
  • -t : 分配一個偽終端并綁定到容器的標(biāo)準(zhǔn)輸入上。
  • -d : 讓容器在后臺運行。

Docker 中系統(tǒng)鏡像的缺省命令是 bash,如果不加 -it bash 命令執(zhí)行后會自動會退出。這是因為如果沒有銜接輸入流,本身就會馬上結(jié)束。加 -it 后 docker 命令會為容器分配一個偽終端,并接管其 stdin/stdout 支持交互操作,這時候 bash 命令不會自動退出。

$ docker run -itd ubuntu:18.04 /bin/bash

$ docker ps -l
docker ps -l
CONTAINER ID   IMAGE          COMMAND        CREATED        STATUS         PORTS     NAMES
77d851adc856   ubuntu:18.04   "/bin/bash"    8 minutes ago  Up 8 minutes             suspicious_golick

2、使用 exec 命令訪問容器
無需任何配置訪問容器最簡單的兩種方式:

# 容器外執(zhí)行命令:`docker exec CONTAINER_ID Command`
$ docker exec 77d851adc856 ls -l /

# 容器內(nèi)執(zhí)行命令:`docker exec -it CONTAINER_ID /bin/bash
$ docker exec -it 77d851adc856 /bin/bash

# 退出容器:直接使用 exit 命令,退出后容器仍然在后臺繼續(xù)執(zhí)行。
參考

ubuntu 安裝 docker 以及 docker 入門教程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容