探索开源的容器引擎--------------Docker容器操作

目录

一、Docker 容器操作

1.1容器创建

1.2查看容器的运行状态

1.3启动容器

1.4创建并启动容器

1.4.1当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:

1.4.2在后台持续运行 docker run 创建的容器

1.4.3创建容器并持续运行容器

1.5查看容器的ip地址

1.6docker容器生命周期

1.7容器的进入

1.8停止容器

1.9宿主机的文件与容器内部文件复制问题

1.9.1复制到容器中

1.9.2从容器复制文件到主机

1.10容器的导出与导入

1.10.1容器导出格式

1.10.2容器导入格式

1.11删除容器

1.11.1删除已经终止状态的容器

1.11.2强制删除正在运行的容器

1.11.3批量停止所有容器

1.11.4批量停止所有容器

1.11.5批量删除所有容器

1.11.6批量删除镜像


一、Docker 容器操作

1.1容器创建

  • 容器创建:就是将镜像加载到容器的过程
  • 新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器

格式:docker create [选项] 镜像

常用选项:
-i:让容器开启标准输入
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell 

docker create -it nginx:latest /bin/bash

1.2查看容器的运行状态

#查看容器的运行状态
docker ps -a			#-a 选项可以显示所有的容器

1.3启动容器

格式:docker start 容器的ID/名称

1.4创建并启动容器

  • 可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令
  • 注意:容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出

docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉

/var/lib/docker

1.4.1当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:

(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
(2)利用镜像创建并启动一个容器;
(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
(5)分配一个地址池中的 IP 地址给容器;
(6)执行用户指定的应用程序,执行完毕后容器被终止运行。

docker run -itd nginx:latest /bin/bash
#-d选项,让程序再后台持续运行

 
docker run centos:7 /usr/bin/bash -c ls -lh /
#没有-d选项,执行完退出,-c选项可以将命令发送到容器中运行
 
docker run -d centos:7 /bin/bash -c "while true;do echo ydq;done"
#执行循环造成进程运行,但是会持续增加压力
  • -i:表示标准输入
  • -t:指定一个伪终端(环境)
  • -d:开启守护进程(后台运行)

docker run centos:7 /usr/bin/bash -c ls /
docker ps -a      #会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了

docker ps -a      #会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了

详细解释下哦

1.4.2在后台持续运行 docker run 创建的容器

需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。

并且容器所运行的程序不能结束

while true死循环

查看cpu

停止容器

cpu就减下来了

1.4.3创建容器并持续运行容器

docker run -itd --name test1 centos:7 /bin/bash   #创建容器并持续运行容器

1.5查看容器的ip地址

#要查看IP地址,需要开启一个容器,才会进行分配IP地址
 
docker inspect 【容器ID】
#查看指定id的详细信息

1.6docker容器生命周期

docker容器七个状态

  • cerated已创建 、还未运行的容器
  • running:正在运行中的容器
  • restarting:容器正在重启中
  • removeing:容器正在迁移中
  • paused:已暂停状态的容器
  • exited:停止状态的容器
  • dead 死亡 主要是操作系统出现异常 或 断点关机等有可能引发dead状态 ,但是 不是很常见

暂停和停止状态的区别:

  • paused 命令挂起指定的容器中的所有进程为暂停,
  • stop:表示杀掉正在运行的docker容器进程,默认是10s后

1.7容器的进入

需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器

需要进入容器进行命令操作时,可以使用docker exec 命令进入运行着的容器
 
格式:docker exec -it 容器ID/名称 /bin/bash
 
-i :选项表示让容器的输入保持打开
-t :选项表示让Docker分配一个伪终端

#容器的进入
需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。
 
格式:docker exec -it 容器ID/名称 /bin/sh
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。
 
docker start 容器id					#进入容器前,确保容器正在运行
docker exec -it 容器id /bin/sh
ls
exit				#退出容器后,容器仍在运行

docker ps -a

临时进入容器

docker run -it centos:7 bash      #不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止

docker run -it 会创建前台进程,但是会输入exit后会终止进程

dcoker attach 会通过连接stdin,连接到容器内输入输出流,会再输出exit后终止容器操作

docker exec -it 会连接到容器,可以像SSH一样进入容器内部,进行操作,可以通过exit退出容器,但不影响容器运行。

1.8停止容器

docker stop 【容器ID】
 
或
docker kill 【容器ID】
 
#stop和kill的区别
使用kill是直接关闭这个容器的进程,如果有正在运行的文件,那么可能造成数据丢失。
使用stop是给容器发出一个退出的信号,相当于给容器一些缓冲的余地。保存好自己的文件,然后再关闭。

1.9宿主机的文件与容器内部文件复制问题

linux 怎么复制
cp 原文件路径目标文件路径
docker cp l opt / abc容器id: /opt/abc


#======复制到容器中
echo abc123 > ~/test.txt
docker cp ~/test.txt 2592d3fad0fb:/opt/

#从容器复制文件到主机
docker cp 2592d3fad0fb:/opt/test.txt ~/abc123.txt

1.9.1复制到容器中

1.9.2从容器复制文件到主机

1.10容器的导出与导入

  • 用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。
  • 在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。
  • 可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移
#导出格式:docker export 容器ID/名称 > 文件名
docker export 2592d3fad0fb > centos7.tar

#导入格式:cat 文件名 | docker import – 镜像名称:标签
cat centos7.tar | docker import - centos7:test            #导入后会生成镜像,但不会创建容器

1.10.1容器导出格式

格式:docker export 容器ID/名称 > 文件名
docker export 2592d3fad0fb > centos7.tar

1.10.2容器导入格式

导入格式:cat 文件名 | docker import – 镜像名称:标签
cat centos7.tar | docker import - centos7:test         #导入后会生成镜像,但不会创建容器

导入后为镜像,还需额外创建容器,需要注意的是创建容器的时候需要额外添加容器启动命令

1.11删除容器

格式:docker rm [-f] 容器ID/名称

docker stop 容器ID
docker rm 2592d3fad0fb                #删除已经终止状态的容器

docker rm -f 2592d3fad0fb            #强制删除正在运行的容器

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash            #批量停止容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash                #批量删除所有容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

docker images | awk 'NR>=2{print "docker rmi "$3}'| bash            #批量删除镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi        #删除none镜像

docker rm $(docker ps -a -q)        #批量清理后台停止的容器

1.11.1删除已经终止状态的容器

docker rm 容器ID

1.11.2强制删除正在运行的容器

docker rm -f 容器ID			#强制删除正在运行的容器

docker rm -f  容器名称

1.11.3批量停止所有容器

1.11.4批量停止所有容器

1.11.5批量删除所有容器

docker ps -a |awk 'NR>=2{print "docker rm "$1}'|bash
法一:
docker ps -a |awk 'NR>=2 {print $1}' | xargs docker rm
#查看容器运行状态从第二行开始查看第一个字段并将结果传参给docker rm 删除
法二:
docker rm $(docker ps -aq) 
#将命令的结果付给变量进行删除

1.11.6批量删除镜像

总结:

1、docker是什么,能做什么

开源的容器引擎,可以在任何主机上运行容器应用,实现“一次封装,到处运行”的目的。

2、docker三个核心概念

镜像、容器、仓库

3、镜像管理命令

​
docker search <仓库/镜像名>          #搜索镜像
docker pull <仓库/镜像名>            #获取镜像
docker images                       #查看本地镜像
docker inspect <镜像ID>                   #查看镜像的详细信息
docker rmi <镜像ID/镜像名称:标签> -f        #删除镜像
docker save -o 镜像文件.tar 镜像名称:标签    #生成镜像文件
docker load -i[或<] 镜像文件               #加载镜像文件     
docker push 仓库名/镜像名:标签              #推送镜像到仓库
docker tag 库名:标签 新库名/新标签           #修改库名及标签

4、容器管理命令

docker create -i [–name=容器名称] 镜像名:标签        #镜像名创建容器
docker create -it [–name=容器名称] 镜像名 <命令>     #创建容器并导入命令
docker start <容器ID/名称>                          #启动容器
docker stop <容器ID/名称>                           #停止容器
docker ps -q                                       #查询运行状态的容器
docker ps -a                                       #查询所有容器
docker rm [-f] <容器ID/名称>                        #删除容器 (-f 强制删除正在运行的容器)
docker rm $(docker ps -aq)                     #删除所有容器
docker run [–name] -id                         #启动容器
docker exec -it 容器ID/名称 bash                #进入容器
docker run -it 容器ID/名称 bash                 #启动时进入容器
docker cp 宿主机文件 容器ID:容器目录             #将宿主机的文件复制到容器中
docker cp 容器ID:容器目录/文件 宿主机目录        #将容器中的文件复制到宿主机中
docker export 容器ID/名称 > 文件名              #将容器导出为文件
cat 文件名 | docker import - 镜像名称:标签      #将导出的容器文件,导入生成镜像

5、docker 

docker  version 
#查看版本

docker  info   
#查看docker详细信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/579322.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch基础:torch.load_state_dict()方法在加载时不会检查类型

相关阅读 Pytorch基础https://blog.csdn.net/weixin_45791458/category_12457644.html?spm1001.2014.3001.5482 笔者在使用torch.nn.module的load_state_dict中出现了一个问题&#xff0c;一个被注册的张量在加载后居然没有变化&#xff0c;一开始以为是加载出现了问题&#…

Kafka 3.x.x 入门到精通(07)——Java应用场景——SpringBoot集成

Kafka 3.x.x 入门到精通&#xff08;07&#xff09;——Java应用场景——SpringBoot集成 4. Java应用场景——SpringBoot集成4.1 创建SpringBoot项目4.1.1 创建SpringBoot项目4.1.2 修改pom.xml文件4.1.3 在resources中增加application.yml文件 4.2 编写功能代码4.2.1 创建配置…

debian配置BIND DNS服务器

前言 局域网内有很多台主机&#xff0c;IP难以记忆。 而修改hosts文件又难以做到配置共享和统一&#xff0c;需要一台内网的DNS服务器。 效果展示 这里添加了一个域名hello.dog&#xff0c;将其指向为192.168.1.100。 同时&#xff0c;外网的域名不会受到影响&#xff0c;…

基于粒子滤波器的电池剩余使用寿命计算matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 粒子滤波器基础 4.2 电池剩余使用寿命建模与预测 4.3 粒子滤波器在电池寿命预测中的应用 5.完整工程文件 1.课题概述 基于粒子滤波器的电池剩余使用寿命计算。根据已知的数据&#xff0c;预测未来…

前端框架编译器之模板编译

编译原理概述 编译原理&#xff1a;是计算机科学的一个分支&#xff0c;研究如何将 高级程序语言 转换为 计算机可执行的目标代码 的技术和理论。 高级程序语言&#xff1a;Python、Java、JavaScript、TypeScript、C、C、Go 等。计算机可执行的目标代码&#xff1a;机器码、汇…

高级IO|从封装epoll服务器到实现Reactor服务器|Part1

从封装epoll_server到实现reactor服务器(part1) 项目复习&#xff1a;从封装epoll_server到实现reactor服务器(part1)EPOLL模式服务器初步 select, poll, epoll的优缺点epoll的几个细节封装epoll_server基本框架先写好创建监听套接字和创建epoll模型可以Accept了吗&#xff1f…

鸿蒙OpenHarmony【轻量系统 运行】 (基于Hi3861开发板)

运行 联网配置 由于Hi3861为WLAN模组&#xff0c;您可以在版本编译及烧录后&#xff0c;通过如下操作&#xff0c;使开发板实现联网功能。 保持Windows工作台和Hi3861 WLAN模组的连接状态&#xff0c;确认串口终端显示正常。 复位Hi3861 WLAN模组&#xff0c;终端界面显示“…

网络攻击日益猖獗,安全防护刻不容缓

“正在排队登录”、“账号登录异常”、“断线重连”......伴随着社交软件用户的一声声抱怨&#xff0c;某知名社交软件的服务器在更新上线2小时后&#xff0c;遭遇DDoS攻击&#xff0c;导致用户无法正常登录。在紧急维护几小时后&#xff0c;这款软件才恢复正常登录的情况。 这…

视频通话实时换脸:支持训练面部模型 | 开源日报 No.235

iperov/DeepFaceLive Stars: 19.7k License: GPL-3.0 DeepFaceLive 是一个用于 PC 实时流媒体或视频通话的人脸换装工具。 可以使用训练好的人脸模型从网络摄像头或视频中交换面部。提供多个公共面部模型&#xff0c;包括 Keanu Reeves、Mr. Bean 等。支持自己训练面部模型以…

基于数据挖掘的斗鱼直播数据可视化分析系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 随着网络直播平台的兴起&#xff0c;斗鱼直播作为其中的佼佼者&#xff0c;吸引了大量用户和观众。为了更好地理解和分析斗鱼直播中的数据&#xff0c;本项目介绍了一个基于数据挖掘的斗鱼直播数据…

【图解计算机网络】简单易懂的https原理解析

简单易懂的https原理解析 https与http的区别混合加密对称加密非对称加密混合加密解析混合加密问题 摘要算法数字证书数字证书原理为什么通过CA证书可以解决中间人攻击的问题呢&#xff1f; https握手流程 https与http的区别 http是明文传输的&#xff0c;非常不安全&#xff0…

呆马科技——智慧应急执法监管平台

在当今社会&#xff0c;安全生产的重要性日益凸显。对于各级政府和企事业单位&#xff0c;当务之急是如何高效地对突发事件进行执法管理。平台应运而生&#xff0c;旨在通过信息化、智能化技术&#xff0c;提升安全管理的效率与准确性。 一、平台特点 整合各类平台的信息资源&…

添加github SSH Key

添加github SSH Key 使用 SSH 协议&#xff0c;您可以连接远程服务器和服务并对其进行身份验证。使用 SSH 密钥&#xff0c;您可以连接到 GitHub&#xff0c;而无需在每次访问时提供您的用户名和个人访问令牌。您还可以使用 SSH 密钥来签署提交。 #3224333333qq.com替换为你自己…

6.NVIC中断配置(ST的精简ARM中断体系)

void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)//设置优先级分组&#xff0c;整个项目共用一个分组 uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority) //计算优先级编码值&#xff0c;&#xff08;组号&…

Python爬虫--Ajax异步抓取腾讯视频评论

在某些网站 &#xff0c;当我们滑下去的时候才会显示出后面的内容 就像淘宝一样&#xff0c;滑下去才逐渐显示其他商品 这个就是采用 Ajax 做的 然后我们现在就是要编写这样的爬虫。 规律分析&#xff1a; 这个时候就要用到我们的 Fiddler 了 我们需要分析加载评论的规律 …

GateWay具体的使用之局部过滤器接口耗时

1.找规律 局部过滤器命名规则 XXXGatewayFilterFactory&#xff0c; 必须以GatewayFilterFactory结尾。 /* 注意名称约定 * AddRequestHeaderGatewayFilterFactory 配置的时候写的是 AddRequestHeader * AddRequestParameterGatewayFilterFactory 配置的时候写的是 A…

【语音识别】搭建本地的语音转文字系统:FunASR(离线不联网即可使用)

参考自&#xff1a; 参考配置&#xff1a;FunASR/runtime/docs/SDK_advanced_guide_offline_zh.md at main alibaba-damo-academy/FunASR (github.com)参考配置&#xff1a;FunASR/runtime/quick_start_zh.md at 861147c7308b91068ffa02724fdf74ee623a909e alibaba-damo-aca…

上位机图像处理和嵌入式模块部署(树莓派4b下使用sqlite3)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 嵌入式设备下面&#xff0c;有的时候也要对数据进行处理和保存。如果处理的数据不是很多&#xff0c;一般用json就可以。但是数据如果量比较大&…