一、Docker系統版本介紹
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 或 Windows 操作系統的機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口 (沒有 API)。獨立的進程運行在每個容器中,并擁有自己的網絡和 IP 地址。容器可以在任何機器上運行,無論宿主機的操作系統和配置如何。
Docker版本分為CE社區版和EE企業版。企業版強調安全性,需付費使用。Docker支持64位版本的CentOS 7和CentOS 8及更高版本,要求Linux內核版本不低于3.10。
查看Linux版本:
- lsb_release -a
- cat /etc/redhat-release
注意:如果系統不支持??lsb_release -a 命令,可使用 cat /etc/redhat-release 命令。
云服務器
本機
?查看Linux內核版本:
- cat /proc/version
- uname -a
- uname -r
滿足(要求Linux內核版本不低于3.10)
?二、安裝Docker
2.1、在線安裝
- 查看是否安裝docker
yum list installed | grep docker
- 安裝docker
yum -y install docker
- Linux 安裝默認存放位置
cd /var/lib/docker 默認安裝路徑,容器/鏡像存放在此目錄下。
鏡像位置: /var/lib/docker/image
容器位置: /var/lib/docker/containers
- 啟動docker?
systemctl start docker
- 停止docker
systemctl stop docker
- 重啟docker?
systemctl restart docker
- 查看docker服務狀態
systemctl status docker
2.2、離線安裝
- 創建下載目錄
mkdir /usr/local/docker
cd /usr/local/docker
- 下載對應版本
- 安裝包官方地址:https://download.docker.com/linux/static/stable/x86_64
wget https://download.docker.com/linux/static/stable/x86_64/docker-18.03.0-ce.tgz
- 解壓文件
tar -zxvf docker-18.03.0-ce.tgz
- ?解壓出來的docker文件復制到 /usr/bin/ 目錄下
cp docker/* /usr/bin/
- 在/etc/systemd/system/目錄下新增docker.service文件,這樣可以將docker注冊為service服務以方便開機啟動
vi /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
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 processes 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
- 給docker.service文件添加執行權限? (如果文件沒有執行權限,系統可能無法正確加載和啟動 Docker 服務)
chmod +x /etc/systemd/system/docker.service
- 重新加載配置文件
systemctl daemon-reload
- 啟動docker
systemctl start docker
- 查看docker服務狀態
systemctl status docker
- 停止docker
systemctl stop docker
三、配置鏡像加速器
為什么配置加速器?
使用阿里云鏡像加速器可以加速Docker的鏡像拉取過程。Docker通常需要從Docker官網拉取鏡像,但是官網的鏡像庫在國外,導致下載速度較慢。阿里云鏡像加速器可以將Docker官方鏡像拉取到國內的阿里云鏡像庫中,從而加速拉取過程。即使阿里云鏡像庫中沒有所需的鏡像,也可以使用阿里云鏡像加速器來加速從Docker Hub的拉取。
查看docker 版本?docker -v
阿里云:https://cr.console.aliyun.com/cn-beijing/instances/mirrors
注意:登錄阿里云賬號,查看自己的鏡像加速器?
# 進入一下目錄
[root@xiaojian /]# cd /etc/docker# 執行腳本,將JSON串反寫到daemon.jsonn文件中
[root@xiaojian docker]# sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://qil6pc2r.mirror.aliyuncs.com"]
}
EOF# 重新加載配置 (重新加載 systemd 守護進程。當你修改了 systemd 的服務文件時,這個命令會讓 systemd 重新加載配置,使新的服務配置生效。)
[root@xiaojian docker]# sudo systemctl daemon-reload# 重啟docker
[root@xiaojian docker]# sudo systemctl restart docker
四、Docker Registry 安裝
- 查看registry 的鏡像版本
[root@xiaojian system]# docker search registry
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
registry The Docker Registry 2.0 implementation for s… 3867 [OK]
verdaccio/verdaccio Verdaccio Official Docker Image: A lightweig… 186 [OK]
distribution/registry WARNING: NOT the registry official image!!! … 57 [OK]
google/docker-registry Docker Registry w/ Google Cloud Storage driv… 55
apache/nifi-registry Unofficial convenience binaries for Apache N… 42
docker/dtr Docker Trusted Registry 15
docker/migrator Tool to migrate Docker images from a v1 regi… 8 [OK]
vmware/registry 6
snyk/container-registry-agent Container registry agent allows securely con… 2
silintl/registry-proxy A reverse proxy for the Docker Registry 2.0 1 [OK]
vmware/registry-photon 0
drud/registry 0
hephy/registry Docker image registry for the Hephy - Fork o… 0
runcitadel/registry-photon 0
okteto/registry-auth 0
kope/registry 0
reseaucerta/registry 0
opensuse/registry Docker registry based on openSUSE. 0 [OK]
hephy/registry-proxy 0
bitnami/schema-registry Bitnami Docker Image for Schema Registry 0
astronomerinc/ap-registry Docker registry for the Astronomer Platform. 0
okteto/registry-configurator 0
okteto/registry 0
docker/trusted-registry-index Search Index for Docker Trusted Registry 0
hephy/registry-token-refresher 0
[root@xiaojian system]#
- ?下載registry 鏡像
docker pull registry
- ?創建一個本地目錄,用于映射本地目錄到docker里
mkdir -p /usr/local/docker/dockerhub/
- ?啟動registry鏡像
docker run -d -v /usr/local/docker/dockerhub:/var/lib/registry -p 5000:5000 --restart=always --name dockerhub-registry2.0 registry
用于運行一個Docker Registry容器并將 /usr/local/docker/dockerhub 目錄映射到容器的 /var/lib/registry 目錄
- -d 選項表示在后臺運行容器。
- -v /usr/local/docker/dockerhub:/var/lib/registry 選項將主機上的 /usr/local/docker/dockerhub 目錄映射到容器內的 /var/lib/registry 目錄,使得容器內的數據持久化到主機上。
- -p 5000:5000 選項將容器的端口 5000 映射到主機的端口 5000,使得外部可以通過主機的端口 5000 來訪問容器內的Docker Registry服務。
- --restart=always 選項表示容器退出后自動重啟。
- --name dockerhub-registry2.0 為容器指定一個名稱,方便后續管理和訪問。
- registry 是Docker官方提供的Registry鏡像名稱。
通過這個命令,您可以在本地主機上運行一個名為 dockerhub-registry2.0 的Docker Registry容器,并將 /usr/local/docker/dockerhub 目錄作為存儲目錄。?
- 查看registry是否啟動成功
curl http://127.0.0.1:5000/v2
- ?命令查看Docker Registry容器是否已成功啟動
docker ps -a
- 補充?
--insecure-registry 是一個Docker daemon的選項,用于允許Docker從指定的不安全的注冊表(insecure registry)拉取和推送鏡像,即使該注冊表沒有進行TLS認證或者使用了自簽名證書。
如果你在自己的局域網內部搭建了Harbor私有倉庫,并且希望Docker從該倉庫拉取和推送鏡像,那么你需要在Docker daemon配置文件中(通常是/etc/docker/daemon.json)添加以下內容:
{ "insecure-registries": ["你的私服IP"]
}
替換 "你的私服IP" 為你的Harbor私有倉庫的IP地址或者域名。
需要注意的是,由于這會繞過TLS認證和證書檢查,所以這種做法只應該在Harbor私有倉庫是在你完全信任的網絡內部,并且能夠保證通信的安全性時使用。在生產環境中,應該盡量避免使用不安全的注冊表。
五、驗證docker
- 拉取鏡像
docker pull hello-world
- 列出所有鏡像
docker images
- 運行鏡像
docker run hello-world
六、設置開機自啟
- 查看所有已啟動的服務
systemctl list-units --type=service
- 查看已設置的開機啟動服務
systemctl list-unit-files | grep enable
- ?設置開機自啟
systemctl enable docker.service
- ?關閉開機自啟
systemctl disable docker.service
七、卸載docker
- 檢查docker狀態
systemctl status docker
- ?停止docker運行
systemctl stop docker
- ?卸載 Docker 軟件包
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine \docker-ce
- 刪除 Docker 相關文件和目錄
sudo rm -rf /var/lib/docker
- 刪除 Docker 用戶和組
sudo userdel -r docker
- 刪除 Docker 配置文件
sudo rm -rf /etc/docker