0


【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

目录下;

sudocp docker/* /usr/bin/

步骤四:将

docker

注册成系统服务;

vim /etc/systemd/system/docker.service

然后在文件中添加以下内容,退出并保存。

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

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

[Install]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

在这里插入图片描述

卸载步骤

步骤一:停止

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

目录和容器相关文件

sudorm-rf /var/lib/docker
sudorm-rf /var/lib/containerd

步骤四:验证是否已成功卸载

docker--version

1.2、在线安装

参考官方文档:Docker安装步骤

2、Docker镜像

2.1、镜像下载

步骤一:查找镜像

docker search ubuntu

在这里插入图片描述

步骤二:下载镜像

docker pull ubuntu

在这里插入图片描述

步骤三:查看镜像

docker images

在这里插入图片描述

删除镜像,可以执行:

docker rmi e4c58958181a
#或者docker rmi ubuntu:latest

2.2、容器命令

这里的

ubuntu

镜像就类似迷你版的

ISO

镜像文件,启动镜像的时候可以理解为以这个镜像创建了一个虚拟机,并执行了封装镜像的时候所书写的命令,对于这样已经启动的镜像我们称之为容器(

containerd

),这里测试所使用的只是一个

ubuntu

的镜像,启动的时候只是一个

ubuntu

的虚拟机,没有封装实际的功能。

步骤一:启动容器

docker run -it ubuntu:latest
#或者docker run -it e4c58958181a

在这里插入图片描述

可以看出启动之后进入到一个迷你版本的

ubuntu

系统,里面封装了一部分常用命令,但是大部分命令都没有安装。

执行

eixt

可以退出容器,并关闭该容器运行,类似于虚拟机关机,但是虚拟机本身还存在。

也可以执行

ctrl + p

之后 执行

ctrl + q

这样可以退出容器,但容器本身在后台继续运行,类似于虚拟机运行状态。

步骤二:查看启动的容器

dockerps-a

在这里插入图片描述

这里显示状态

Exited

表示容器已经停止运行了,如果想要重启容器,可以执行

docker start 700f9f498c9d

, 其中

700f9f498c9d

表示容器的

ID

步骤三:重启容器

docker start 700f9f498c9d

在这里插入图片描述

步骤四:停止容器

docker stop 700f9f498c9d

在这里插入图片描述

步骤五:删除容器

dockerrm 700f9f498c9d

在这里插入图片描述

步骤六:后台启动容器

docker run -itd ubuntu:latest
#或者docker run -itd e4c58958181a

在这里插入图片描述

步骤七:连接容器

docker attach 725f09c35ba6

在这里插入图片描述

这样启动执行

eixt

之后容器也会关闭,如下:

在这里插入图片描述

因此,可以使用下面命令链接容器:

dockerexec-it 725f09c35ba6 /bin/bash

在这里插入图片描述

这样使用

exit

退出容器,容器也不会关闭。

步骤八:查看

ubuntu

版本

cat /etc/issue

在这里插入图片描述

3、程序封装

3.1、需求分析

需要将在

ubuntu 22.04

版本下编译的

coml_transcode

可执行程序及运行目录上传到容器中,并在容器中成功运行程序,然后将该容器打包成一个新的镜像基础文件作为发布版使用,现场服务器部署完

docker

之后直接加载启动这个新的镜像就能成功运行

coml_transcode

程序,这样就避免了依赖现场服务器环境(操作系统不一致,glibc库不一致等导致程序启动不成功等问题。)

3.2、创建镜像

步骤一:虚拟机上编译源代码,并将运行目录上传

在这里插入图片描述

步骤二:编写

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

表示新建镜像的名字及版本号

在这里插入图片描述

构建完查看是否成功构建,通过docker images命令查看当前本地的所有镜像:

docker images

在这里插入图片描述

这里的

coml_trancode

镜像便是刚创建的

步骤四:通过镜像运行一个容器

docker run -d coml_transcode:v1.0

在这里插入图片描述

步骤五:链接容器

dockerexec-it 02135e2b8b7d /bin/bash

在这里插入图片描述

步骤六:导出镜像

通过上述可以验证程序能够在

ubuntu

基础虚拟机上面运行,将

coml_transcode

这个镜像导出

docker save -o ./coml_transcode.tar coml_transcode:v1.0

在这里插入图片描述

4、现场环境

4.1、安装Docker

现场服务器按照

1.1

章节步骤安装

docker

4.2、导入镜像

步骤一:将

coml_transcode.tar

镜像导入到现场服务器上

docker load -i coml_transcode.tar

在这里插入图片描述

步骤二:通过该镜像启动一个容器

docker run -d 18820b82f7eb

在这里插入图片描述

步骤三:链接容器

dockerexec-it 98c9c6c3bf75 /bin/bash

在这里插入图片描述

可以看到程序已经成功启动

5、总结

1、预安装命令

vimifconfig
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-yinstallvim#安装ifconfig命令查看网络IP
RUN apt-yinstall net-tools
#安装防火墙查看攻击
RUN apt-yinstall ufw
#安装网络IO查看工具
RUN apt-yinstall dstat
#安装抓包工具
RUN apt-yinstall tcpdump
#安装ping命令
RUN apt-yinstall iputils-ping

ENTRYPOINT ["bash", "start.sh"]

然后再创建新的镜像即可,这样通过新镜像启动的容器初始就存在这些命令。

在这里插入图片描述

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

或者容器

ID

**

container

模式**,同其它容器共享网络,

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

在这里插入图片描述

5、程序更新

参考文档:

1.Docker离线安装部署

2.Docker部署一个简单的c/c++程序的方法

3.Docker导出/导出镜像/容器

4.Docker进入容器方式

5.Docker限制cpu、内存使用的方法


本文转载自: https://blog.csdn.net/weixin_42571882/article/details/134015815
版权归原作者 LFTF 所有, 如有侵权,请联系我们删除。

“【Docker】Docker学习之一:离线安装Docker步骤”的评论:

还没有评论