文 | 平哥 日期 | 20201112
一、Docker簡介
Docker 是基于 Go 語言實現(xiàn)的開源容器項目。期望達到使項目運行環(huán)境“一次封裝,到處運行”的目的。
學習Docker主要目的是能夠做兩件事情:
1.在Docker安裝軟件
2.把項目部署到Docker
Docker架構(gòu):

Docker 是通過安裝在宿主機上的Daemon后臺程序來接收客戶端命令,創(chuàng)建容器實例,從遠程鏡像倉庫中心拉取或創(chuàng)建鏡像。
二、Docker安裝與啟動
Docker有windows和linux版本。本次操作以安裝在Linux上進行演示的。
以下安裝步驟基于CentOS8,需要確保該虛擬機可以連接外網(wǎng)。
1.Docker 安裝
Step 1 上傳安裝包
Docker的安裝可以分為在線安裝和本地安裝,由于需要連接Docker官網(wǎng),網(wǎng)速感人且極易失敗,于是我采用的是本地安裝。
具體安裝包:
鏈接: https://pan.baidu.com/s/1QYwLE0kkm6NfeHDQesmOog 密碼: ljsk
將下載好的安裝包上傳至CentOS中:

Step 2 安裝依賴和Docker
使用 yum localinstall 命令分別安裝:
1、先安裝 containerd.io:
# yum localinstall containerd.io-1.2.6-3.3.fc30.x86_64.rpm
2、安裝 docker-ce:
# yum localinstall -y libcgroup
# yum localinstall -y docker-ce-cli-19.03.12-3.el7.x86_64.rpm
# yum localinstall -y docker-ce-19.03.12-3.el7.x86_64.rpm
Step 3 啟動并檢查Docker
啟動命令:
# systemctl start docker
查看docker信息:
# docker info
結(jié)果如圖:

Step 4 阿里云鏡像加速器配置
默認情況下Docker從Docker Hub上下載鏡像資源,但速度很慢,可以通過配置國內(nèi)的鏡像加速器來解決。
登錄阿里云控制臺,輸入“容器鏡像服務(wù)”進行搜索,點擊“鏡像加速器”:

在安裝好的Docker的服務(wù)器上,按照頁面說明配置daemon.json配置文件并重啟即配置完成。
三、Docker鏡像操作
3.1 列出本地所有鏡像
命令:
# docker images
結(jié)果如圖:

結(jié)果解釋:
REPOSITORY:鏡像所在的倉庫名稱
TAG:鏡像標簽(其實就是版本)
IMAGE ID:鏡像ID
CREATED:鏡像的創(chuàng)建日期(不是獲取該鏡像的日期)
SIZE:鏡像大小
3.2 搜索遠程鏡像
若本地沒有需要的鏡像,則可以去遠程鏡像倉庫中心進行搜索,命令:
# docker search mysql
結(jié)果如圖:

結(jié)果解釋:
NAME:倉庫名稱
DESCRIPTION:鏡像描述
STARS:用戶評價,反應(yīng)一個鏡像的受歡迎程度
OFFICIAL:是否官方
AUTOMATED:自動構(gòu)建,表示該鏡像由Docker Hub自動構(gòu)建流程創(chuàng)建的
3.3 拉取鏡像
使用如下命令,即可從遠程鏡像倉庫中拉取鏡像:
docker pull mysql:latest
四、Docker容器操作
可以將Docker容器看成是最簡單的Linux環(huán)境(包括系統(tǒng)內(nèi)核、root用戶權(quán)限、進程空間、網(wǎng)絡(luò)空間和用戶空間)和運行在其中的應(yīng)用程序(比如MySQL)。
4.1 新建容器
命令:
docker create [options] 鏡像名稱或ID
例如:
# docker create --name mysqlgcp -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:latest
參數(shù)說明:
--name:用于給創(chuàng)建的容器重命名
-p:宿主機和docker容器的端口映射,hostPort:containerPort
-e:設(shè)置參數(shù)
有可能會用-v:主機和容器的目錄映射關(guān)系,":"前為主機目錄,之后為容器目錄
以上容器創(chuàng)建,但未運行。
4.2 查看容器
以下命令查看本地正在運行的容器:
# docker container ls
若想查看所有已經(jīng)創(chuàng)建的容器,即包括未運行的容器(如4.1創(chuàng)建的容器),加入-l參數(shù):
# docker container ls -l
結(jié)果:

其他常用參數(shù)說明:
-n 數(shù)字:顯示最近n個創(chuàng)建的容器
-a:列出所有的運行過的容器
-q:列出容器id
4.3 啟動容器
使用以下命令啟動已創(chuàng)建的容器:
# docker start mysqlgcp
或:
# docker start 52bdd1defcd8
即可以使用容器名稱或容器ID
4.4 與運行中的容器交互
使用如下命令與運行中的容器進行交互:
# docker exec [option] 容器ID [command]
例如:
docker exec -it 52bdd1defcd8 /bin/bash
參數(shù)說明:
-i:以交互模式運行容器,通常與-t連用
-t:為容器重新分配一個偽終端,通常與-i連用
效果如圖:

從容器終端中退出,使用exit命令
4.5 停止容器
命令如下:
# docker stop 容器名稱或容器ID
4.6 創(chuàng)建并運行容器
命令如下:
# docker run [options] 鏡像名稱或鏡像ID [COMMAND] [ARG...]
具體命令舉例如下:
# docker run -p 3307:3306 --name mysqlgcp -e MYSQL_ROOT_PASSWORD=root -d mysql:latest