Docker原始碼安裝附內網映象安裝演示
系統版本要求
當前系統版本:CentOS Linux release 7.9.2009 (Core)
核心版本:3.10.0-1160.el7.x86_64
注:系統核心版本要求3.10以上
uname -r #檢視當前系統核心版本
cat /etc/redhat-release # 檢視當前系統版本
yum update (非正式環境下使用)
版本介紹docker-ce社群版 docker-ee企業版 docker-ce-cli客戶端 containerd.io 容器
原始碼包下載
官網下載地址(https://download.docker.com/linux/static/stable/x86_64/docker-19.03.10.tgz)
我這裡已docker-19.03.10.tgz該版本做演示
1.下載原始碼包檔案到本地
2.通過遠端連線工具(xShell、SecureCRT等將原始碼包檔案上載到伺服器自定義目錄)
3.解壓檔案
pwd
/usr/loca/src/ ##自定義檔案目錄用來存放docker的原始碼包
tar -zxvf docker-19.03.10.tgz #解壓檔案
cp docker/* /usr/bin/ #複製解壓後文件到/bin(必做)
4.配置docker 為service服務
vi /etc/systemd/system/docker.service
新增如下內容
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewall.service
Wants=network-online.target
[Service]
Type=notify
#the default is not to use systemd for cgroups because the delegay issues still
#exists and systemd currently does not support the cgroup feature set required
#for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
#Having non-zero Limit*s causes performance problems due to accounting overhead
#in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
#Uncomment TasksMax if your systemd version supports it.
#Only Systemd 226 and above support this version
#TasksMax=infinity
TimeoutStartSec=0
#set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
#kill only the docker process, not all process in the cgroup
KillMode=process
#restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
5.新增可執行許可權
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload #重新載入配置(每次修改檔案後需執行)
systemctl start docker.service
systemctl status docker.service
systemctl enable docker.service ##使服務開啟自啟
注:如遇到啟動不成功可通過狀態查詢、/var/log/messages/執行日誌或直接使用dockerd命令檢視錯誤資訊,如還解決不了建議伺服器重啟一下在執行docker 啟動命令
6.配置映象加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
systemctl daemon-reload #重新載入配置(每次修改檔案後需執行)
systemctl restart docker.service
7.檢查安裝版本
docker version ##或
docker -v
內網下載映象
注:使用 docker pull 拉取映象的時候需要網路,但是專案部署一般都是在內網。內網訪問不了外網,所以需要在外 網環境下把需要的映象拉取下來打包,然後拷貝到內網,載入到內網的docker
1.在外網機器上拉取mysql映象,可以看到外網的docker已經拉取了映象。
docker pull mysql ##拉取mysql 映象mysql後不跟版本號預設為最新版本
docker images ## 檢視映象
2.將映象打包成tar壓縮包
docker save -o mysql.tar mysql:latest
docker save #容器ID or name 匯出映象
3.將打包好的mysql映象包通過遠端工具下載到本地
4.拷貝到內網linux伺服器並載入docker
docker load -i mysql.tar ##匯入映象
docker images
docker基礎命令使用(擴充套件)
下載映象:(https://hub.docker.com/search/ 官網映象地址)
docker pull [IMAGE_NAME]:[TAG] #命令格式
docker pull mysql:8.0 #下載mysql8.0映象(不指定預設下載最新版本)
檢視當前映象版本
docker -v #檢視當前安裝版本
docker version #檢視版本資訊
docker info #檢視系統資訊
docker images #檢視當前映象
docker search 映象名 #搜尋映象
映象、容器刪除
docker rm 容器ID
docker rm 容器名字
docker rmi 映象ID
docker rmi 映象名
docker rmi -f 映象ID #強制刪除
建立網路及資料卷
docker volume create +資料卷名稱
docker volume list #檢視當前資料卷資訊
docker network create -d bridge +網路名稱
docker network ls #檢視當前網路
docker inspect containername +id # 檢視容器的hash值
啟動、關閉容器
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2) #關閉所有容器
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2) #開啟所有容器
雜
docker inspect 容器ID (使用該命令重點關注容器ip) ##檢視容器/映象元資料
docker exec ##在執行的容器中執行命令
docker exec -it 容器ID /bin/bash ##以互動模式開啟偽終端