Docker 基礎

CyrusHuang發表於2024-08-15

安裝

  1. 解除安裝老版本(如果有)

    yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
    
  2. 安裝 yum-utils 工具

    yum install -y yum-utils
    
  3. 配置 yum-utils 的 yum-config-manager 源,以下二選一

    # 阿里
    yum-config-manager \
        --add-repo \
        https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        
    # 清華大學
    yum-config-manager \
        --add-repo \
        https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
    
  4. 安裝 docker

    # 沒有指定版本就是安裝最新版本
    yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    

    安裝了 5 個軟體,分別是:docker-ce、 docker-ce-cli、containerd.io、docker-buildx-plugin、docker-compose-plugin

    如果要指定版本安裝,就把這些軟體目前可下載的版本列出來看一下,然後再選擇對應的版本安裝

    # 看 docker-ce 版本
    yum list docker-ce --showduplicates | sort -r
    
    # 這是下載的,第二列從第一個 : 開始第一個 - 結束
    docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
    docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
    docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
    docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable
    

    上面的可用版本分別是:18.09.1、18.09.0、18.06.1.ce、18.06.0.ce

    # 指定版本安裝
    yum install docker-ce-18.09.1 docker-ce-cli containerd.io
    
  5. dockerhub 被和諧了,替換映象源,依次執行下面4條命令

    mkdir -p /etc/docker
    
    
    tee /etc/docker/daemon.json <<EOF
    {
        "registry-mirrors": [
            "https://hub.uuuadc.top",
            "https://docker.anyhub.us.kg",
            "https://dockerhub.jobcher.com",
            "https://dockerhub.icu",
            "https://docker.ckyl.me",
            "https://docker.awsl9527.cn"
        ]
    }
    EOF
    
    systemctl daemon-reload
    
    systemctl restart docker
    

常用命令

系統級別

  1. systemctl start docker 啟動 docker
  2. systemctl enable docker 開機啟動 docker
  3. systemctl restart docker 重啟 docker

映象

  1. docker search nginx 搜尋映象。OFFICAL:是否是官方釋出的映象,OK 表示是,為空就不是
  2. docker pull nginx 拉取映象
    1. 不加版本就是拉取最新的
    2. 如果要指定版本,docker search 就不合適了,去 docker hub 去找
    3. docker pull nginx:1.26.0 拉取指定版本映象,這個命令 docker hub 也有
  3. docker images 已存在的映象。這是簡寫,全寫是 docker image ls
  4. docker rmi 刪除映象。可以跟【映象名:版本】或【映象ID】

容器

  1. docker ps 當前執行中的容器

    1. 不帶引數就是檢視執行中的容器
    2. docker ps -a 檢視所有容器,包括沒執行的
    3. docker -ps -aq 檢視所有容器,只顯示容器id
  2. docker run 映象id或映象名稱 執行容器。為指定映象執行一個容器

    1. docker run nginx 建立並啟動一個 nginx 的容器,如果不跟版本號就是 latest,如果當前沒有這個映象還會先拉取再執行

    2. docker run nginx:1.26.0 建立並啟動一個 nginx 的容器,版本是 1.26.0

    3. run 還能帶一些引數,比如後臺啟動、自定義名稱、埠對映、目錄掛載等

      # -d 後臺啟動
      # --name 自定義容器名稱
      # -p 埠對映(8080:80 表示宿主機 8080 對映到 容器 80)
      # -v 目錄掛載(後面說)
      docker run -d --name mynginx -p 8080:80 nginx
      
  3. docker stop 容器id或容器名稱 停止容器

  4. docker start 容器id或容器名稱 啟動容器。docker restart xxx 重啟容器,不管是否執行都重啟

  5. docker logs 容器id或容器名稱 檢視容器日誌

  6. docker stats 容器id或容器名稱 檢視容器執行狀態。可以看網路、CPU、記憶體等資源使用情況

  7. docker exec -it 容器id或容器名稱 bash 進入容器

  8. docker ps rm 容器id或容器名稱 刪除容器。要先停止才能刪除,執行中的要強制刪除 docker ps rm -f 容器id

目錄掛載

  1. 容器被刪除,裡面的資料就沒了
  2. 因為容器為了最小化資源使用,裡面很多命令都沒有,所以修改資料不方便

執行容器的時候指定引數 -v 完成目錄的掛載,同 -p 一隻,也是先先宿主機目錄在寫容器目錄,比如下面的命令:

docker run -d -v /app/nginx/html:/usr/share/nginx/html -p 8080:80 nginx
  1. nginx 的歡迎頁(首頁)是 /usr/share/nginx/html/index.html,上面的命令會讓 nginx 到宿主機的 /app/nginx/html 下找 index.html
  2. 如果宿主機沒有掛載的目錄會自動建立(但是不會建立檔案)

卷掛載

目錄掛載會自動建立目錄,但是不會建立檔案,卷掛載就是用來解決這個問題的

# 執行一個容器,使用卷掛載
docker run -d -v nghtml:/usr/share/nginx/html -p 8090:80 nginx
  1. nghtml 是卷名,自定義的,隨便取什麼名都行
  2. 冒號後面是容器目錄

nghtml 位置在哪?docker 用宿主機的專門一個位置存放所有卷掛載的檔案: /var/lib/docker/volumes

  1. docker volume ls 檢視所有的卷
  2. docker volume inspect 卷名 檢視卷的詳情,Mountpoint 就是這個卷的位置

相關文章