首頁 > 軟體

Docker容器映象相關命令基本介紹與使用

2022-03-21 16:00:09

一、Docker 介紹

Docker 是一個用於開發、釋出和執行應用程式的開放平臺。Docker 可以將應用程式與基礎架構分離(即 不再過於需要底層支援),以便我們可以快速交付軟體。使用 Docker,我們可以像管理應用程式一樣管理基礎架構。Docker 官方

Docker 優勢:

靈活: 即使應用過於複雜,我們也可以使用 Docker 來將應用進行容器化。

輕量級: 因為 Docker 容器是使用宿主機共用的核心,所以不需要額外的硬體支援。

應用隔離: 使用 Docker 執行的容器,可以隔離不同應用程式間的互相影響(即,每個容器都是獨立的)

1.Docker 架構

Docker 使用的是 C/S 架構,Docker Client 用於和 Docker 的守護行程通訊(守護行程就是 Server),守護行程可以用來構建、執行和分發 Docker 容器等操作。Docker Client 和守護行程可以在同一系統上執行,或者將 Docker Client 遠端連線到守護行程。使用 REST API 協定,並通過 UNIX 通訊端或網路介面進行通訊。另一個 Docker Client 是 Docker Compose(允許我們將一組容器組成的應用程式)

Docker 的架構我們不需要過於關注,因為一般來說 Docker 的 Client 和 Docker 守護行程都是在同一臺伺服器上執行。

2.Docker 三大核心

這裡要說的 Docker 三大核心,分別是 image 映象,container 容器,repository 倉庫;這可以說是 Docker 最重要的部分。

1)映象

Docker 映象是 Docker 容器執行時的唯讀模板,映象可以用來建立 Docker 容器(每一個映象都由一系列的層組成)

2)容器

Docker 主要就是利用容器來執行應用,一個 Docker 容器內可以說包含了某個應用執行所需要的環境。每一個 Docker 容器都是從映象建立出來的。可以說容器就是映象建立的執行範例,它可以被啟動,停止,刪除等。而且每個容器都是互相隔離的,保證安全的平臺。

3)倉庫

Docker 倉庫主要就是 用來集中儲存映象的地方,當我們建立了自己的映象後,可以使用 push 命令將它上傳到公共倉庫(Public)或者私用倉庫(Private),這樣的好處是,當我們需要在另外的伺服器上使用這個映象時,可以直接從倉庫進行拉取(速度相對較快)

二、Docker 安裝

準備工作:

主機名作業系統IP 地址軟體包
DockerCentOS 7.x192.168.1.4docker-ce-19.03.12 docker-ce-cli-19.03.12

1.下載 Docker 軟體包

1)安裝基礎包

[root@Docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2

2)設定 Docker 的 yum 源

[root@Docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Docker ~]# yum-config-manager 
--add-repo 
https://download.docker.com/linux/centos/docker-ce.repo

3)安裝 Docker

我們可以使用 yum list docker-ce --showduplicates | sort -r 命令來檢視 Docker 的所有版本。

[root@Docker ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Docker ~]# yum-config-manager 
--add-repo 
https://download.docker.com/linux/centos/docker-ce.repo

4)啟動 Docker 並驗證

[root@Docker ~]# systemctl enable docker --now										# 設定開機自啟並啟動
[root@Docker ~]# docker version														# 檢視 Docker 版本

5)設定 Docker 加速器

[root@Docker ~]# cat <<END > /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://ipbtg5l0.mirror.aliyuncs.com"
    ]
}
END
[root@Docker ~]# systemctl daemon-reload && systemctl restart docker				# 重啟 Docker

2.Docker 基礎命令介紹

下面我們主要介紹映象和容器相關的命令,因為倉庫相關命令不是很多,也就是 pull push 等命令。

1)映象相關命令

1)檢視當前 Docker 的所有映象

// 因為我們的 Docker 是剛安裝的. 所以沒有顯示任何映象
[root@Docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

上面輸出結果分別是:映象名、映象對應的標籤、映象 ID 號、建立時間、映象大小。

2)檢視 Docker 倉庫中的 busybox 映象

[root@Docker ~]# docker search busybox
NAME                      DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
busybox                   Busybox base image.                             2447                [OK]                
progrium/busybox                                                          70                                      [OK]
radial/busyboxplus        Full-chain, Internet enabled, busybox made f…   45                                      [OK]
......

我們可以使用 search 來搜尋 Docker 倉庫中的映象,上面輸出結果分別是:映象名、描述資訊、標星、官方映象、自動構建。

3)拉取 busybox 映象

[root@Docker ~]# docker pull busybox:1.28.4								# 指定映象版本號拉取 (latest 表示最新版)
1.28.4: Pulling from library/busybox									# 從這個倉庫進行拉取
07a152489297: Pull complete												# 拉取完成
Digest: sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47		# 這就是映象的層 (也算是個識別符號)
Status: Downloaded newer image for busybox:1.28.4						# 下載的新映象名稱和版本號
docker.io/library/busybox:1.28.4										# 完整倉庫地址

4)給映象進行打標籤(類似於別名操作)

[root@Docker ~]# docker tag busybox:1.28.4 testbusybox:test

tag 命令在有些時候還是蠻關鍵的,比如說我們要拉取的映象在國外,但是由於網路原因,導致我們無法進行拉取,此時我們可以在國內的映象倉庫拉取個同樣的映象,然後來使用 tag 命令來進行打標籤操作,改成要拉取國外映象的名稱即可。

5)將 busybox 映象匯出

[root@Docker ~]# docker save -o busybox.tgz busybox:1.28.4

6)將 busybox 映象匯入

[root@Docker ~]# docker load -i busybox.tgz

docker rmi:通過映象名進行刪除(加上 -f 可以實現基於映象 ID 刪除)

2)容器相關命令

1)建立一個容器

[root@Docker ~]# docker create -it --name busybox busybox:1.28.4 /bin/sh

-i:表示讓容器的輸入保持開啟;

-t:表示給容器分配一個偽終端(就是我們後面加的 /bin/bash

docker ps -a:表示檢視所有執行的容器(不管容器處於任何狀態,都會進行顯示)

2)啟動一個容器

[root@Docker ~]# docker start busybox[root@Docker ~]# docker ps# 檢視當前處於執行狀態的容器

當我們要關閉容器時,可以使用 stop;重啟時,可以使用 restart 命令來進行操作。

3)刪除容器

[root@Docker ~]# docker stop busybox
[root@Docker ~]# docker rm busybox											# 我們可以通過容器名或者容器 ID 來進行刪除

4)直接執行容器

[root@Docker ~]# docker run -d --name busybox busybox:1.28.4 /bin/sh

docker exec -it busybox /bin/sh 命令的作用就是可以使我們進入容器內。

3.使用 Docker 實現 Nginx 網站

[root@Docker ~]# docker pull nginx:1.18.0
[root@Docker ~]# docker images
[root@Docker ~]# docker run -d --name nginx -p 1888:80 -v /zhangsan:/usr/share/nginx/html/ nginx:1.18.0
[root@Docker ~]# echo "Hello 河北彭于晏" > /zhangsan/index.html
[root@Docker ~]# curl 127.0.0.1:1888

-p:指定容器執行時的埠(前面是宿主機埠,後面是容器內埠;-P 這單個字母是用來讓容器實現 隨機埠對映 的)

-v:指定資料卷,相當於是掛載命令,我們可以將宿主機的目錄掛載到容器內(可以增加多個 -v 來設定多個資料卷)

以上就是Docker容器映象相關命令基本介紹與使用的詳細內容,更多關於Docker容器映象命令的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com