安裝
-
解除安裝老版本(如果有)
yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
安裝 yum-utils 工具
yum install -y yum-utils
-
配置 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
-
安裝 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
-
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
常用命令
系統級別
systemctl start docker
啟動 dockersystemctl enable docker
開機啟動 dockersystemctl restart docker
重啟 docker
映象
docker search nginx
搜尋映象。OFFICAL:是否是官方釋出的映象,OK 表示是,為空就不是docker pull nginx
拉取映象- 不加版本就是拉取最新的
- 如果要指定版本,docker search 就不合適了,去 docker hub 去找
docker pull nginx:1.26.0
拉取指定版本映象,這個命令 docker hub 也有
docker images
已存在的映象。這是簡寫,全寫是docker image ls
docker rmi
刪除映象。可以跟【映象名:版本】或【映象ID】
容器
-
docker ps
當前執行中的容器- 不帶引數就是檢視執行中的容器
docker ps -a
檢視所有容器,包括沒執行的docker -ps -aq
檢視所有容器,只顯示容器id
-
docker run 映象id或映象名稱
執行容器。為指定映象執行一個容器-
docker run nginx
建立並啟動一個 nginx 的容器,如果不跟版本號就是 latest,如果當前沒有這個映象還會先拉取再執行 -
docker run nginx:1.26.0
建立並啟動一個 nginx 的容器,版本是 1.26.0 -
run 還能帶一些引數,比如後臺啟動、自定義名稱、埠對映、目錄掛載等
# -d 後臺啟動 # --name 自定義容器名稱 # -p 埠對映(8080:80 表示宿主機 8080 對映到 容器 80) # -v 目錄掛載(後面說) docker run -d --name mynginx -p 8080:80 nginx
-
-
docker stop 容器id或容器名稱
停止容器 -
docker start 容器id或容器名稱
啟動容器。docker restart xxx
重啟容器,不管是否執行都重啟 -
docker logs 容器id或容器名稱
檢視容器日誌 -
docker stats 容器id或容器名稱
檢視容器執行狀態。可以看網路、CPU、記憶體等資源使用情況 -
docker exec -it 容器id或容器名稱 bash
進入容器 -
docker ps rm 容器id或容器名稱
刪除容器。要先停止才能刪除,執行中的要強制刪除docker ps rm -f 容器id
目錄掛載
- 容器被刪除,裡面的資料就沒了
- 因為容器為了最小化資源使用,裡面很多命令都沒有,所以修改資料不方便
執行容器的時候指定引數 -v 完成目錄的掛載,同 -p 一隻,也是先先宿主機目錄在寫容器目錄,比如下面的命令:
docker run -d -v /app/nginx/html:/usr/share/nginx/html -p 8080:80 nginx
- nginx 的歡迎頁(首頁)是
/usr/share/nginx/html/index.html
,上面的命令會讓 nginx 到宿主機的/app/nginx/html
下找index.html
- 如果宿主機沒有掛載的目錄會自動建立(但是不會建立檔案)
卷掛載
目錄掛載會自動建立目錄,但是不會建立檔案,卷掛載就是用來解決這個問題的
# 執行一個容器,使用卷掛載
docker run -d -v nghtml:/usr/share/nginx/html -p 8090:80 nginx
- nghtml 是卷名,自定義的,隨便取什麼名都行
- 冒號後面是容器目錄
nghtml 位置在哪?docker 用宿主機的專門一個位置存放所有卷掛載的檔案: /var/lib/docker/volumes
docker volume ls
檢視所有的卷docker volume inspect 卷名
檢視卷的詳情,Mountpoint 就是這個卷的位置