政務(wù)服務(wù)網(wǎng)站建設(shè)匯報(bào)谷歌優(yōu)化教程
Docker簡(jiǎn)介
Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux或Windows操作系統(tǒng)的機(jī)器上,也可以實(shí)現(xiàn)虛擬化,容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
Docker組成部分:
- 鏡像(Image)
- 倉(cāng)庫(kù)(Repository)
- 容器(Container)
準(zhǔn)備工作
我這里使用CentOS 8,Linux內(nèi)核 4.18 ,官方說(shuō)至少需要3.8及以上內(nèi)核,關(guān)于CentOS 8如何安裝,請(qǐng)移至該文章:CentOS 8虛擬機(jī)安裝配置
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 >x86_64 x86_64 x86_64 GNU/Linux
若已經(jīng)安裝完成,請(qǐng)接著往下看!
- 關(guān)閉防火墻
systemctl stop firewalld.service
- 禁用防火墻自啟動(dòng)
systemctl disable firewalld.service
- 查看防火墻狀態(tài)
systemctl status firewalld.service
設(shè)置yum源
注意:在 2022 年1月31日,CentOS 團(tuán)隊(duì)從官方鏡像中移除 CentOS 8的所有包。
直接使用yum下載會(huì)出現(xiàn)ERROR:Cannot prepare internal mirrorlist: No URLs in mirrorlist
故需要設(shè)置yum源,否則無(wú)法提供下載。
- 備份所有repo文件
rename '.repo' '.repo.bak' /etc/yum.repos.d/*.repo
- 下載最新repo文件
具體請(qǐng)參照:CentOS鏡像
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
- 重新創(chuàng)建緩存
yum clean all && yum makecache
- 安裝dnf(不使用dnf跳過(guò))
dnf是新一代的rpm軟件包管理器。
# 安裝dnf
yum install dnf -y
問(wèn)題:如果在使用CentOS 8及其以上版本出現(xiàn)無(wú)法安裝問(wèn)題時(shí),則執(zhí)行下面兩條命令(沒(méi)有問(wèn)題則不需要執(zhí)行)
dnf --disablerepo '*' --enablerepo=extras swap centos-linux-repos >centos-stream-repos -y
dnf distro-sync
卸載歷史版本
這是可以省略的步驟,主要是為了防止之前已經(jīng)安裝過(guò)舊版本的Docker而導(dǎo)致的不可控錯(cuò)誤!
dnf 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
# 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
設(shè)置本地鏡像源
源地址
中央倉(cāng)庫(kù):yum-config-manager –add-repo http://download.docker.com/linux/centos/docker-ce.repo
阿里倉(cāng)庫(kù):yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安裝yum工具包及Docker存儲(chǔ)驅(qū)動(dòng)的依賴包
dnf install device-mapper-persistent-data lvm2 -y
# yum install yum-utils device-mapper-persistent-data lvm2 -y
- 設(shè)置Docker鏡像源
dnf config-manager --add-repo=https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安裝Docker
Docker從17.03版本之后分為CE(Community Edition: 社區(qū)版)和EE(Enterprise Edition: 企業(yè)版)。相對(duì)于社區(qū)版本,企業(yè)版本強(qiáng)調(diào)安全性,但需付費(fèi)使用。這里我們使用社區(qū)版本即可。
- 查看已添加的Docker軟件源
dnf list docker-ce
# yum list docker-ce
- 查看所有倉(cāng)庫(kù)中所有docker版本
# 查看所有倉(cāng)庫(kù)中所有docker版本,并選擇特定版本安裝
dnf list docker-ce --showduplicates | sort -r
# yum list docker-ce --showduplicates | sort -r
- 安裝Docker
dnf install docker-ce --nobest -y
# yum install docker-ce --nobest -y# 指定版本號(hào)安裝
# dnf install docker-ce-[version] --nobest -y
# yum install docker-ce-[version] --nobest -y
啟動(dòng)Docker
# 啟動(dòng)docker
systemctl start docker
# 關(guān)閉docker
systemctl stop docker
- 配置鏡像加速器
具體請(qǐng)參操:Docker:鏡像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://uy35zvn6.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker基本操作
Docker倉(cāng)庫(kù):DockerHUb
- 通過(guò) 本地構(gòu)建 獲取鏡像
docker build -t [image-name:tag] [dir]
- 通過(guò) docker服務(wù)器 獲取鏡像
docker pull
- 查看鏡像
docker images
- 刪除鏡像
docker rmi [images:tag/id]
- 推送鏡像到服務(wù)器
docker push
- 鏡像打包
path:打包鏡像地址
images:tag:鏡像名稱
docker sav -o [path] [image-name:tag]
- 鏡像加載
file:需要加載的文件
q:不顯示日志
docker load -i -q [file]
Docker容器操作
- 運(yùn)行
docker run
- 運(yùn)行到停止
docker stop
- 停止到運(yùn)行
docker start
- 暫停
docker pause
- 恢復(fù)
docker runpause
- 查看所有運(yùn)行容器及狀態(tài)
docker ps
- 進(jìn)入容器執(zhí)行命令
mn:需要進(jìn)入的容器名
bash:linux終端交互命令
docker exec -it mn bash
- 查看容器運(yùn)行日志
docker logs
- 刪除指定容器
docker rm
Docker數(shù)據(jù)卷操作
COMMAND
- create 創(chuàng)建volume
- inspect 顯示一個(gè)或多個(gè)volume信息
- ls 列出所有volume
- prune 刪除未使用的volume
- rm 刪除一個(gè)或多個(gè)指定的volume
docker volume[COMMAND]
自定義鏡像(DockerFile)
常見(jiàn)指令
指令 | 說(shuō)明 |
---|---|
FROM | 指定基礎(chǔ)鏡像 |
ENV | 設(shè)置環(huán)境變量 |
COPY | 拷貝本地文件到鏡像指定目錄 |
RUN | 執(zhí)行Linux的shell命令 一般指安裝過(guò)程 |
EXPOSE | 指定容器運(yùn)行時(shí)的監(jiān)聽(tīng)窗口 使用者查看 |
ENTRYPOINT | 鏡像應(yīng)用的啟動(dòng)命令 容器運(yùn)行時(shí)調(diào)用 |
更多請(qǐng)參照:DockerFile
DockerCompose
使用compose文件(.yml)進(jìn)行集群配置;
具體請(qǐng)參照:Compose File
- 安裝DockerCompose
sudo wget -L "https://get.daocloud.io/docker/compose/releases/download/1.3.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# github下載慢
# sudo wget -L "https://github.com/docker/compose/releases/download/1.28.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 授予權(quán)限
chmod +x /usr/local/bin/docker-compose
- Base自動(dòng)補(bǔ)全命令
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
sudo wget -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose