docker容器的创建与管理过程

网友投稿 296 2022-10-28

docker容器的创建与管理过程

通信流程1.docker通过grpc和containerd模块通信(runc)交换,dockerd和containerd通信的socker文件:/run/containerd/containerd.sock2.containerd在dockerd启动时被启动,然后containerd启动grpc请求监听,containerd处理grpc请求,根据请求做相应动作。3.若是创建容器,containerd拉起一个container-shim容器进程,并进行相应的创建操作。4.container-shim被拉起后,start/exec/create拉起runC进程,通过exit、control文件和containerd通信,通过父子进程关系和SIGCHLD(信号)监控容器中进程状态。在整个容器生命周期中,containerd通过epoll监控容器文件,监控容器事件。

镜像下载:1.从docker仓库将井下下载到本地,命令#docker pull 仓库服务器:端口/项目名称/镜像名称:tag(版本)号2.查看镜像名称#docker imagesrepository #镜像所属的仓库名称tag #镜像版本号(标识符),默认为latestimage id #镜像唯一ID标识CREATED #镜像创建时间VIRTUAL SIZE #镜像的大小3.镜像导出1.#docker save centos -o /opt/centos.tar.gz2.#docker save centos > /opt/centos.tar.gz4.镜像导入1.#docker load -i centos.tar.gz2.#docker load < centos.tar.gz5.删除容器#docker rm -fv -f :强制删除-v:删除数据目录6:删除镜像#docker rmi 容器操作的基本命令#docker run [选项] [镜像名] [shell命令] [参数] 1.容器里面必须有个一长久执行的进程在容器里面默认不能使用systemd作为PID唯一的守护进程,因为容器里面没有内核(keenel)在容器里面必须有一个进程可以一直运行下去,这个进程就会被封装为PID为1的守护进程1.以服务类型的命令需要镜像有相关的服务,且服务支持前台运行比如Nginx,daemon off2.shell命令tail 命令3.执行脚本主要是可以在容器启动的时候执行比较多的操作可以修改配置文件可以启动其他服务在同一个宿主机上,容器的名称是独一无二的不能重复的,而且端口映射也不能重复2.镜像名称必须在所有的选项后面-i:标准输入,保持各种输入-t:分配一个TTY3.显示正在运行的容器docker ps显示所有容器,包括已经关闭的docker ps -a容器状态:1.up:正在运行的容器2.created:被创建之后由于启动参数错误而没有启动成功的3.exited:已经推出的或者注销的4.pause:暂停的容器4.删除运行中的容器 docker rm -f 5.随机映射端口:docker run -P docker.io/nginx #前台启动并随机映射本地端口到容器的806.固定端口映射1.本地端口81映射到容器80端口docker run -p 81:80 --name nginx-test-port1 nginx2.本地IP:本地端口:容器端口docker run -p 192.168.10.205:82:80 --name nginx-test-port2 docker.io/nginx3.本地IP:本地随机端口:容器端口docker run -p 192.168.101.205::80 --name nginx-test-port3 docker.io/nginx4.本地IP:本地端口:容器端口/协议,默认协议为TCP协议docker run -p 192.168.101.205:83:80/udp --name nginx-test-port4 docker.op/nginx5.一次性映射多个端口+协议docker run -p 86:80/tcp -p 443:443/tcp -p 53:53/udp --name nginx-test-port5 docker.io/nginx7.进入一个容器1.docker exec -it <容器ID> /bin/bash2.nsenter方式进入1.使用inspect工具查询出容器的进程号docker inspect -f "{{.State.Pid}}" <容器ID>2.使用nsenter进入容器nsenter -t <获取到的进程号> -m -u -i -p3.脚本方式cat docker-in.sh#!/bin/bashdocker_in(){NAME_ID=$1PID=$(docker inspect -f "{{.State.Pid}}"${NAME_ID})nsenter -t ${PID} -m -u -i -n -p}docker_in $18.容器的启动、停止和重启:在虚拟机里面,我们可以通过重启服务或者重启虚拟机的方式进行配置变更和代码发布,但是,在k8s环境,是禁止通过重启服务或者重启容器来实现配置变更和代码发布。9.指定容器DNS:DNS服务默认采用宿主主机的dns地址,一是将dns地址配置在宿主机,二是将参数配置在docker启动脚本里面 -dns=1.1.1.1docker run -it --rm --dns 223.6.6.6 centos bash

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于Android平台的即时通信系统客户端设计
下一篇:华为联合业界领先的Wi-Fi应用服务提供商Purple发布面向商业的精准营销解决方案
相关文章

 发表评论

暂时没有评论,来抢沙发吧~