第3节 Docker在线和离线安装多种方法实现
安装
https://docs.docker.com/desktop/install/linux-install/
所需平台:
所需资源:

说是4G内存,其实2G也能安装。工作中肯定不是2G就能OK的。
生产中的服务器,内存也有高达1T的,就是为了跑好多容器的。
安装方法,我们一般不按照destop这种GUI版,正常就安装Engine
https://docs.docker.com/engine/install/centos/

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Install Docker Engine
Install Docker Engine, containerd, and Docker Compose:
Latest Specific version
To install the latest version, run:
$ sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ sudo yum install docker-ce # 上面一行其实只要敲这一行,安装docker-ce就行了,后面的都会走依赖包自动安装好的。 -ce所谓的ce就是社区版,还有一个-ee就是企业版。
If prompted to accept the GPG key, verify that the fingerprint matches 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35, and if so, accept it.
This command installs Docker, but it doesn't start Docker. It also creates a docker group, however, it doesn't add any users to the group by default.
- Start Docker.
$ sudo systemctl start docker
- Verify that the Docker Engine installation is successful by running the
hello-worldimage.
$ sudo docker run hello-world
This command downloads a test image and runs it in a container. When the container runs, it prints a confirmation message and exits.
You have now successfully installed and started Docker Engine.
使用国内源的安装方法
https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/
操作备忘,我之前就有docker,这里需要删掉
ubuntu方面


这种指定版本安装存在的小问题就是,docker-ce你指定了是24.0.0,但是其他依赖包没有手动指定,就会下载最新的了。

docker-ce是install的时候指定的版本,其他未指定的就下载最新的了。

所以要安装docker 某个老版本的时候,需要严禁一点,就是手动指定各个包的版本。其实也就是图上dpkg -l |grep docker所列出来的各个包
最新的版本的安装自然就是统一的,就保证仓库的rpm源是最新的直接yum就行了。




这样就保证了ce和ce-cli的版本一致,当然最好还是全部一致。
我就不重新装了,我没啥要求,yum install就行了,要注意docker的各个包版本要一致,不要踩坑。

这是我的版本
容器里安装docker-client,并不是套娃,而是client的命令
server就用宿主机的
client就调用远端的server执行docker cli
场景:
容器里面将来可以执行docker cli连接远端的docker server也就是docker engine来执行 docker操作。
比如👇C1容器里执行docker cli把C2容器给停了,当然C1要通过docker cli 命令连接到宿主上的docker服务进程来执行命令的。

其实就是本来docker-cli都是在宿主上敲的命令,现在可以在运行的容器里面执行,换而言之,C1一旦安装了docker-cli就可以变相的等价于宿主机上敲docker-cli以此达到控制宿主上所有容器的效果。
docker的命令真正的执行都是docker-server来执行的,docker-cli在哪里敲都一样,你在宿主上敲和在容器里敲都一样的效果。
client和server可以不在一台机器上,网络可达就行了,之前看书的时候也试过cli里可以指定连接的engine也就是server的。

就跟mysql client可以管理本机的mysql db,也可以管理远端的db一样,cli里指定-h a.b.c.d就行了。
那么问题来了该如何在容器里安装docker-cli命令呢
1、通过镜像提前封装进去,可以的,可能就是不太灵活
2、使用官方通用的安装脚本来弄
两条命令就ok了👆
docker的二进制安装-适用于无法上网的机器

然后二进制安装的一个优点👇就是可以明确看到之前的这几个模块,

再写个service文件并做好开机启动

一般就是docker cli就和本地的engine连接就行了,所上图的socket一般也不会修改为让别人机器远程dockercli连过来的ip+port了。除非特殊需求~
再一个docker是以root用户运行的,因为很多系统底层的资源的权限需要root调用。

二进制安装脚本可能需求按需修改的地方
1、版本和国内镜像源

2、下载的URL,由于是国内的所以路径要修改的


其他无需改动就是下载后,解压,写service
然后运行就可以了

离线安装的时候-也就是内网无互联网访问的情况下安装,就是需要把安装包下载下来,因为docker是go写的,所以都是静态库,比较好安装的,依赖问题少。

脚本在视频目录层的课件目录下有的,要用去那里那就行了👇,以上是补充👆

其实也没啥,就是下载现成的离线包,解压,二进制执行PATH路径都可以直接移动到/user/local/bin下就行,以及service这些常规操作。

别人跟你要要docker 3.0 ,你别当真哦,呵呵~

也就是说这些文件,拷贝到任何机器上,都可以正常运行的。所以这些复制到容器里面即使那里是极其精简版的linux也照样可以运行。

pstree -p可能也可以看到进程之间的调用,不过不一定全,因为rocky和ubuntu也不太一样,然后就算ubuntu的pstree可以看到👇,也不全,可能是还需要进一步启动容器后才能看全吧。



监听在socket文件上,也就是docker cli通过这个socket来和dockerd服务也好引擎也罢来通信的。
下面就开始学习docker命令了,通过命令学习技术的逻辑和方案的落地,而不是去机械的命令,我反正从不记命令,这也是我写这些文章的底层原因,因为我学了就忘了,连小时候考完试就忘,从来都是如此。但是话说回来,要用的时候忘记了可不行啊,所以还得在这里写笔记以备不时之需,到时候也是需要鼓足勇气耐着性子复习一遍的,反复多次,捡起来的速度就会很快,比如一些投影仪一些智能照明的设备如何在云上操作,他们其实就是只能穿1层NAT,两层就需要在内部的最近的一层NAT里做好DNAT了,至于为什么能够穿一层,那就是之前我还没上传的ssh隧道里的知识了,是我同事遇到了安装师傅的协作要求放行内部AC的DNAT端口,其实就是AC上作DNAT,我就可以立马反映过来其实不是外部发起的流量,而是内部智能电灯发起的ssh隧道,SSH -R 9527:destser:5000 -Nf CloudSer 正因为兄弟我不止一次复习过那片文章,也是我自己记录的,所以才能够快速反应过来,但是cli我是不记得,逻辑我是喜欢的,但是生活往往要放弃逻辑,这又是另外的话题了。