Linux小知识---Docker

简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
在这里插入图片描述

再说简单一点,就和虚拟机,模拟器功能类似,常规用法的时候,你的docker运行起来的容器,就相当于一个独立的系统,与你的宿主机是网络通讯的方法,其他内容都是相互独立的。
这样就有一种常见现象,你的宿主机可以比你的容器版本还低,挺有意思吧。
在这里插入图片描述

简单介绍一下使用方法,以后可以很迅速的用起来。

安装docker环境

安装必要软件,能够允许你的系统运行docker容器。我这里是CentOS7.9的版本。

yum -y install yum-utils device-mapper-persistent-data lvm2

增加docker 源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo  

安装docker平台容器包

yum -y install docker-ce

启动docker

systemctl start docker

自启动

systemctl enable docker

到这里就类似我们已经安装好了VMware这种工具了,后续想运行什么系统,只管去找镜像,安装即可
在这里插入图片描述

安装探针系统docker

在线安装centos7-host模式

docker run --net=host --privileged -itd -v /sys/fs/cgroup:/sys/fs/cgroup --name mydocker centos:7 /usr/sbin/init 

参数介绍,结尾还有更详细的介绍。

–net=host :容器与宿主机共享网络接口
–privileged:使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。
-v:挂载宿主机的一个目录。
-name:指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字 centos:7:下载centos7版本
-d:指定容器运行与前台或者后台,不加上时前台
-i: 打开 STDIN,用于控制台交互
-t: 支持终端登录 /usr/sbin/init:系统启动命令

进入容器的shell

docker exec -it mydocker /bin/bash

然后就当它是一个纯净的系统,安装部署你自己的软件,并且调试完成之后,就可以用来拷贝部署了。
不过这个纯净系统,可能过于纯净,好多常用指令都需要重新安装
在这里插入图片描述

如果run的时候,我们并没有让容器开机启动,后续可以通过如下方式增加自启动

docker update --restart=always mydocker

制作探针镜像包

首先停止容器

docker stop mydocker

把容器制作成镜像(docker commit 容器ID 新镜像名称)

docker commit mydocker mydocker

把镜像保存在当前路径下(docker save -o 新镜像名称.tar 镜像名称)

docker save -o mydocker.tar mydocker

此时的mydocker.tar,我们就可以拷贝出来,用来部署到其他设备了。不过这个东西随便装一下,也不小,记得删除掉那些不需要的文件,可以让镜像小一些
在这里插入图片描述

部署到其他设备

加载解压镜像包。

docker load --input mydocker.tar

从镜像重新创建容器

docker run --restart=always --privileged -itd -v /sys/fs/cgroup:/sys/fs/cgroup --name mydocker mydocker  /usr/sbin/init

这种就只要求你的宿主机有docker环境,就可以运行你的全部软件了,是不是很酷
在这里插入图片描述

其他操作

启动容器

docker start mydocker

查看所有容器

docker ps -a

镜像列表

docker images

检索镜像, 从镜像仓库中检索

docker search xxx

下载镜像

docker pull xxx

删除镜像

docker rmi xxx

Docker run 参数
常用选项说明

参数 含义
-d, --detach=false 指定容器运行于前台还是后台,默认为false
-i, --interactive=false 打开STDIN,用于控制台交互
-t, --tty=false 分配tty设备,该可以支持终端登录,默认为false
-u, --user=“” 指定容器的用户
-a, --attach=[] 登录容器(必须是以docker run -d启动的容器)
-w, --workdir=“” 指定容器的工作目录
-c, --cpu-shares=0 设置容器CPU权重,在CPU共享场景使用
-e, --env=[] 指定环境变量,容器中可以使用该环境变量
-m, --memory=“” 指定容器的内存上限
-P, --publish-all=false 指定容器暴露的端口
-p, --publish=[] 指定容器暴露的端口
-h, --hostname=“” 指定容器的主机名
-v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录
–volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录
–cap-add=[] 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities
–cap-drop=[] 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities
–cidfile=“” 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法
–cpuset=“” 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU
–device=[] 添加主机设备给容器,相当于设备直通
–dns=[] 指定容器的dns服务器
–dns-search=[] 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件
–entrypoint=“” 覆盖image的入口点
–env-file=[] 指定环境变量文件,文件格式为每行一个环境变量
–expose=[] 指定容器暴露的端口,即修改镜像的暴露端口
–link=[] 指定容器间的关联,使用其他容器的IP、env等信息
–lxc-conf=[] 指定容器的配置文件,只有在指定–exec-driver=lxc时使用
–name=“” 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字
–net=“bridge” 容器网络设置:
bridge 使用docker daemon指定的网桥
host //容器使用主机的网络
container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
none 容器使用自己的网络(类似–net=bridge),但是不进行配置
–privileged=false 指定容器是否为特权容器,特权容器拥有所有的capabilities
–restart=“no” 指定容器停止后的重启策略:
no:容器退出时不重启
on-failure:容器故障退出(返回值非零)时重启
always:容器退出时总是重启
–rm=false 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)
–sig-proxy=true 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

各种参数,满足你的不同需求
在这里插入图片描述

结束语

这几天的核心内容就是核酸,工作地核酸三次,间隔一天,居住地核酸三次,间隔一天,好巧不巧,没有一天重合。在这里插入图片描述
老老实实配合工作,希望能早点结束这场战争。至于囤物资什么的,当然不屯了,相信政府,就是最大的支持。
在这里插入图片描述
就算囤物资,我也偷偷囤,不告诉你们,偷偷囤在身上。

猜你喜欢

转载自blog.csdn.net/baidu_19348579/article/details/124422353