Docker学习之一:离线安装Docker步骤
0
1、Docker安装
1.1、离线安装
步骤一:官网下载 docker 安装包
1 |
|
步骤二:解压安装包;
1 |
|
步骤三:将解压之后的docker
文件移到 /usr/bin
目录下;
1 |
|
步骤四:将docker
注册成系统服务;
1 |
|
然后在文件中添加以下内容,退出并保存。
1 |
|
步骤五:给文件增加可执行权限
1 |
|
步骤六:设置开机自启动
1 |
|
步骤七 :启动docker
1 |
|
步骤八:测试docker
是否启动
1 |
|
卸载步骤
步骤一:停止docker
1 |
|
步骤二:删除Docker
服务
1 |
|
步骤三:删除Docker
相关命令
1 |
|
步骤三:删除docker
目录和容器相关文件
1 |
|
步骤四:验证是否已成功卸载
1 |
|
1.2、在线安装
参考官方文档:Docker安装步骤
2、Docker镜像
2.1、镜像下载
步骤一:查找镜像
1 |
|
步骤二:下载镜像
1 |
|
步骤三:查看镜像
1 |
|
删除镜像,可以执行:
1 |
|
2.2、容器命令
这里的ubuntu
镜像就类似迷你版的ISO
镜像文件,启动镜像的时候可以理解为以这个镜像创建了一个虚拟机,并执行了封装镜像的时候所书写的命令,对于这样已经启动的镜像我们称之为容器(containerd
),这里测试所使用的只是一个ubuntu
的镜像,启动的时候只是一个ubuntu
的虚拟机,没有封装实际的功能。
步骤一:启动容器
1 |
|
可以看出启动之后进入到一个迷你版本的ubuntu
系统,里面封装了一部分常用命令,但是大部分命令都没有安装。
执行 eixt
可以退出容器,并关闭该容器运行,类似于虚拟机关机,但是虚拟机本身还存在。
也可以执行ctrl + p
之后 执行 ctrl + q
这样可以退出容器,但容器本身在后台继续运行,类似于虚拟机运行状态。
步骤二:查看启动的容器
1 |
|
这里显示状态Exited
表示容器已经停止运行了,如果想要重启容器,可以执行docker start 700f9f498c9d
, 其中700f9f498c9d
表示容器的ID
步骤三:重启容器
1 |
|
步骤四:停止容器
1 |
|
步骤五:删除容器
1 |
|
步骤六:后台启动容器
1 |
|
步骤七:连接容器
1 |
|
这样启动执行eixt
之后容器也会关闭,如下:
因此,可以使用下面命令链接容器:
1 |
|
这样使用exit
退出容器,容器也不会关闭。
步骤八:查看ubuntu
版本
1 |
|
3、程序封装
3.1、需求分析
需要将在ubuntu 22.04
版本下编译的coml_transcode
可执行程序及运行目录上传到容器中,并在容器中成功运行程序,然后将该容器打包成一个新的镜像基础文件作为发布版使用,现场服务器部署完docker
之后直接加载启动这个新的镜像就能成功运行coml_transcode
程序,这样就避免了依赖现场服务器环境(操作系统不一致,glibc库不一致等导致程序启动不成功等问题。)
3.2、创建镜像
步骤一:虚拟机上编译源代码,并将运行目录上传
步骤二:编写DockerFile
文件
该文件和源文件在一个文件夹下,如上图所示,名为dockerfile,文件内容:
1 |
|
FROM ubuntu
: FROM
是后面是该目标镜像使用的基础镜像,基础镜像有且只能有一个,这里使用ubuntu
作为基础镜像;
ENV
: 配置环境目录;
COPY
: 将宿主机下的文件拷贝到镜像;
WORKDIR
:设置容器的默认工作目录;
ENTRYPOINT
: 器启动时第一个运行的命令及其参数,这里表示启动容器是执行start.sh
脚本。
步骤三:创建镜像
1 |
|
./dockerfile
表示Dockerfile
的所在位置;
coml_transcode:v1.0
表示新建镜像的名字及版本号
构建完查看是否成功构建,通过docker images命令查看当前本地的所有镜像:
1 |
|
这里的coml_trancode
镜像便是刚创建的
步骤四:通过镜像运行一个容器
1 |
|
步骤五:链接容器
1 |
|
步骤六:导出镜像
通过上述可以验证程序能够在ubuntu
基础虚拟机上面运行,将coml_transcode
这个镜像导出
1 |
|
4、现场环境
4.1、安装Docker
现场服务器按照1.1
章节步骤安装docker
4.2、导入镜像
步骤一:将coml_transcode.tar
镜像导入到现场服务器上
1 |
|
步骤二:通过该镜像启动一个容器
1 |
|
步骤三:链接容器
1 |
|
可以看到程序已经成功启动
5、总结
1、预安装命令
1 |
|
初始化ubuntu
镜像安装的命令很少,可以通过3.2
章节编写Dockerfile
文件来预安装可能用到的命令,如下:
1 |
|
然后再创建新的镜像即可,这样通过新镜像启动的容器初始就存在这些命令。
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隔离
1 |
|
指定该容器使用CPU 1-20
4、日志文件同步
日志同步可以做到容器指定目录下的文件可以和宿主机指定目录下的文件进行实时同步功能。这样可以解决如下几个问题:
1.如果启动的容器异常退出之后,重启不起来,导致容器里存在的程序日志信息无法查看;
2.如果需要更新程序,只需要将最新版本的程序,上传至宿主机的共享目录下,然后重启容器即可完成程序的迭代更新;
3.对于集群部署的容器,可以将宿主机共享文件统一设置再一个目录下,如:data/data1, data/data2, data/data3
这样的格式,这样便于查看每个容器所打印的日志信息,不必去连接到每一个容器去查看。
启动容器时使用如下命令:
1 |
|