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

news2025/1/15 6:49:27

 一、说明

        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/178725.html

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

相关文章

3.2主存储器的基本组成

文章目录一、引子二、半导体元件1.基本半导体元件&#xff08;1&#xff09;MOS管&#xff08;2&#xff09;电容2.读写二进制数&#xff08;1&#xff09;读出二进制①二进制1②二进制0&#xff08;2&#xff09;写入二进制3.存储体三、存储芯片的基本原理1.译码器2.控制电路3…

由Bitlocker问题引发的思考

由Bitlocker问题引发的思考一、什么是Bitlocker问题二、如何解决Bitlocker问题三、萌生的思考一、什么是Bitlocker问题 Bitlocker概述 BitLocker 驱动器加密是一项数据保护功能&#xff0c;它与操作系统集成&#xff0c;用于解决来自丢失、被盗或销毁不当的计算机的数据被盗或…

高级Spring之Bean后处理器

常见Bean后处理器的作用&#xff1a; public static void main(String[] args) {// ⬇️GenericApplicationContext 是一个【干净】的容器 干净:没有额外的添加bean工厂处理器,bean处理器,消除一些干拢GenericApplicationContext context new GenericApplicationContext();//…

(深度学习快速入门)第三章第三节3:深度学习必备组件之优化器和优化算法

文章目录一&#xff1a;优化算法&#xff08;1&#xff09;优化算法概述&#xff08;2&#xff09;梯度下降法二&#xff1a;优化器一&#xff1a;优化算法 &#xff08;1&#xff09;优化算法概述 优化算法&#xff1a;对于深度学习问题&#xff0c;我们通常会先定义损失函数…

【华为上机真题】寻找相同子串

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

2023牛客寒假算法集训营3

&#xff08;数学场真折磨人&#xff09; A. 不断减损的时间&#xff08;贪心&#xff09; 题意&#xff1a; 给定一个数组&#xff0c;任意次操作&#xff0c;每次操作可以 选择一个偶数除以 222 。 求最终数组所有元素之和的最小值。 思路&#xff1a; 要使得所有元素之…

(python)selenium工具的安装及其使用

selenium概述 一个自动化测试工具。它可以让python代码调用浏览器。并获取到浏览器中加载的各种资源 优缺点&#xff1a; 优点 selenium能够执行页面上的js&#xff0c;对于js渲染的数据和模拟登陆处理起来非常容易使用难度简单爬取速度慢&#xff0c;爬取频率更像人的行为&a…

k8s安装nfs设置pv pvc并部署mysql

在k8s系列第一篇中提到有一个用于nfs机器没有部署任何东西&#xff0c;这一篇我们来搭建nfs服务&#xff0c;并在k8s上部署mysql&#xff0c;并将mysql的data目录映射到nfs中。网上的部分教程为了简便教学用的hostPath做的映射&#xff0c;只是便于教学的简便做法&#xff0c;实…

Linux常用命令——skill命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) skill 向选定的进程发送信号冻结进程 补充说明 skill命令用于向选定的进程发送信号&#xff0c;冻结进程。这个命令初学者并不常用&#xff0c;深入之后牵涉到系统服务优化之后可能会用到。 语法 skill(选项…

vim的自动化配置(一条指令就够了)

应该没有人在因为vim中括号不能对齐和补齐和自动缩进而烦恼吧&#xff01; 自动化配置不香吗&#xff1f; 如果你想把你的vim给配置成像vs2022编译器一样&#xff0c;那么恭喜你&#xff0c;当你看到这篇文章的时候你就要成功了&#xff01; 一条指令&#xff0c;下载出vs20…

Java 分支及循环语句

文章目录一、分支语句1. if 语句2. switch 语句二、循环语句1. for 循环语句2. while 循环语句3. do...while 循环语句4. 跳转控制语句5. 循环嵌套6. Random6.1 猜数字游戏一、分支语句 1. if 语句 if(关系表达式1) {语句体1; } else if(关系表达式2){语句体2; } ... else {语…

带你去了解什么是makefile文件

GNU make命令是用来控制从源文件生成可执行文件或非可执行文件的方式。那么make命令又是通过makefile文件来控制了。所以了解makefile文件就显得很有必要了。 makefile文件由许多规则组成&#xff0c;这些规则的形式一般是这样的&#xff1a; 目标 ... : 先决条件 ...命令目标…

PMP范围和需求的区别是什么?

定义需求&#xff1a;为满足业务需求&#xff0c;某个产品、服务或成果必须达到的条件或具备的能力。范围&#xff1a;项目所提供的产品、服务和成果的总和。在PMI中我们常说的范围一般为项目范围&#xff0c;其定义为&#xff1a;为交付具有规定特性与功能的产品、服务或成果而…

现金+股票再平衡策略的测试 - 针对恒指

最近很多人在讨论一个策略&#xff0c;就是50%现金&#xff0c;50%ETF&#xff0c;然后按照一定的策略再平衡一次&#xff0c;将会获得比单纯股票投资更安全的策略和更加稳定的收益。我做了一个简单的回测。 测试模式1 1990-01-02 - 2023-01-20 长期涨模式 首先假设我找到了一…

Redis面试题万字汇总 [施工中]

1. Redis 数据结构Redis底层有五种数据结构,String, long / double : 底层是小于Long的数字时, 使用的时long字符.它也可以支持double类型浮点数,embstr : 如果是短字符串,长度小于39个字节, 使用的是embstr数据结构. 之所以是39字节,主要是redis的jemalloc最小单位是64个字节,…

深度估计源码详解

源码链接见文末 论文地址: Monocular Depth Estimation Using Laplacian Pyramid-Based Depth Residuals | IEEE Journals & Magazine | IEEE Xplore 1.项目环境配置 项目中所包含的库直接使用pip install就好,但是有3个地方需要处理一下: fcntl,这个需要打开anacon…

DFS(六) N皇后 II

n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/pr…

浮动 应用场景 浮动的基本特点 高度坍塌 解决浮动时盒子冲突问题

目录浮动应用场景浮动的基本特点盒子尺寸盒子排列文字环绕高度坍塌浮动 视觉格式化模型&#xff0c;大体上将页面中盒子的排列分为三种方式&#xff1a; 常规流浮动定位 应用场景 文字环绕横向排列 浮动的基本特点 修改float属性值为&#xff1a; left&#xff1a;左浮动…

【HBase入门】6. 常用 Shell 操作(3)

前言 我们可以以shell的方式来维护和管理HBase。例如&#xff1a;执行建表语句、执行增删改查操作等等。 过滤器的用法 过滤器一般结合scan命令来使用。打开HBase的JAVA API文档。找到RowFilter的构造器说明&#xff0c;我们来看以下&#xff0c;HBase的过滤器该如何使用。 …

快速排序的实现和优化~

相比于冒泡排序的改进点&#xff1a; 在前面学过的冒泡排序中&#xff0c;由于扫描过程只对相邻的两个元素进行比较&#xff0c;因此在互换两个相邻元素时&#xff0c;只能消除一个逆序&#xff0c;如果能通过两个(不相邻的)元素的交换&#xff0c;消除待排序记录 中的多个逆序…