【docker概念和实践 5】容器命令和案例(1)

news2024/11/27 16:24:30

 一、说明

        docker的四个要素是:本地的Docker-engine、网上(本地)的仓库、镜像images、容器;初学者必须了解这是个概念的关系。但是,真正重要的概念是容器,因为,只有掌握了容器,才能具备一定创造力,才能用Docker构建项目,才能最后实现Docker真实价值。

        本篇讲述当Docker安装完成后,在engine服务、image命令都掌握后,对容器进行的由浅入深的操作过程。

二、容器和Docker其它要素的关系

docker的是个要素和它们之间的关系:

  •  仓库:是用来存放镜像的数据库,一般在远端官方服务器上,客户可以用registry建立本地仓库,这是后话。
  • 镜像:镜像相当于图纸,是用于生成容器这种产品的模板。
  • 引擎:是管理本地dacker运作的服务软件,包括:客户端、通信模块、用户指令管理、拉起各种app实现运行等。
  • 容器:容器是在本地真正参与项目的独立隔间、每个隔间内有操作系统、各种目的的进程;可以与容器之外的对象通信,比如:容器和容器通信。

        在以上四个方面,容器是重中之重,也是最复杂、最关键的Docker内容,本文下面将详细解释容器的种种操作指令。

三、容器指令

3.1 命令格式

        注意:docker命令有两种,一种是docker manager 命令,另一种是docker命令;docker管理层命令只是增加了中间层,表明该命令是针对哪些对象,比如:

docker pull nginx   和  docker image pull nginx        一样的。
docker run  nginx   和  docker container run nginx     一样的。

3.2 容器种类

        容器种类有多种,根据不同容器,需要对容器内部的进程进行输入、输出操作,因此选择的命令参数不同。

提示:容器从运行方式上存在多种,现说明三种:

  • <1>    运行一次就退出:此容器不驻留内存,执行一遍就退出进程。无需参数。
  • <2>   守护进程,该容器相当于服务进程被拉起,驻留内存,无交互模式。需要-it参数
  • <3>    交互式守护进程:可以与终端进行交互,驻留内存,需要 -d参数。
  • <4>   网络进程:是网络进程,就需要端口映射这样的参数,-p 或 -P。

        因为以上的不同,参数选项也不同,因此,存在用错参数的可能性,务必注意。

3.3 容器命令总览

命令描述
docker container attach

将本地标准输入、输出和错误流附加到正在运行的容器

docker container commit

从容器的更改创建新镜像

docker container cp

在容器和本地文件系统之间复制文件/文件夹

docker container create

创建一个新容器

docker container diff

检查容器文件系统上文件或目录的更改

docker container exec

在正在运行的容器中运行命令

docker container export

将容器的文件系统导出为 tar 存档

docker container inspectDisplay detailed information on one or more containers
docker container killKill one or more running containers
docker container logsFetch the logs of a container
docker container lsList containers
docker container pausePause all processes within one or more containers
docker container portList port mappings or a specific mapping for the container
docker container pruneRemove all stopped containers
docker container renameRename a container
docker container restartRestart one or more containers
docker container rmRemove one or more containers
docker container runRun a command in a new container
docker container startStart one or more stopped containers
docker container statsDisplay a live stream of container(s) resource usage statistics
docker container stopStop one or more running containers
docker container topDisplay the running processes of a container
docker container unpauseUnpause all processes within one or more containers
docker container updateUpdate configuration of one or more containers
docker container waitBlock until one or more containers stop, then print their exit codes

四、命令用法和案例

4.1  docker run命令

         这是第一个容器命令,创建一个新的容器并运行一个命令。docker run 相当于执行了两API:

  • /containers/create   生成
  • /containers/(id)/start 启动

1  命令形式:

docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

        此命令从image复制一个容器,并启动;因此,不可长期执行,否则复制出一堆相同的容器,ID号不同。

2  option选项参数

options 说明
-i   以交互模式运行容器,通常与 -t 同时使用
-t    启动容器后,为容器分配一个命令行,通常与 -i 同时使用
-v  
 
 目录映射,容器目录挂载到宿主机目录,格式: <host目录>:<容器目录>
-d    守护进程,后台运行该容器
-p   指定端口映射,格式:主机(宿主)端口:容器端口
-P随机端口映射,容器内部端口随机映射到主机的端口(49153起始 49153到65535)
–name“nginx-lb”    容器名字
-m,--memory bytes    设置容器使用内存最大值
-h,--hostname string    指定容器的 host name
–dns8.8.8.8    指定容器 dns 服务器
 
-eusername=“ritchie”    设置环境变量
 
–restart Docker    重启Docker-Engine后,容器是否自动重启
–privileged    容器内是否使用真正的 root 权限
-u    以什么用户身份创建容器

3 参数用法案例

 示例1:  -it  选项和交互式容器 
执行一个docker命令:

docker run ubuntu:20.04

        再用docker ps查看,发现没有容器执行,这是因为像ubuntu这样的容器,一定是交互式的,因此用交互式参数才能启动。

docker run -it  ubuntu:20.04  bash

可以看到,进入容器内部提示符号。两种退出交互容器方式:

  •      exit退出容器交互,容器退出。用docker ps看不到ubuntu容器。
  •     ctl+p+q退出容器交互,容器驻留。用docker ps看到ubuntu容器。

 示例2:  -d  选项和后台运行

 同样的命令加-d后:

docker run -it  -d ubuntu:20.04  bash

ubuntu将在后台启动,通过docker ps可以看到,这里提出新问题,如何进入ubuntu?

 示例3:  -name  选项 

docker run -it  -d  --name myubuntu ubuntu:20.04  bash

这里用--name给容器起名,否则的话,系统随意起了个名字。

4.2 docker exec命令

        这是进入容器内部操作系统的命令。必须带-it交互终端的参数。

  • 命令格式:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • 命令意义:

        进入已经后台启动的docker容器中。由于可进入容器必须是交互式容器,因此,这里必须是-it选项,bash或/bin/bash启动shell对话。

        注意: exec命令后面必跟-it参数!

  • 命令案例1
docker exec -it  ubuntu:20.04  bash

        进入已经后台运行的ubuntu中。注意,此时用exit退出后,容器依然在运行,这和run 指令不同。注意:这里-it 和后面的bash是固定搭配。

4.3 docker ps 命令

语法:

docker ps [OPTIONS]

参数有,OPTIONS说明:

  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

  • --format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • --no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

案例1:-a查看所有

docker ps -a

将显示运行的,暂停的容器。

案例2:-q查看容器编号显示

docker ps -q

此命令显示所有在启动容器编号。 

案例3:--no-trunc :不截断输出。

docker ps --no-trunc

显示容器的全信息,包括status,如图:

4.4 docker rm 命令

docker rm :删除一个或多个容器。

语法

docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明

  • -f :通过 SIGKILL 信号强制删除一个运行中的容器。

  • -l :移除容器间的网络连接,而非容器本身。

  • -v :删除与容器关联的卷。

案例1:强制删除容器 db01、db02:

docker rm -f db01 db02

案例2:移除容器 nginx01 对容器 db01 的连接,连接名 db:

docker rm -l db 

案例3:删除容器 nginx01, 并删除容器挂载的数据卷:

docker rm -v nginx01

案例4:删除所有已经停止的容器:

docker rm $(docker ps -a -q)

案例5:删除某镜像生成的所有容器

        删除所有imaeID=  cae5f8e9bd47的容器

docker rm $(docker ps -a | grep cae5f8e9bd47 | awk '{print $1}')

解释:这里用到shell的命令,grep,awk,意思是:

1)将docker ps -a 的结果看成一个文件,该文件内满足grep和awk的项目被挑选出。

2)grep意义:将一个输入文本文件,将文中有某字段(以上cae5f8e9bd47)的行挑选出来。

3)awk意义:将文件中所有行的第n列挑选出来。上面的'{print $1}'就是指的第一列。

4.5 docker commit命令

docker commit :从容器创建一个新的镜像。也就是从某个容器返回镜像的操作:

 语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :提交的镜像作者;author作者。

  • -c :使用Dockerfile指令来创建镜像;

  • -m :提交时的说明文字;memory即记号的意思。

  • -p :在commit时,将容器暂停。

案例1:提交镜像 

docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1 

注意:这里的mymysql:v1是【镜像名字:tag】如果不给出v1,tag默认为latest。

4.6 docker cp命令

docker cp :用于容器与主机之间的数据拷贝。

语法

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:

  • -L :保持源目标中的链接

案例1:

  • 将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/
  • 将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
docker cp /www/runoob 96f7f14e99ab:/www
  • 将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
docker cp  96f7f14e99ab:/www /tmp/

五、后记

        并不是说docker的容器命令就是完结,而是这里只罗列第一批应该掌握的命令,以后内容将很多,那将在本文的续篇讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot整合SSM

添加pom依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version><scope>provided</scope></dependency><dependency><groupId>org.mybati…

macOS Monterey 12.6.3 (21G419) Boot ISO 原版可引导镜像

macOS Monterey 12.6&#xff0c;皆为安全更新&#xff0c;不再赘述。 macOS Monterey 12.6&#xff0c;发布于 2022 年 9 月 12 日&#xff08;北京时间今日凌晨&#xff09;&#xff0c;本次为安全更新。 今日&#xff08;2022-07-21&#xff09;凌晨&#xff0c;Apple 终于…

【Hadoop】HDFS高可用与高扩展原理分析(HA架构与Federation机制)

文章目录一、HDFS的高可用性&#xff08;HA架构&#xff09;二、HDFS的高扩展性&#xff08;Federation机制&#xff09;三、HA架构 Federation机制一、HDFS的高可用性&#xff08;HA架构&#xff09; 为保证HDFS的高可用性&#xff0c;即当NameNode节点机器出现故障而导致宕机…

【操作系统】—— Windows常用快捷键(带你快速了解)

&#x1f4dc; “作者 久绊A” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴。 &#x1f341; 操作系统【带你快速了解】对于电脑来说&#xff0c;如果说…

【JavaEE】定时器的简单实现

目录 定时器 实现定时器 描述任务 保存任务 扫描任务 执行任务 定时器 在实现定时器之前&#xff0c;先来简单的了解一下什么是定时器。 定时器是软件开发中一个重要的组件。比如到了什么时候&#xff0c;干一件什么样的事情&#xff1b;多少秒之后干什么。本篇文章介绍…

活动星投票最美养生师展网络评选微信的投票方式线上免费投票

“最美养生师”网络评选投票_用户同什么方法挑选投票小程序_最好的投票小程序用户在使用微信投票的时候&#xff0c;需要功能齐全&#xff0c;又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便&#xff0c;用户可以随时使用手机微信小程序获得线上投票服务&…

Hive函数大全–完整版(三)

官网参考地址&#xff1a; 官网UDF - Apache Hive 1. 基本数据类型 2. 基础运算符与函数 SQL结果A IS NULL 空A IS NOT NULL 非空 A LIKE B 模糊匹配A RLIKE B 正则表达式匹配A REGEXP B 正则表达式匹配 3. 类型转换 cast(expr as <type>)…

园区网典型组网架构及案例实践

什么是园区网园区网络是限定区域内&#xff0c;连接人与物的局域网络&#xff1b;园区网络通常只有一个管理主体&#xff1b;如果有多个管理主体&#xff0c;通常被认为为多个园区网络。园区网络典型架构小型园区网络典型架构小型园区网络应用于接入用户数量较少的场景&#xf…

SpringBoot 统一功能处理

SpringBoot 统一功能处理前言一、用户登录权限效验1.1 最初的用户登录验证1.2 Spring AOP 用户统一登录验证的问题1.3 Spring 拦截器1.3.1 准备工作1.3.2 自定义拦截器1.3.3 将自定义拦截器加入到系统配置1.4 拦截器实现原理1.4.1 实现原理源码分析1.4.2 拦截器小结1.5 扩展&am…

CBC模式的3DES加解密(课程设计报告)

目录一、实验内容二、实验原理2.1 DES加解密原理2.1.1 DES加解密的基本原理2.1.2 DES加解密的关键步骤2.2 3DES加解密原理2.3 分组密码CBC加解密模式原理2.4 填充原理三、实验过程3.1 变量说明3.1.1 主函数变量说明3.1.2 其他重要变量说明3.2 函数功能说明3.2.1主函数说明3.2.2…

并行训练方法-单机多卡

一、简单方便的 nn.DataParallel DataParallel 可以帮助我们&#xff08;使用单进程控&#xff09;将模型和数据加载到多个 GPU 中&#xff0c;控制数据在 GPU 之间的流动&#xff0c;协同不同 GPU 上的模型进行并行训练&#xff08;细粒度的方法有 scatter&#xff0c;gather …

学习记录670@项目管理之变更管理

变更的分类 按变更性质分为重大变更、重要变更和一般变更&#xff0c;可通过不同审批权限控制。按变更的迫切性分为紧急变更和非紧急变更&#xff0c;可通过不同的变更处理流程进行控制。按变更所发生的领域和阶段&#xff0c;可分为进度变更、成本变更、质量变更、设计变更、…

3小时精通opencv(四) 透视变换与图像拼接

3小时精通opencv(四) 透视变换与图像拼接 参考视频资源:3h精通Opencv-Python 文章目录3小时精通opencv(四) 透视变换与图像拼接透视变换图像拼接全部代码透视变换 透视变换建立两平面场之间的对应关系&#xff0c; 将原始图片投影到一个新的视平面上 # Author : JokerTon…

Elasticsearch7.8.0版本入门——JavaAPI操作(环境准备)

目录一、创建springboot项目二、pom.xml文件引入相关maven依赖三、创建客户端对象一、创建springboot项目 创建springboot项目步骤参考此博文链接&#xff1a;https://wwwxz.blog.csdn.net/article/details/91977374 二、pom.xml文件引入相关maven依赖 引入elasticsearch依赖…

NR PUSCH(七) 相干传输

微信同步更新欢迎关注同名mode协议笔记 这篇就是为记录一个概念在协议中的体现方式。相干传输被定义为一种UE能力。考虑到UE的实现成本&#xff0c;NR不要求所有的UE都能做到所有的天线端口都可以相干传输。NR定义了以下3种UE的相干传输能力。 (1)全相干&#xff08;Fully-coh…

正点原子Linux驱动第三期

目录 第一讲 系统镜像烧写 第二讲 u-boot编译 第三讲 uboot命令使用 第四讲 Uboot源码分析 第五讲 uboot顶层 Makefile分析 第六讲 Uboot启动流程 第七讲 uboot移植 第八讲 UBoot图形化界面配置 第九讲 Linux 内核移植 第十讲 Linux内核源码目录分析 第十一讲 Linux…

六、python操作mysql篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 下载pymysql 2. 新建数据库 3. mysql服务器版本查询 4. 执行非查询性质的SQL 5. 执行查询性质的sql 6. 执行新增sql 1. 下载pymysql 右下角点击版本 选择解释器设置 点击加号 搜…

Python(for和while)循环嵌套及用法

Python 不仅支持 if 语句相互嵌套&#xff0c;while 和 for 循环结构也支持嵌套。所谓嵌套&#xff08;Nest&#xff09;&#xff0c;就是一条语句里面还有另一条语句&#xff0c;例如 for 里面还有 for&#xff0c;while 里面还有 while&#xff0c;甚至 while 中有 for 或者 …

无需下载就能使用的图像编辑器?能代替 Photoshop 吗?#Photopea

一款在线就能使用的图像编辑器&#xff0c;好用&#xff1f;还免费&#xff1f;Photopea 图源: Photopea 官网Photopea 可以处理光栅图形和矢量图形。您可以将它用于简单的任务&#xff0c;例如调整图像大小&#xff0c;也可以用于复杂的任务&#xff0c;例如设计网页、创建插图…

Day05 - 内置函数和参数

0. 列表 推导式 格式: 列表变量 [表达式 for 变量 in range(10)] 表达式中需要使用后面的变量 列表推导 式 创建一个具有一百个数字的列表 # c_l [] # for i in range(100): # c_l.append(i)# 使用列表推导式来完成列表的创建 c_l [i for i in range(100)] # c_l [x f…