科技颠覆者 发表于 2024-6-21 13:25:54

【Docker】Docker学习之一:离线安装Docker步骤

媒介:基于Ubuntu Jammy 22.04 (LTS)版本安装和测试
1、Docker安装

1.1、离线安装

步骤一:官网下载 docker 安装包
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz
步骤二:解压安装包;
tar -zxvf docker-24.0.6.tgz
步骤三:将解压之后的docker文件移到 /usr/bin目次下;
sudo cp docker/* /usr/bin/
步骤四:将docker注册成系统服务;
vim /etc/systemd/system/docker.service
然后在文件中添加以下内容,退出并生存。

Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target


Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s


WantedBy=multi-user.target
步骤五:给文件增长可执行权限
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
步骤六:设置开机自启动
systemctl enable docker.service
步骤七 :启动docker
systemctl start docker
步骤八:测试docker是否启动
docker run hello-world
https://img-blog.csdnimg.cn/c8a847ab6294458c806efd04dab2645b.png#pic_center
卸载步骤
步骤一:制止docker
sudo systemctl stop docker
步骤二:删除Docker服务
# 移除开机自启动
systemctl disable docker.service
# 删除service服务
rm -f /etc/systemd/system/docker.service
步骤三:删除Docker相关命令
rm -f /usr/bin/docker*
rm -f /usr/bin/containerd*
rm -f /usr/bin/ctr
rm -f /usr/bin/runc
步骤三:删除docker目次和容器相关文件
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
步骤四:验证是否已成功卸载
docker --version
1.2、在线安装

参考官方文档:Docker安装步骤
2、Docker镜像

2.1、镜像下载

步骤一:查找镜像
docker search ubuntu
https://img-blog.csdnimg.cn/3aa3249571284e6ea5b4b114cc725f14.png#pic_center
步骤二:下载镜像
docker pull ubuntu
https://img-blog.csdnimg.cn/70daee8f7a994f968aa74ed9f39e69b8.png#pic_center
步骤三:查看镜像
docker images

https://img-blog.csdnimg.cn/230ab53a8601491490f167fcacede7f1.png#pic_center
删除镜像,可以执行:
docker rmi e4c58958181a
#或者
docker rmi ubuntu:latest
2.2、容器命令

这里的ubuntu镜像就雷同迷你版的ISO镜像文件,启动镜像的时候可以理解为以这个镜像创建了一个假造机,并执行了封装镜像的时候所誊写的命令,对于这样已经启动的镜像我们称之为容器(containerd),这里测试所使用的只是一个ubuntu的镜像,启动的时候只是一个ubuntu的假造机,没有封装现实的功能。
步骤一:启动容器
docker run -it ubuntu:latest
#或者
docker run -it e4c58958181a
https://img-blog.csdnimg.cn/23b6a19ef91c4695bbdbc850bf49ec02.png#pic_center
可以看出启动之后进入到一个迷你版本的ubuntu系统,内里封装了一部门常用命令,但是大部门命令都没有安装。
执行 eixt 可以退出容器,并关闭该容器运行,雷同于假造构造机,但是假造机本身还存在。
也可以执行ctrl + p 之后 执行 ctrl + q这样可以退出容器,但容器本身在后台继承运行,雷同于假造机运行状态。
步骤二:查看启动的容器
docker ps -a
https://img-blog.csdnimg.cn/c18fd116dc444cb5874b8dacdee570f1.png#pic_center
这里显示状态Exited表现容器已经制止运行了,如果想要重启容器,可以执行docker start 700f9f498c9d
, 其中700f9f498c9d表现容器的ID
步骤三:重启容器
docker start 700f9f498c9d
https://img-blog.csdnimg.cn/3f8a0bacb7ec4268a88a282ad76036b8.png#pic_center
步骤四:制止容器
docker stop 700f9f498c9d
https://img-blog.csdnimg.cn/cade5de4225d40a091eaec3a55537f94.png#pic_center
步骤五:删除容器
docker rm 700f9f498c9d
https://img-blog.csdnimg.cn/587f284b2fd540b0b42d8e59f3dd5c84.png#pic_center
步骤六:后台启动容器
docker run -itd ubuntu:latest
#或者
docker run -itd e4c58958181a
https://img-blog.csdnimg.cn/599ba4eadd744f0382a0a27f45acdb44.png#pic_center
步骤七:连接容器
docker attach 725f09c35ba6
https://img-blog.csdnimg.cn/0cd2c1babf7b4b609930eec961570e14.png#pic_center
这样启动执行eixt之后容器也会关闭,如下:
https://img-blog.csdnimg.cn/2eb29cfb2f714cbb89d075fe3934c05b.png#pic_center
因此,可以使用下面命令链接容器:
docker exec -it 725f09c35ba6 /bin/bash
https://img-blog.csdnimg.cn/52085bc4016e40e898aa2148254a1603.png#pic_center
这样使用exit退出容器,容器也不会关闭。
步骤八:查看ubuntu版本
cat /etc/issue
https://img-blog.csdnimg.cn/0b5b13328f37464980ee57fcab8b7911.png#pic_center
3、步伐封装

3.1、需求分析

需要将在ubuntu 22.04版本下编译的coml_transcode可执行步伐及运行目次上传到容器中,并在容器中成功运行步伐,然后将该容器打包成一个新的镜像基础文件作为发布版使用,现场服务器摆设完docker之后直接加载启动这个新的镜像就能成功运行coml_transcode步伐,这样就避免了依靠现场服务器情况(操纵系统不一致,glibc库不一致等导致步伐启动不成功等问题。)
3.2、创建镜像

步骤一:假造机上编译源代码,并将运行目次上传
https://img-blog.csdnimg.cn/60d18443814a4769946c91be9f1ebd6e.png#pic_center
步骤二:编写DockerFile文件
该文件和源文件在一个文件夹下,如上图所示,名为dockerfile,文件内容:
FROM ubuntu

ENV MYPATH /home/coml_transcode

COPY ./coml_transcode $MYPATH

WORKDIR $MYPATH

ENTRYPOINT ["bash", "start.sh"]
FROM ubuntu: FROM是后面是该目标镜像使用的基础镜像,基础镜像有且只能有一个,这里使用ubuntu作为基础镜像;
ENV: 配置情况目次;
COPY: 将宿主机下的文件拷贝到镜像;
WORKDIR:设置容器的默认工作目次;
ENTRYPOINT: 器启动时第一个运行的命令及其参数,这里表现启动容器是执行start.sh脚本。
步骤三:创建镜像
docker build -f ./dockerfile -t coml_transcode:v1.0 .
./dockerfile 表现Dockerfile的地点位置;
coml_transcode:v1.0 表现新建镜像的名字及版本号
https://img-blog.csdnimg.cn/de589499dc0c4aaa9464a650c9a103f4.png#pic_center
构建完查看是否成功构建,通过docker images

命令查看当前本地的所有镜像:
docker images

https://img-blog.csdnimg.cn/5041330130e34207b7279ec7117026a6.png#pic_center
这里的coml_trancode镜像便是刚创建的
步骤四:通过镜像运行一个容器
docker run -d coml_transcode:v1.0
https://img-blog.csdnimg.cn/f3e1ad0a02c74e999b0a6358834ae7de.png#pic_center
步骤五:链接容器
docker exec -it 02135e2b8b7d /bin/bash
https://img-blog.csdnimg.cn/f5b9ff286cc94996a734509d28a28644.png#pic_center
步骤六:导出镜像
通过上述可以验证步伐能够在ubuntu基础假造机上面运行,将coml_transcode这个镜像导出
docker save -o ./coml_transcode.tar coml_transcode:v1.0
https://img-blog.csdnimg.cn/d4479aa7e8124bba9e8607a7cc151fc6.png#pic_center
4、现场情况

4.1、安装Docker

现场服务器按照1.1章节步骤安装docker
4.2、导入镜像

步骤一:将coml_transcode.tar镜像导入到现场服务器上
docker load -i coml_transcode.tar
https://img-blog.csdnimg.cn/35ec908a6b8b47999140ce3856f1bfc9.png#pic_center
步骤二:通过该镜像启动一个容器
docker run -d 18820b82f7eb
https://img-blog.csdnimg.cn/032664a96b514acab15d7d70c0de9d54.png#pic_center
步骤三:链接容器
docker exec -it 98c9c6c3bf75 /bin/bash
https://img-blog.csdnimg.cn/dea70016667e4302856492846fed476b.png#pic_center
可以看到步伐已经成功启动
5、总结

1、预安装命令
vim
ifconfig
dstat
ufw
tcpdump
ping
初始化ubuntu镜像安装的命令很少,可以通过3.2章节编写Dockerfile文件来预安装可能用到的命令,如下:
FROM ubuntu

ENV MYPATH /home/coml_transcode

COPY ./coml_transcode $MYPATH

WORKDIR $MYPATH

#更新apt
RUN apt-get update
#安装vim编辑器
RUN apt -y install vim
#安装ifconfig命令查看网络IP
RUN apt -y install net-tools
#安装防火墙查看攻击
RUN apt -y install ufw
#安装网络IO查看工具
RUN apt -y install dstat
#安装抓包工具
RUN apt -y install tcpdump
#安装ping命令
RUN apt -y install iputils-ping

ENTRYPOINT ["bash", "start.sh"]
然后再创建新的镜像即可,这样通过新镜像启动的容器初始就存在这些命令。
https://img-blog.csdnimg.cn/7643b5457ec64074be31505990270fee.png#pic_center
2、网络配置
Doker启动的容器存在4种网络配置,如下表所示:
网络模式指定方式解释bridge--network bridge指定,默认使用docker0桥接模式链接宿主机,通过假造出来的docker0作为网桥链接物理网卡,也可以使用docker network create --subnet=172.18.0.0/16 docker1创建新的网桥使用。host--network host指定主机模式链接宿主机,通过和宿主机共享同一物理网卡链接,自身不在配置IP,这种模式无法做到网络端口映射。none--network none指定none模式,禁用网络功能,这个Docker容器不存在网卡,IP等信息。不能和其它容器或宿主机进行通信。container--network container:NAME或者容器IDcontainer模式,同其它容器共享网络,MAC地址和ip一样。 docker容器启动的时候如果不指定网络模式,默认选择bridge模式
3、CPU隔离
docker run -d --cpuset-cpus=1-20 coml_transcode:v2.0
指定该容器使用CPU 1-20
4、日志文件同步
日志同步可以做到容器指定目次下的文件可以和宿主机指定目次下的文件进行及时同步功能。这样可以解决如下几个问题:
1.如果启动的容器异常退出之后,重启不起来,导致容器里存在的步伐日志信息无法查看;
2.如果需要更新步伐,只需要将最新版本的步伐,上传至宿主机的共享目次下,然后重启容器即可完成步伐的迭代更新;
3.对于集群摆设的容器,可以将宿主机共享文件同一设置再一个目次下,如:data/data1, data/data2, data/data3这样的格式,这样便于查看每个容器所打印的日志信息,不必去连接到每一个容器去查看。
启动容器时使用如下命令:
# 获取宿主机可执行程序运行目录
root@ubuntu:/home/DockerTranscode/coml_transcode# pwd
/home/DockerTranscode/coml_transcode

# 启动容器
docker run -d --privileged=true -v /home/DockerTranscode/coml_transcode:/home/coml_transcode/ coml_transcode:v5.0
https://img-blog.csdnimg.cn/a7bbf529964e446bbf11c677790a6fa7.png#pic_center
5、步伐更新
参考文档:
1.Docker离线安装摆设
2.Docker摆设一个简单的c/c++步伐的方法
3.Docker导出/导出镜像/容器
4.Docker进入容器方式
5.Docker限制cpu、内存使用的方法

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【Docker】Docker学习之一:离线安装Docker步骤