【docker】容器的运行、停止、查看等基本操作

容器与镜像的区别

image镜像

  • Docker image是一个read-only文件,位于磁盘上
  • 这个文件包含文件系统,源码,库文件,依赖,工具等一些运行application所需要的文件
  • 可以理解成一个模板
  • docker image具有分层的概念

container容器

  • 一个运行中的docker image,位于内存中
  • 实质是复制image并在image最上层加上一层read-write的层(称之为container layer,容器层)
  • 基于同一个image可以创建多个container

容器的基本操作

容器的基本操作都是命令docker container开头,大部分情况下可以简写为docker,例如docker container run可以简写为docker run

下面是docker container开头的命令列表:

$ docker container --helpUsage:  docker container COMMANDManage containersCommands:attach      Attach local standard input, output, and error streams to a running containercommit      Create a new image from a container's changescp          Copy files/folders between a container and the local filesystemcreate      Create a new containerdiff        Inspect changes to files or directories on a container's filesystemexec        Run a command in a running containerexport      Export a container's filesystem as a tar archiveinspect     Display detailed information on one or more containerskill        Kill one or more running containerslogs        Fetch the logs of a containerls          List containerspause       Pause all processes within one or more containersport        List port mappings or a specific mapping for the containerprune       Remove all stopped containersrename      Rename a containerrestart     Restart one or more containersrm          Remove one or more containersrun         Run a command in a new containerstart       Start one or more stopped containersstats       Display a live stream of container(s) resource usage statisticsstop        Stop one or more running containerstop         Display the running processes of a containerunpause     Unpause all processes within one or more containersupdate      Update configuration of one or more containerswait        Block until one or more containers stop, then print their exit codes

docker container create

docker container create只是新建一个容器,并不启动一个容器。

$ docker container create --name nginx -p 8899:80 nginx
5932d5e624f7cced52fb8f9282a01c5a112fba249236d028733c424ec7099a6e

docker container run

docker container run新建并启动一个容器。

$ docker container run -d --name nginx -p 8899:80 nginx
ee86be635d8b0ff99e36796191da4ee5c34241f37dc0f66c8b21e2a85517e9de

选项:

  • -d:表示以detach模式后台运行
  • –name:为容器指定一个名字
  • -p:端口映射,宿主机端口为8899映射到docker内端口80

docker container ls

docker container ls查看启动的容器,也可以简写为docker ps或者docker container ps

$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                   NAMES
ee86be635d8b   nginx     "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:8899->80/tcp, :::8899->80/tcp   nginx

选项:

  • -a:列出所有的容器(包括正在运行的和已停止运行的)
  • -l:显示最近创建的容器
  • -n:显示最近创建的n个容器
  • -q:只显示容器ID

docker container stop

docker container stop停止运行中的容器,后面需要带上容器的名称或者ID,ID可以只写前面几位,不需要写全,能根据ID前缀找到对应的唯一的容器即可,其他带ID的命令也类似。

$ docker container stop ee86be635d8b
ee86be635d8b$ docker container stop nginx
nginx$ docker container stop ee8
ee8

docker container start

docker container start启动已停止的容器。

$ docker container start nginx
nginx

docker container restart

docker container restart重启运行中的容器。

$ docker container restart nginx
nginx

docker container kill

docker container kill强制停止运行中的容器。

$ docker container kill nginx
nginx

docker container rm

docker container rm可以删除容器。

$ docker container rm nginx
nginx

如果容器的状态是正在运行中是不可以删除的,此时可以加上-f选项来强制删除运行中的容器。

docker container logs

docker container logs可以用来查看容器的日志。

$ docker container logs -f nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
。。。。。。

如果要实时的日志,可以使用-f选项,类似于tail -f命令。

docker container top

docker container top可以用来查看容器内的进程情况,类似于top命令。

$ docker container top nginx
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                6083                6063                0                   19:37               pts/0               00:00:00            nginx: master process nginx -g daemon off;
systemd+            6144                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6145                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6146                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6147                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6148                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6149                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6150                6083                0                   19:37               pts/0               00:00:00            nginx: worker process
systemd+            6151                6083                0                   19:37               pts/0               00:00:00            nginx: worker process

docker container inspect

docker container inspect查看容器的详细信息,如镜像信息、环境变量、网络等。

$ docker container inspect nginx
。。。。。。

docker container exec

docker container exec可以进入到运行中的容器并执行一个命令。

$ docker container exec -it nginx /bin/bash
root@11f5e64bb119:/#

docker container attach

docker container attach同样可以进入到运行中的容器并执行一个命令。

docker container attach进入容器然后退出会导致容器停止,而docker container exec进入容器后退出不会导致容器停止,这是两者的区别。

$ docker container attach nginx

docker container cp

docker container cp用来在宿主机和容器之间拷贝文件。

从宿主机拷贝文件到容器中:

$ docker container cp test.txt nginx:/home

从容器中拷贝文件到宿主机:

$ docker container cp nginx:/docker-entrypoint.sh .

docker container export

docker container export是将一个容器导出为一个压缩的镜像。

$ docker container export nginx > nginx.tar.gz

后续如果要将这个压缩的镜像导入要使用docker image import命令。

docker container commit

docker container commit是将一个容器提交为为一个镜像。

$ docker container commit -m "nginx v1.0" nginx nginx:v1.0
sha256:0b36bf0f81dda62c4ced29e84d0b44a7c812bb643b2c1d898df0b8897f58c964

docker container diff

docker container diff命令用于检查容器文件系统上文件或目录的更改。

$ docker container diff nginx
C /run
A /run/nginx.pid
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf

docker container pause

docker container pause暂停一个或多个容器内的所有进程。

$ docker container pause nginx
nginx

使用docker container ls可以看到容器的状态为pause

docker container unpause

docker container unpause取消暂停一个或多个容器内的所有进程。

$ docker container unpause nginx
nginx

此时容器的状态又变为UP

docker container rename

docker container rename重命名容器。

$ docker container rename nginx ng

docker container port

docker container port列出容器的端口映射或容器的特定映射。

$ docker container port nginx
80/tcp -> 0.0.0.0:8899
80/tcp -> :::8899

docker container update

docker container update可以更新一个或多个容器的配置,可以更新CPU、内存等配置信息。

具体可以更新的选项如下:

$ docker container update --helpUsage:  docker container update [OPTIONS] CONTAINER [CONTAINER...]Update configuration of one or more containersOptions:--blkio-weight uint16        Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)--cpu-period int             Limit CPU CFS (Completely Fair Scheduler) period--cpu-quota int              Limit CPU CFS (Completely Fair Scheduler) quota--cpu-rt-period int          Limit the CPU real-time period in microseconds--cpu-rt-runtime int         Limit the CPU real-time runtime in microseconds-c, --cpu-shares int             CPU shares (relative weight)--cpus decimal               Number of CPUs--cpuset-cpus string         CPUs in which to allow execution (0-3, 0,1)--cpuset-mems string         MEMs in which to allow execution (0-3, 0,1)--kernel-memory bytes        Kernel memory limit-m, --memory bytes               Memory limit--memory-reservation bytes   Memory soft limit--memory-swap bytes          Swap limit equal to memory plus swap: '-1' to enable unlimited swap--pids-limit int             Tune container pids limit (set -1 for unlimited)--restart string             Restart policy to apply when a container exits

下面的例子可以更改容器的重启策略:

$ docker container update --restart=no nginx
nginx

参数说明:

  • no:默认策略,在容器退出时不重启容器
  • on-failure:在容器非正常退出时(退出状态非0),才会重启容器
  • on-failure:3:在容器非正常退出时重启容器,最多重启3次
  • always:在容器退出时总是重启容器
  • unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

docker container wait

docker container wait阻止一个或多个容器停止,然后打印退出代码。

$ docker container wait nginx
0

docker container prune

docker container prune删除所有停止的容器。

$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
5932d5e624f7cced52fb8f9282a01c5a112fba249236d028733c424ec7099a6e

容器运行的两种交互模式

attach模式

例如:

$ docker container run -p 80:80 nginx

通过这种方式创建的容器,容器会在前台执行。

容器的输入输出结果会反映到本地端,本地端的输入输出也会反映到容器,例如能在终端看到网页浏览器的 log,ctrl+c会让容器停止。

一般情况不推荐使用attach模式。

detach模式

例如:

$ docker container run -d -p 80:80 nginx
73773e7f0d409e4fba9b1ca6b0c0f2eebab7fa9b030dfe4d2c1cf2865c7275bd

通过这种方式创建的容器会在后台执行,命令行打印完容器的ID就结束了。

连接容器的shell

docker container run -it创建一个容器并进入交互式模式:

$ docker container run -it nginx /bin/bash
root@7faafc56bd4f:/# exit
exit

如果带了-d参数,-it就不会生效。

docker container exec -it在一个已经运行的容器里执行一个额外的command:

$ docker container run -d nginx
06d4f86b592e417c876bc66bd62f5ddbd3aeaa1c8c6dd93670ef73151f32a851$ docker container exec -it 06 bash
root@06d4f86b592e:/#

批量删除容器

$ docker container rm -f $(docker container ls -aq)
06d4f86b592e
7faafc56bd4f

docker container run背后发生了什么?

$ docker container run -d --publish 80:80 --name webhost nginx
  1. 在本地查找是否有nginx这个image镜像,但是没有发现
  2. 去远程的image registry查找nginx镜像(默认的registry是Docker Hub)
  3. 下载最新版本的nginx镜像 (nginx:latest 默认)
  4. 基于nginx镜像来创建一个新的容器,并且准备运行
  5. docker engine分配给这个容器一个虚拟IP地址
  6. 在宿主机上打开80端口并把容器的80端口转发到宿主机上
  7. 启动容器,运行指定的命令(这里是一个shell脚本去启动nginx)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

error: can‘t find Rust compiler

操作系统 win11 pip install -r requirements.txt 报错如下 Using cached https://pypi.tuna.tsinghua.edu.cn/packages/56/fc/a3c13ded7b3057680c8ae95a9b6cc83e63657c38e0005c400a5d018a33a7/pyreadline3-3.4.1-py3-none-any.whl (95 kB) Building wheels for collected p…

Python编程——深入了解不可变的元组

作者:Insist-- 个人主页:insist--个人主页 本文专栏:Python专栏 专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。 目录 一、元组是什么 二、元组的定义 1、相同类型组成元组…

力扣92. 局部反转链表

92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&am…

接口优化通用方案

目录 批量异步、回调缓存预取池化并行锁粒度索引大事务海量数据 批量 批量思想&#xff1a;批量操作数据库 优化前&#xff1a; //for循环单笔入库 for(TransDetail detail:transDetailList){ insert(detail); } 优化后&#xff1a; batchInsert(transDetailList); 异步、回…

【论文精读】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 前言Abstract1. Introduction2. Related Work3. Method3.1. Overall Architecture3.2. Shifted Window based Self-AttentionSelf-attention in non-overlapped windowsShifted window partitioning …

阿里云上linux服务器安装tomcat

一、准备材料 白嫖了试用期的服务器玩了一阵子&#xff0c;重新购买一个服务器 配置参数&#xff1a;1核2G 贷款1M 阿里云服务器、MobaXterm、jdk1.8、tomcat8.5.78 安装参数&#xff1a;jdk1.8.0;tomcat8.5.78 官方网址&#xff1a;tomcat官方网址、JDK-8 二、java环境…

Ansible学习笔记9

yum_repository模块&#xff1a; yum_repository模块用于配置yum仓库的。 测试下&#xff1a; [rootlocalhost ~]# ansible group1 -m yum_repository -a "namelocal descriptionlocalyum baseurlfile:///mnt/ enabledyes gpgcheckno" 192.168.17.106 | CHANGED &g…

【element-ui】el-dialog改变宽度

dialog默认宽度为父元素的50%&#xff0c;这就导致在移动端会非常的窄&#xff0c;如图1&#xff0c;需要限定宽度。 解决方法&#xff1a;添加custom-class属性&#xff0c;然后在style中编写样式&#xff0c;注意&#xff0c;如果有scoped限定&#xff0c;需要加::v-deep &l…

css3英文文字换行,超过两行...展示

需求&#xff1a;超过两行...展示 开发的过程中发现div内容中文可以换行英文不换行&#xff0c;导致长度会溢出。 是英文全英文的话浏览器会解析成一个单词&#xff0c; 加上这句就好了 word-break:break-all; 一开始不知道是会解析成一个单词&#xff0c;用字符串拼接处理…

论文阅读_图形图像_U-NET

name_en: U-Net: Convolutional Networks for Biomedical Image Segmentation name_ch: U-Net&#xff1a;用于生物医学图像分割的卷积网络 addr: http://link.springer.com/10.1007/978-3-319-24574-4_28 doi: 10.1007/978-3-319-24574-4_28 date_read: 2023-02-08 date_publi…

高通开发系列 - 5G网络之QTI守护进程服务介绍

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回:专栏总目录 目录 代码位置和依赖关系功能介绍代码逻辑讲解外设节点关注的目录socket服务端初始化DPM客户端监听守护关键的数据结构体…

宏基官网下载的驱动怎么安装(宏基笔记本如何安装系统)

本文为大家介绍宏基官网下载的驱动怎么安装宏基笔记本驱动(宏基笔记本如何安装系统)&#xff0c;下面和小编一起看看详细内容吧。 宏碁笔记本怎么一键更新驱动 1. 单击“开始”&#xff0c;然后选择“所有程序”。 2. 单击Acer&#xff0c;然后单击Acer eRecovery Management。…

MySQL事务原理、MVCC详解

事务原理 1 事务基础 1). 事务 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 2). 特性 原子性&#xff08;Atomi…

Java 数据库改了一个字段, 前端传值后端接收为null问题解决

前端传值后端为null的原因可能有很多种&#xff0c;我遇到一个问题是&#xff0c;数据库修改了一个字段&#xff0c;前端传值了&#xff0c;但是后台一直接收为null值&#xff0c; 原因排查&#xff1a; 1、字段没有匹配上&#xff0c;数据库字段和前端字段传值不一致 2、大…

卷积过程详细讲解

1&#xff1a;单通道卷积 以单通道卷积为例&#xff0c;输入为&#xff08;1,5,5&#xff09;&#xff0c;分别表示1个通道&#xff0c;宽为5&#xff0c;高为5。假设卷积核大小为3x3&#xff0c;padding0&#xff0c;stride1。 卷积过程如下&#xff1a; 相应的卷积核不断…

时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测

时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测 目录 时序预测 | MATLAB实现SSA-XGBoost(麻雀算法优化极限梯度提升树)时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现SSA-XGBoost时间序列预测&#xff0c;麻…

SpringBoot - Google EventBus、AsyncEventBus

介绍 EventBus 顾名思义&#xff0c;事件总线&#xff0c;是一个轻量级的发布/订阅模式的应用模式&#xff0c;最初设计及应用源与 google guava 库。 相比于各种 MQ 中间件更加简洁、轻量&#xff0c;它可以在单体非分布式的小型应用模块内部使用&#xff08;即同一个JVM范围…

利用逻辑回归判断病人肺部是否发生病变

大家好&#xff0c;我是带我去滑雪&#xff01; 判断肺部是否发生病变可以及早发现疾病、指导治疗和监测疾病进展&#xff0c;以及预防和促进肺部健康&#xff0c;定期进行肺部评估和检查对于保护肺健康、预防疾病和提高生活质量至关重要。本期将利用相关医学临床数据结合逻辑回…

嵌入式系统入门实战:探索基本概念和应用领域

嵌入式系统是一种专用的计算机系统,它是为了满足特定任务而设计的。这些系统通常具有较低的硬件资源(如处理器速度、内存容量和存储容量),但具有较高的可靠性和实时性。嵌入式系统广泛应用于各种领域,如家用电器、汽车、工业控制、医疗设备等。 嵌入式系统的基本概念 微控…

力扣2. 两数相加

2. 两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个…