1. 程式人生 > 其它 >01 docker的安裝與基本使用

01 docker的安裝與基本使用

docker 安裝

1、如果之前安裝過docker,需要自行解除安裝

sudo yum remove docker docker-common docker-selinux docker-engine -y

2、初始化系統環境

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3、安裝yum源

wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo

yum clean all
yum makecache

4、安裝docker

yum install docker-ce -y

5、docker優化

開啟阿里雲官網  產品  --> 容器與中介軟體  -->  容器與映象服務ACR --> 管理控制檯 --> 映象加速器 --> CentOS

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["xxx.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

6、設定開機自啟動

systemctl enable --now docker

7、檢查docker

# 第一種方式
docker run -d -P nginx

# 第二種方式
docker info

docker 的基本使用

docker 中的三大基本概念

映象

映象就是啟動一個容器的模板。--->QQ.exe

容器

容器就是對外提供服務的程序。或者容器就是映象啟動起來的一個例項。---->QQ

倉庫

倉庫是用來存放映象的地方。

docker 映象相關命令

  • 常用映象倉庫

    官方倉庫:hub.docker.com
    自己的私有倉庫:Harbor
    阿里雲私有倉庫:registry.cn-hangzhou.aliyuncs.com
    
  • 搜尋映象

    #格式
    	docker search [映象名稱]
    # 例項
    
  • 拉取映象

    # 格式
    	docker pull [映象名稱]
    # 例項
    [root@Centos7 ~]# docker pull redis
    Using default tag: latest
    latest: Pulling from library/redis
    
    # 層
    a076a628af6f: Already exists 
    f40dd07fe7be: Pull complete 
    ce21c8a3dbee: Pull complete 
    ee99c35818f8: Pull complete 
    56b9a72e68ff: Pull complete 
    3f703e7f380f: Pull complete 
    
    # 映象ID號(映象ID號是全球唯一)
    Digest: sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4801fd0882c72bf7cad3a13494
    
    # 映象下載狀態
    Status: Downloaded newer image for redis:latest 
    
    # 映象的全稱(映象的tag)
    docker.io/library/redis:latest
    
    
  • 檢視當前系統上的有哪些映象

    # 格式
    	docker images 或者 docker image ls
    
    # 引數
    -q : 只顯示映象ID
    [root@Centos7 ~]# docker images -q
    621ceef7494a
    f6d0b4767a6c
    
  • 獲取映象的詳細資訊

    # 格式
    	docker inspect [映象名稱或映象ID]
    
    # 引數
    -f : 格式化輸出
    [root@Centos7 ~]# docker inspect -f '{{.Id}}' 621ceef7494a
    sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb
    [root@Centos7 ~]# docker inspect -f '{{.ContainerConfig.Hostname}}' redis
    16535cfaf84a
    
  • 登入映象倉庫

    # 格式
    	docker login 
    	注: 預設情況下,docker login登入的是官方倉庫,如果登入其他映象倉庫則需要指定映象倉庫的URL連線。
    	
    # 例項
    	[root@Centos7 ~]# docker login registry.cn-hangzhou.aliyuncs.com
            Username: yangyang091022
            Password: 
            WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
            Configure a credential helper to remove this warning. See
            https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
            Login Succeeded
    	[root@Centos7 ~]# cat ~/.docker/config.json 
        {
            "auths": {
                "registry.cn-hangzhou.aliyuncs.com": {
                    "auth": "eWFuZ3lhbmcwOTEwMjI6Y2hlbjE4NzkwMDcwODMw"
                }
            }
        }
    # 引數
    --username|-u : 指定使用者名稱
    --password|-p : 指定密碼
    
  • 為映象標籤

    # 映象標籤的構成
    docker.io/library/redis:latest
    docker.io  : 映象倉庫的URL
    library    :映象倉庫名稱空間
    redis	   : 映象名稱
    latest	   : 映象版本號
    
    # 打標籤
    	# 格式
    		docker tag [映象ID]  映象標籤
    [root@Centos7 ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
    redis        latest    621ceef7494a   2 months ago   104MB
    nginx        latest    f6d0b4767a6c   2 months ago   133MB
    [root@Centos7 ~]# docker tag 621ceef7494a registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v2
    [root@Centos7 ~]# docker images
    REPOSITORY                                        TAG       IMAGE ID       CREATED        SIZE
    redis                                             latest    621ceef7494a   2 months ago   104MB
    registry.cn-hangzhou.aliyuncs.com/alvinos/redis   v2        621ceef7494a   2 months ago   104MB
    nginx                                             latest    f6d0b4767a6c   2 months ago   133MB
    
    
  • 映象上傳

    # 格式
    	docker push [映象標籤]
    
    # 注:要想上傳映象,首先得登入映象倉庫,其次設定對應映象倉庫的tag
    
    [root@Centos7 ~]# docker push registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v2
    The push refers to repository [registry.cn-hangzhou.aliyuncs.com/alvinos/redis]
    3480f9cdd491: Pushed 
    a24a292d0184: Pushed 
    f927192cc30c: Pushed 
    1450b8f0019c: Pushed 
    8e14cb7841fa: Pushed 
    cb42413394c4: Pushed 
    v2: digest: sha256:7ef832c720188ac7898dbd8d1e237b0738e94f94fc7e981cb7b8efe84555e892 size: 1572
    
  • 映象的刪除

    # 格式
    	docker rmi [映象名稱或者映象ID]
    # 例項
    	[root@Centos7 ~]# docker rmi nginx
    # 引數
    	-f  : 強制刪除
    	[root@Centos7 ~]# docker rmi -f nginx
        Untagged: nginx:latest
        Untagged: nginx@sha256:10b8cc432d56da8b61b070f4c7d2543a9ed17c2b23010b43af434fd40e2ca4aa
     # 注:當有容器正在使用映象時,強制刪除映象,只能刪除映象的所有tag, 不會刪除映象。
    
  • 清空映象

    # 格式
    	docker image prune
    
    # 例項
    	[root@Centos7 ~]# docker image prune
        WARNING! This will remove all dangling images.
        Are you sure you want to continue? [y/N] y
        Total reclaimed space: 0B
     # 引數
     -a : 刪除所有映象
     
     [root@Centos7 ~]# docker image prune -a
    WARNING! This will remove all images without at least one container associated to them.
    Are you sure you want to continue? [y/N] y
    Deleted Images:
    untagged: redis:latest
    untagged: redis@sha256:0f97c1c9daf5b69b93390ccbe8d3e2971617ec4801fd0882c72bf7cad3a13494
    untagged: registry.cn-hangzhou.aliyuncs.com/alvinos/redis:v2
    untagged: registry.cn-hangzhou.aliyuncs.com/alvinos/redis@sha256:7ef832c720188ac7898dbd8d1e237b0738e94f94fc7e981cb7b8efe84555e892
    deleted: sha256:621ceef7494adfcbe0e523593639f6625795cc0dc91a750629367a8c7b3ccebb
    deleted: sha256:de66cfbf4712b8ba9ef292e08ef7487be26d9d21b350548e400ae351405d820e
    deleted: sha256:79b2381e35429e8fc04d31b3445f069c22d288bf5c4cba7b7c10004ff78ae201
    deleted: sha256:1d047d19be363b00139990d4d7f392dabdb0809dbc9d0fbe67c1f15b8caed27a
    deleted: sha256:8c41f4e708c37059df28ae1cabc200a6db2fee45bd3a2cadcf70f2765bb68730
    deleted: sha256:b51317bef36fe1900be48402c8a41fcd9cdb6b8950c10209f764473cb8323371
    
    Total reclaimed space: 35.04MB
    [root@Centos7 ~]# 
    
    
  • 檢視映象歷史(映象的構建歷史)

    # 格式
    	docker history [映象ID或映象名稱]
    # 例項
    [root@Centos7 ~]# docker history alpine
    IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
    7731472c3f2a   2 months ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B        
    <missing>      2 months ago   /bin/sh -c #(nop) ADD file:edbe213ae0c825a5b…   5.61MB    
    
  • 儲存映象(commit)

    # 儲存正在執行的容器直接為映象
    # 格式:
    	docker commit [容器ID|容器名稱]
    	
    # 例項
    [root@Centos7 ~]# docker commit -a "baim0" -m "這是一個docker映象" -p be3b92e2886b  test:v1
    sha256:4a06cd2af42877b5e2908073061f7ae1bf9e308a470bdfc0c6f906ef368aaed8
    [root@Centos7 ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
    test         v1        4a06cd2af428   5 seconds ago   104MB
    
  • 儲存映象(import/export)

    # 儲存正在執行的容器為映象壓縮包
    ## 儲存容器為映象
    	docker export [容器的ID] > [包名稱]
    	# 例項
    		[root@Centos7 ~]# docker export be3b92e2886b > redis.tar
            [root@Centos7 ~]# ll | grep redis
            -rw-r--r--. 1 root root 104178688 Mar 18 17:30 redis.tar
            
    ## docker import [包名稱] [自定義映象名稱]
    	# 例項
    	[root@Centos7 ~]# docker import redis.tar test:v3
        sha256:7776db3402fb8d59f6121a3b1977b5e7016f4064cf59218fd1b06637cb0fca87
        [root@Centos7 ~]# docker images
        REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
        test         v3        7776db3402fb   6 seconds ago   101MB
    
  • 儲存映象(save/load)

    # 儲存映象為壓縮包
    # 儲存映象的格式:
    	docker save [映象名稱|映象ID] > [包名稱]
        [root@Centos7 ~]# docker save 7731472c3f2a > apline.tar
        [root@Centos7 ~]# ll	
        -rw-r--r--. 1 root root   5888000 Mar 18 17:36 apline.tar
        [root@Centos7 ~]# docker save -o apline-two.tar 7731472c3f2a
        [root@Centos7 ~]# ll
        total 148692
        -rw-r--r--. 1 root root   5888000 Mar 18 17:36 apline.tar
        -rw-------. 1 root root   5888000 Mar 18 17:37 apline-two.tar
    
    # 匯入映象的格式:
    	docker load < [包名稱]
    	
    	[root@Centos7 ~]# docker load < apline.tar 
        c04d1437198b: Loading layer [========================================>]   5.88MB/5.88MB
        Loaded image ID: sha256:7731472c3f2a25edbb9c085c78f42ec71259f2b83485aa60648276d408865839
        [root@Centos7 ~]# docker images
        REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
        <none>       <none>    7731472c3f2a   2 months ago     5.61MB
    
    # 注:save/load儲存映象無法自定義映象名稱,save儲存映象時如果使用ID儲存則load匯入映象無名稱,使用名稱匯入時才有名稱。
    [root@Centos7 ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    busybox      latest    b97242f89c8a   2 months ago     1.23MB
    [root@Centos7 ~]# docker save busybox:latest > busybox.tar
    [root@Centos7 ~]# ll
    total 150120
    -rw-r--r--. 1 root root   1459200 Mar 18 17:43 busybox.tar
    [root@Centos7 ~]# docker rmi b97242f89c8a
    Untagged: busybox:latest
    Untagged: busybox@sha256:c5439d7db88ab5423999530349d327b04279ad3161d7596d2126dfb5b02bfd1f
    Deleted: sha256:b97242f89c8a29d13aea12843a08441a4bbfc33528f55b60366c1d8f6923d0d4
    Deleted: sha256:0064d0478d0060343cb2888ff3e91e718f0bffe9994162e8a4b310adb2a5ff74
    [root@Centos7 ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    [root@Centos7 ~]# docker load < busybox.tar 
    0064d0478d00: Loading layer [==================================================>]   1.45MB/1.45MB
    Loaded image: busybox:latest
    [root@Centos7 ~]# docker images
    REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
    busybox      latest    b97242f89c8a   2 months ago     1.23MB
    
    
  • 儲存映象三種方式的區別

    1、export儲存的映象體積要小於save(save儲存更完全,export儲存會丟掉一些不必要的資料)
    2、export可以重新命名映象名稱而save則不行
    3、save可以同時儲存多個映象而export則不行