廊坊网站备案,网站备案授权书模板,工程科技 网站设计,做教育app的网站有哪些二、安装与部署
2.1 安装环境概述
Docker划分为CE和EE#xff0c;CE为社区版#xff08;免费#xff0c;支持周期三个月#xff09;#xff0c;EE为企业版#xff08;强调安全#xff0c;付费使用#xff09;。
Docker CE每月发布一个Edge版本#xff08;17.03CE为社区版免费支持周期三个月EE为企业版强调安全付费使用。
Docker CE每月发布一个Edge版本17.0317.0417.05……每三个月发布一个Stable版本17.0317.0617.09……docker EE和stable版本号保持一致每个版本提供一年维护。
1依赖的基础环境
64 位CPULinux kernel(内核) 3.10Linux kernel cgroups and namespaces
2查询自己服务器的环境
① 使用的操作系统版本
# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.3 (Plow)② 内核版本
# uname -r
5.14.0-362.8.1.el9_3.x86_64③ ip地址
# hostname -I④卸载旧版本旧版本的Docker称为docker或者docker-engine
# yum remove docker docker-common docker-selinux docker-engine2.2 安装docker
docker的安装官方文档https://docs.docker.com/engine/install/centos/
2.2.1 使用yum安装
1添加docker-ce 源信息
安装依赖包yum-utils 提供了 yum-config-manager
# yum install yum-utils -y
# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/rhel/docker-ce.repo2修改docker-ce源
# sed -i sdownload.docker.commirrors.aliyun.com/docker-ce /etc/yum.repos.d/docker-ce.repo##或者手动写仓库
# cat docker-ce.repo
[docker-ce]
namecocker-ce
baseurlhttps://mirrors.aliyun.com/docker-ce/linux/rhel/9/x86_64/stable/
gpgcheck03更新源
# yum makecache4安装docker-ce
①默认安装docker-ce是最新版本
# yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y# rpm -q docker-ce
docker-ce-27.1.2-1.el9.x86_64
# systemctl start docker
# systemctl status docker②安装指定版本
# yum list docker-ce --showduplicates | sort -r[rootrhel9 ~]# yum install docker-ce-26.1.4-1.el9 -y
[rootrhel9 ~]# systemctl start docker
[rootrhel9 ~]# systemctl status docker2.2.2 二进制安装
官方指导文档https://docs.docker.com/engine/install/binaries/#install-daemon-and-client-binaries-on-linux
1下载二进制文件
二进制文件的下载路径https://download.docker.com/linux/static/stable/
#此次安装的是docker-25.0.5
[rootrocky9 ~]# mkdir -p /data
[rootrocky9 ~]# wget -P /data/ https://download.docker.com/linux/static/stable/x86_64/docker-25.0.5.tgz
[rootrocky9 ~]# cd /data/
[rootrocky9 data]# tar xf docker-25.0.5.tgz
[rootrocky9 data]# cp docker/* /usr/bin/
[rootrocky9 data]# dockerd 2.3 查看当前docker信息
在docker安装之后默认会生成一个名称为docker0的网卡并且默认IP地址为172.17.0.1
[rootrhel9 ~]# ip a show docker0
3: docker0: NO-CARRIER,BROADCAST,MULTICAST,UP mtu 1500 qdisc noqueue state DOWN group defaultlink/ether 02:42:2e:42:6f:44 brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever查看docker当前的版本
#验证docker的版本
[rootrhel9 ~]# docker version
Client: Docker Engine - CommunityVersion: 27.1.2API version: 1.46Go version: go1.21.13Git commit: d01f264Built: Mon Aug 12 11:52:49 2024OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 27.1.2API version: 1.46 (minimum version 1.24)Go version: go1.21.13Git commit: f9522e5Built: Mon Aug 12 11:51:10 2024OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.7.20GitCommit: 8fc6bcff51318944179630522a095cc9dbf9f353runc:Version: 1.1.13GitCommit: v1.1.13-0-g58aa920docker-init:Version: 0.19.0GitCommit: de40ad0
查看当前的容器、镜像、仓库等信息
[rootrhel9 ~]# docker info
Client: Docker Engine - CommunityVersion: 27.1.2Context: defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version: v0.16.2Path: /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version: v2.29.1Path: /usr/libexec/docker/cli-plugins/docker-composeServer:Containers: 0 #当前主机运行的容器总数Running: 0 #有几个容器是正在运行的Paused: 0 #有几个容器是暂停的Stopped: 0 #有几个容器是停止的Images: 0 #当前主机上的镜像数Server Version: 27.1.2 #服务端版本Storage Driver: overlay2 #正在使用的存储引擎Backing Filesystem: xfs #后端文件系统即服务器的磁盘文件系统Supports d_type: true #是否支持d_typeUsing metacopy: false Native Overlay Diff: true #是否支持差异数据存储userxattr: falseLogging Driver: json-file #日志类型Cgroup Driver: systemd #cgroups类型Cgroup Version: 2Plugins: #插件Volume: localNetwork: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslogSwarm: inactive Runtimes: io.containerd.runc.v2 runc #已安装的容器运行时Default Runtime: runc #默认使用的容器运行时Init Binary: docker-init #初始化容器的守护进程即pid为1的进程containerd version: 8fc6bcff51318944179630522a095cc9dbf9f353runc version: v1.1.13-0-g58aa920init version: de40ad0Security Options:seccompProfile: builtincgroupnsKernel Version: 5.14.0-362.8.1.el9_3.x86_64Operating System: Red Hat Enterprise Linux 9.3 (Plow)OSType: linuxArchitecture: x86_64CPUs: 2 #宿主机cpu数量Total Memory: 1.692GiB #宿主机总内存Name: rhel9ID: 681118d1-e2e3-41a7-b24d-0ae36f8cc338Docker Root Dir: /var/lib/docker #宿主机数据保存目录Debug Mode: falseExperimental: false #是否测试版Insecure Registries: #非安全的镜像仓库127.0.0.0/8 Live Restore Enabled: false #是否开启活动重启重启docker-daemon不关闭容器docker的相关进程 dockerd被client直接访问其父进程为宿主机的systemd守护进程。 containerd被dockerd进程调用以实现与runc交互containerd可以在宿主机中管理完整的容器生命周期容器镜像的传输和存储容器的执行和管理存储和网络等。 containerd-shimcontainerd套件其目的主要是隔离containerd和容器。 containerd守护进程收到gRPC调用请求比如来自Kubelet域或Docker的创建容器请求便会启动/usr/bin/containerd-shim套件。 containerd-shim-runc-v2: containerd-shim启动后会去启动/usr/bin/containerd-shim-runc-v2然后立即退出此时containerd-shim-runc-v2的父进程就变成了systemd(1)这样containerd-shim-runc-v2就和containerd脱离了关系即便containerd退出也不会影响到容器这也是containerd-shim套件的作用 。 runcOCl标准的具体实现就是runc真正创建和维护容器便是由runc来完成的。/usr/bin/containerd-shim-runc-v2会启动runc去create、start容器然后runc立即退出容器的父进程就变成了containerd-shim-runc-v2。containerd-shim-runc-v2会收集容器进程的状态上报给containerd docker-proxy实现容器通信其父进程为dockerd [rootrhel9 ~]# ps -ef | egrep (docker|containerd)
root 2080 1 0 09:40 ? 00:00:00 /usr/bin/containerd
root 2088 1 0 09:40 ? 00:00:00 /usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock
root 2324 1693 0 09:40 pts/0 00:00:00 grep -E --colorauto (docker|containerd)
[rootrhel9 ~]# pstree -p | egrep (systemd|docker|containerd)
systemd(1)--ModemManager(846)--{ModemManager}(886)|-containerd(2080)--{containerd}(2081)| |-{containerd}(2082)| |-{containerd}(2083)| |-{containerd}(2084)| |-{containerd}(2085)| |-{containerd}(2087)| -{containerd}(2089)|-dockerd(2088)--{dockerd}(2090)| |-{dockerd}(2091)| |-{dockerd}(2092)| |-{dockerd}(2093)| |-{dockerd}(2094)| |-{dockerd}(2095)| |-{dockerd}(2096)| -{dockerd}(2097)容器的创建与管理过程 1、dockerd通过grpc和containerd模块通信。dockerd和containerd通信的socket文件/run/containerd/containerd.sock。 2、containerd在dockerd启动时被启动然后containerd启动grpc请求监听。containerd处理grpc请求根据请求做相应动作。 3、若是创建容器containerd拉起一个container-shim容器进程并进行相应的创建操作。 4、container-shim被拉起后start/exec/create拉起runc进程通过exit、control文件和containerd通信通过父子进程关系和SIGCHLD信号监控容器中进程和状态。 2.4 docker镜像加速配置
国内从Docker Hub拉取镜像有时会遇到困难可以通过修改docker配置文件的方式添加一个加速器可以通过加速器达到下载镜像的目的。
1从2017年6月9日起Docker 官方提供了在中国的加速器以解决墙的问题。不用注册直接使用加速器地址https://registry.docker-cn.com 即可。
2中国科技大学的镜像加速器中科大的加速器不用注册直接使用地址 https://docker.mirrors.ustc.edu.cn/ 配置加速器即可。进一步的信息可以访问http://mirrors.ustc.edu.cn/help/dockerhub.html?highlightdocker
3阿里云加速器注册阿里云开发账户(免费的)后访问这个链接就可以看到加速器地址 https://cr.console.aliyun.com/#/accelerator
4DaoCloud 加速器注册 DaoCloud 账户(支持微信登录)然后访问 https://www.daocloud.io/mirror#accelerator-doc
#配置docker镜像加速
[rootrhel9 ~]# cat /etc/docker/daemon.json
{registry-mirrors: [https://docker.m.daocloud.io,https://huecker.io,https://dockerhub.timeweb.cloud,https://noohub.ru,https://hub.oepkgs.net,https://huecker.io,https://dockerhub.timeweb.cloud ]
}
[rootrhel9 ~]# systemctl daemon-reload
[rootrhel9 ~]# systemctl restart docker
[rootrhel9 ~]# docker info | grep -iA 4 registryRegistry Mirrors:https://docker.m.daocloud.io/https://huecker.io/https://dockerhub.timeweb.cloud/https://noohub.ru/
#出现该内容表示镜像加速配置成功#拉取hello-world镜像测试能否拉取
[rootrhel9 ~]# docker pull hello-world
Using default tag: latest
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:53cc4d415d839c98be39331c948609b659ed725170ad2ca8eb36951288f81b75
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
[rootrhel9 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d2c94e258dcb 15 months ago 13.3kB