Docker 必知必會2----跟我來一步步執行基本操作

王若伊_恩赐解脱發表於2024-05-10

透過前文(https://www.cnblogs.com/jilodream/p/18177695)的瞭解,我們已經大致明白了什麼是docker,為什麼要用docker,以及docker的基本設計思路是什麼。
今天來看下,docker的基本操作有哪些?

1、linux下安裝docker
首先我們來安裝docker,
如下是使用centos 7的安裝辦法,其他系統可以自行搜尋,都不是很複雜

 1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# yum -y install docker
 2 Loaded plugins: fastestmirror
 3 Determining fastest mirrors
 4 base                                                                                                                               | 3.6 kB  00:00:00     
 5 docker-ce-stable                                                                                                                   | 3.5 kB  00:00:00     
 6 epel                                                                                                                               | 4.3 kB  00:00:00     
 7 extras                                                                                                                             | 2.9 kB  00:00:00     
 8 kubernetes                                                                                                                         | 1.4 kB  00:00:00     
 9 updates                                                                                                                            | 2.9 kB  00:00:00     
10 (1/6): epel/x86_64/updateinfo                                                                                                      | 1.0 MB  00:00:00     
11 (2/6): epel/x86_64/primary_db                                                                                                      | 8.7 MB  00:00:00     
12 (3/6): extras/7/x86_64/primary_db                                                                                                  | 253 kB  00:00:00     
13 (4/6): epel/x86_64/group                                                                                                           | 399 kB  00:00:00     
14 (5/6): updates/7/x86_64/primary_db                                                                                                 |  27 MB  00:00:00     
15 (6/6): docker-ce-stable/7/x86_64/primary_db                                                                                        | 148 kB  00:00:00 
16 
17 後續省略

安裝好docker之後,透過檢測docker版本的辦法,檢視docker 是否已經安裝成功。

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker -v
2 Docker version 26.0.0, build 2ae903e

在安裝完docker 之後,如果是國內伺服器的話,我們常常還需要配一個國內的docker倉庫映象地址:vi /etc/docker/daemon.json

 1 vi /etc/docker/daemon.json
 2 
 3 #填寫如下json資訊
 4 {
 5   "registry-mirrors": ["https://hnkfbj7x.mirror.aliyuncs.com"],
 6   "exec-opts": ["native.cgroupdriver=systemd"]
 7 }
 8 
 9 
10 # wq 儲存檔案後
11 #儲存ok之後,重啟docker 服務
12 systemctl restart docker

2、查詢docker 映象

安裝好docker 之後,我們來檢視映象,我們以tomcat為例
如下,查詢出相應的映象:

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker search tomcat
2 NAME                                            DESCRIPTION                                     STARS     OFFICIAL
3 tomcat                                          Apache Tomcat is an open source implementati…   3667      [OK]
4 tomee                                           Apache TomEE is an all-Apache Java EE certif…   115       [OK]
5 bitnami/tomcat                                  Bitnami container image for Tomcat              50  

3、獲取docker映象
確定好有所需映象後(不是必要操作),我們直接拉取映象:

 1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker pull tomcat
 2 Using default tag: latest
 3 latest: Pulling from library/tomcat
 4 0e29546d541c: Pull complete 
 5 9b829c73b52b: Pull complete 
 6 cb5b7ae36172: Pull complete 
 7 6494e4811622: Pull complete 
 8 668f6fcc5fa5: Pull complete 
 9 dc120c3e0290: Pull complete 
10 8f7c0eebb7b1: Pull complete 
11 77b694f83996: Pull complete 
12 0f611256ec3a: Pull complete 
13 4f25def12f23: Pull complete 
14 Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
15 Status: Downloaded newer image for tomcat:latest
16 docker.io/library/tomcat:latest

如上就代表我們已經將映象拉去到本地了。

4、檢視本地docker 映象
有時我們需要檢視一下本地是否已經有拉取好的某個映象,可以如下操作:
第一列為映象名稱
第二列為tag,相當於版本號,一般latest為最新版,預設下載的映象,都是最新版,如果想指定映象tag則可以使用
docker pull 映象名:tag 的形式拉取
第三列為映象id,如果相同,則可以說明這兩個映象是相同的
第四列為映象的建立時間(防盜連線:本文首發自http://www.cnblogs.com/jilodream/ )
第五列映象的大小

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker images 
2 REPOSITORY                     TAG       IMAGE ID       CREATED       SIZE
3 tomcat                         latest    fb5657adc892   2 years ago   680MB
4 gcr.io/kuar-demo/kuard-amd64   blue      1db936caa6ac   5 years ago   23MB
5 gcr.io/kuar-demo/kuard-amd64   latest    1db936caa6ac   5 years ago   23MB

5、執行docker容器
映象下載好之後,如果想要執行,我們需要建立相應的容器:

docker run 為執行容器命令
-d 代表後臺執行
-p 表示埠對映,也就是將本機的4321埠,對映到容器的8080埠(tomcat預設埠),這樣當外界請求訪問本機時,會自動請求到容器的8080埠上
--name 表示容器的名稱,
tomcat 表示使用的映象為tomcat(如有多個需要指定tag版本號)
建立好之後會給我們返回一個隨機的字串。

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker run -d  -p 4321:8080 --name mytomcat01 tomcat 
2 127ce6e75e9c62c84bea139ff7e14e9c5cb0f55554430c9265ce9cb74a160bd1

6、檢視docker容器,詳細資訊
啟動好tomcat 容器後,我們來檢視容器的狀態

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker ps
2 CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                    NAMES
3 127ce6e75e9c   tomcat    "catalina.sh run"   7 minutes ago   Up 7 minutes   0.0.0.0:4321->8080/tcp   mytomcat01

注意這裡只能看到部分執行中容器,有時我們想要看已經停止的容器,可以使用
docker ps -a

除此之外,我們還可以使用docker inspect 的命令來檢視容器更詳細的內容,不過這個命令暫時我們用不到,先跳過。

7、進入docker 容器
建立好tomcat容器之後,我們需要進入到容器中進入操作:
進入容器的命令如下:
docker exec -it 容器id 執行命令,
其中 -it 表示互動式操作 ,執行命令表示進入容器後,先行的執行命令,因為我們都是要做後續bash操作,所以一般都是接 /bin/bash 或者 /bin/sh
進入以後就是一個微型的linux虛擬機器了,我們修改下tomcat的webapps檔案,保證tomcat可以正常可用

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker exec -it 127ce6e75e9c /bin/bash
2 root@127ce6e75e9c:/usr/local/tomcat# ls
3 BUILDING.txt     LICENSE  README.md     RUNNING.txt  conf  logs        temp     webapps.dist
4 CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin          lib   native-jni-lib  webapps  work
5 root@127ce6e75e9c:/usr/local/tomcat# rm -rf webapps
6 root@127ce6e75e9c:/usr/local/tomcat# mv webapps.dist webapps
7 root@127ce6e75e9c:/usr/local/tomcat# exit

注意退出容器後,我們使用exit命令退出。之後我們透過瀏覽器,訪問我們建立的tomcat容器:(防盜連線:本文首發自http://www.cnblogs.com/jilodream/ )
http://linux宿主機Ip:4321/

8、停止、重啟docker容器
這三個命令就不講了,很簡單
docker stop 容器id
docker restart 重啟id
docker start 啟動停止狀態的容器

9、刪除docker容器、映象
清理磁碟空間或出於安全原因,我們通常需要移除映象和容器
docker rm 容器id #使用此命令來移除容器
docker rmi 映象id #使用此命令來移除映象
注意移除映象前,必須要先移除掉所有直接使用該映象的容器,否則會刪除不成功(防盜連線:本文首發自http://www.cnblogs.com/jilodream/ )

10、修改映象tag
我們通常會修改映象tag 來適配版本釋出的節奏
docker tag 映象id 映象名稱:新tag

1 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker tag fb5657adc892 tomcat:my-tomcat-image
2 [root@iZ2ze3bpa0o5cw6gp42ry2Z ~]# docker images
3 REPOSITORY                     TAG               IMAGE ID       CREATED       SIZE
4 tomcat                         latest            fb5657adc892   2 years ago   680MB
5 tomcat                         my-tomcat-image   fb5657adc892   2 years ago   680MB

注意看兩個映象的映象id是一致的,但是映象tag不一樣

上述就是docker 最基本的一些操作,彙總來看就是這個樣子:

映象版:

容器版:

docker的命令還有很多,而且我介紹的命令也是這些操作中最常用的用法。由於篇幅和能力有限無法全面介紹到,大家有需要只能根據實際需要自行搜尋,或者help檢視文件

相關文章