第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-world
image.
$ 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我是不记得,逻辑我是喜欢的,但是生活往往要放弃逻辑,这又是另外的话题了。