docker容器操作(第二篇)

目录

五、Docker 容器操作

1、创建容器与运行容器

2、容器的启动与停止

3、容器的运行与终止

4、容器的进入

5、容器的导出与导入

6、容器的删除

7、文件复制

8、查看容器资源使用率

9、查看容器进程状态

10、更新容器配置


五、Docker 容器操作

        容器是Docker 的另一个核心概念,简单说,容器是镜像的一个运行实例,是独立运行

的一个或一组应用以及它们所必需的运行环境,包括文件系统、系统类库、shell 环境等。

镜像是只读模板,而容器会给这个只读模板一个额外的可写层。

下面将具体介绍围绕容器的具体操作。

1、创建容器与运行容器

        Docker 的创建就是将镜像加载到容器的过程,Docker 的容器十分轻量级,用户可以随

时创建或者删除。新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个

进程来启动容器,这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全

停止。停止的容器可以重新启动并保留原来的修改。可以使用docker create 命令新建一个容器。

        命令格式:docker create [选项]… 镜像运行的程序

常用选项:

  • -i 让容器的输入保持打开
  • -t 让Docker 分配一个伪终端
  • -d 守护进程形式运行
[root@localhost ~]# docker create -it centos /bin/bash
43116b0ce52ba3f53e72e3d0b26b348fa85ae7ff9d998addec6c11c20fbec146

 

使用docker create 命令创建新容器后会返回一个唯一的ID。

        可以使用docker ps 命令来查看所有容器的运行状态。添加-a 选项可以列出系统中所有容器状态。

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS    PORTS     NAMES
43116b0ce52b   centos    "/bin/bash"   About a minute ago   Created             cool_mcnulty

         输出信息显示容器的ID 号、加载的镜像、运行的程序、创建时间、目前所处的状态、端口映射。其中状态一栏为空表示当前的容器处于停止状态。

2、容器的启动与停止

启动停止容器可以使用docker start 命令。

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

[root@localhost ~]# docker start 43116b0ce52b43116b0ce52b[root@localhost ~]# docker ps -aCONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
43116b0ce52b   centos    "/bin/bash"   4 minutes ago   Up 5 seconds             cool_mcnulty

 

        容器启动后,可以看到容器状态一栏已经变为UP,表示容器已经处于启动状态。如果用户想创建并启动容器,可以直接执行docker run 命令,等同于先执行docker create 命令,再执行docker start 命令。需要注意只要后面的命令运行结束,容器就会停止。

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

例如,创建容器并启动执行一条shell 命令:

[root@localhost ~]# docker run centos /bin/bash -c ls /
bin
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

这和在本地直接执行命令几乎没有区别。

[root@localhost ~]# docker ps -aCONTAINER ID   IMAGE     COMMAND               CREATED          STATUS                      PORTS     NAMESada48f9ffca1   centos    "/bin/bash -c ls /"   54 seconds ago   Exited (0) 54 seconds ago             sleepy_edison43116b0ce52b   centos    "/bin/bash"           6 minutes ago    Up 2 minutes                          cool_mcnulty

查看容器的运行状态,可以看出容器在执行完”/usr/bin/bash -c ls” 命令之后就停止了。

        有时候需要在后台持续的运行这个容器,就需要让docker 容器在守护态形式在后台进行运行。可以在docker run 命令之后添加-d 选项来实现。但是需要注意容器所运行的程序不能结束。

例如,下面的容器会持续在后台进行运行:

[root@localhost ~]# docker run -d nginx /bin/bash -c "while true;do echo hello;done"a6fa85aec0aaee1f3e232c610c94b56367eb85964b9ae21dafb5dd2fe688fb65

docker ps查看容器,-a 查看所有容器,-q 只查看容器ID

[root@localhost ~]# docker ps -aCONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS                     PORTS     NAMESa6fa85aec0aa   nginx     "/docker-entrypoint.…"   41 seconds ago   Up 40 seconds              80/tcp    sharp_murdockada48f9ffca1   centos    "/bin/bash -c ls /"       4 minutes ago    Exited (0) 4 minutes ago             sleepy_edison43116b0ce52b   centos    "/bin/bash"               9 minutes ago    Up 5 minutes                         cool_mcnulty

查看容器的运行状态,可以看出容器始终处于UP,运行状态。

查看容器内的输出

[root@localhost ~]# docker logs a6fa85aec0aa
hello
hello
hello
hello
hello
^C[root@localhost ~]# 

3、容器的运行与终止

如果需要终止运行的容器,可以使用docker stop 命令完成。

命令格式:docker stop 容器的ID/名称

[root@localhost ~]# docker stop a6fa85aec0aaa6fa85aec0aa[root@localhost ~]# docker ps -a CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS                        PORTS     NAMESa6fa85aec0aa   nginx     "/docker-entrypoint.…"   5 minutes ago    Exited (137) 10 seconds ago             sharp_murdockada48f9ffca1   centos    "/bin/bash -c ls /"       8 minutes ago    Exited (0) 8 minutes ago                sleepy_edison43116b0ce52b   centos    "/bin/bash"               14 minutes ago   Up 10 minutes                           cool_mcnulty

查看容器的运行状态,可以看出容器处于Exited,终止状态。

4、容器的进入

        需要进入容器进行相应操作时,可以使用docker exec 命令或者docker attach命令进入运行着的容器。

命令格式:docker exec -it 容器ID/名称/bin/bash

其中,-i 选项表示让容器的输入保持打开;

-t 选项表示让Docker 分配一个伪终端。

例如:进入正在运行着的容器43116b0ce52b:

[root@localhost ~]# docker ps -a CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS                        PORTS     NAMES
a6fa85aec0aa   nginx     "/docker-entrypoint.…"   5 minutes ago    Exited (137) 10 seconds ago             sharp_murdock
ada48f9ffca1   centos    "/bin/bash -c ls /"       8 minutes ago    Exited (0) 8 minutes ago                sleepy_edison
43116b0ce52b   centos    "/bin/bash"               14 minutes ago   Up 10 minutes                           cool_mcnulty[root@localhost ~]# docker exec -it 43116b0ce52b /bin/bash[root@43116b0ce52b /]# exitexit[root@localhost ~]# docker ps -aCONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS                       PORTS     NAMES
a6fa85aec0aa   nginx     "/docker-entrypoint.…"   7 minutes ago    Exited (137) 2 minutes ago             sharp_murdock
ada48f9ffca1   centos    "/bin/bash -c ls /"       11 minutes ago   Exited (0) 11 minutes ago              sleepy_edison
43116b0ce52b   centos    "/bin/bash"               16 minutes ago   Up 12 minutes                          cool_mcnulty#可以看到exit退出不会使容器停止

 

用户可以通过所创建的终端来输入命令,通过exit 命令退出容器。

通过Ctrl+pq命令退出容器并保证容器在后台继续运行。

[root@localhost ~]# docker exec -it 43116b0ce52b /bin/bash
[root@43116b0ce52b /]# read escape sequence

5、容器的导出与导入

        用户可以将任何一个Docker 容器从一台机器迁移到另一台机器。在迁移过程中,首先需要将已经创建好的容器导出为文件,可以使用docker export 命令实现,无论这个容器是处于运行状态还是停止状态均可导出。导出之后可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

命令格式:docker export 容器ID/名称>文件名

例如,导出343e5da0caed容器到文件centos-exp:

[root@localhost ~]# docker run -it centos /bin/bash[root@343e5da0caed /]# touch crushlinux[root@343e5da0caed /]# [root@localhost ~]# [root@localhost ~]# docker ps -aCONTAINER ID   IMAGE     COMMAND                   CREATED              STATUS                        PORTS     NAMES343e5da0caed   centos    "/bin/bash"               About a minute ago   Up About a minute                       fervent_nasha6fa85aec0aa   nginx     "/docker-entrypoint.…"   17 minutes ago       Exited (137) 11 minutes ago             sharp_murdockada48f9ffca1   centos    "/bin/bash -c ls /"       20 minutes ago       Exited (0) 20 minutes ago               sleepy_edison43116b0ce52b   centos    "/bin/bash"               25 minutes ago       Up 21 minutes                           cool_mcnulty[root@localhost ~]# docker export 343e5da0caed > centos-exp[root@localhost ~]# ll centos-exp
-rw-r--r--. 1 root root 238572032 8月   1 18:03 centos-exp

导出的文件从A 机器拷贝到B 机器,之后使用docker import 命令导入,成为镜像。

命令格式:cat 文件名| docker import – 生成的镜像名称:标签

例如,导入文件centos7.tar成为本地镜像:

[root@localhost ~]# cat centos-exp | docker import - centos:expsha256:74ef60dea93af6e0c33f229670510288d38e4f8f574608635c4b64b5514ea8c2[root@localhost ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       exp       74ef60dea93a   13 seconds ago   231MB
nginx        latest    605c77e624dd   19 months ago    141MB
centos       latest    5d0da3dc9764   22 months ago    231MB

6、容器的删除

docker start|stop|restart|kill //运行已停止的容器|停止一个正在运行的容器|重启一个容器|杀死一个正在运行的容器

可以使用docker rm 命令将一个已经终止状态的容器进行删除。

命令格式:docker rm 容器ID/名称

例如,删除ID 号为a6fa85aec0aa的容器:

[root@localhost ~]# docker ps -a CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS                        PORTS     NAMES
343e5da0caed   centos    "/bin/bash"               7 minutes ago    Up 7 minutes                            fervent_nash
a6fa85aec0aa   nginx     "/docker-entrypoint.…"   23 minutes ago   Exited (137) 18 minutes ago             sharp_murdock
ada48f9ffca1   centos    "/bin/bash -c ls /"       26 minutes ago   Exited (0) 26 minutes ago               sleepy_edison
43116b0ce52b   centos    "/bin/bash"               32 minutes ago   Up 28 minutes                           cool_mcnulty[root@localhost ~]# docker rm -f a6fa85aec0aa
a6fa85aec0aa[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND               CREATED          STATUS                      PORTS     NAMES
343e5da0caed   centos    "/bin/bash"           8 minutes ago    Up 8 minutes                          fervent_nash
ada48f9ffca1   centos    "/bin/bash -c ls /"   27 minutes ago   Exited (0) 27 minutes ago             sleepy_edison
43116b0ce52b   centos    "/bin/bash"           32 minutes ago   Up 28 minutes                         cool_mcnulty

        如果删除一个正在运行的容器,可以添加-f 选项强制删除,但是建议先将容器停止再做删除操作。

        Docker 默认的存储目录为/var/lib/docker,Docker的镜像、容器、日志等内容全部都存储在此,可以单独使用大容量的分区来存储这些内容,并且一般选择建立LVM 逻辑卷。从而避免Docker 运行过程中存储目录容量不足。

删除所有容器命令:docker rm -f $(docker ps -qa)

 

[root@localhost ~]# docker rm -f $(docker ps -qa)
343e5da0caed
ada48f9ffca1
43116b0ce52b[root@localhost ~]# docker ps -a 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

7、文件复制

将主机/root/anaconda-ks.cfg目录拷贝到容器adbbad846b1b的/tmp目录下。

[root@localhost ~]# docker ps -a CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS    PORTS     NAMES
adbbad846b1b   centos    "/bin/bash"   9 seconds ago   Created             busy_hawking[root@localhost ~]# docker cp /root/anaconda-ks.cfg adbbad846b1b:/tmp
Successfully copied 3.07kB to adbbad846b1b:/tmp[root@localhost ~]# docker attach adbbad846b1b
You cannot attach to a stopped container, start it first            #此错误为容器未启动[root@localhost ~]# docker start adbbad846b1b                #启动容器
adbbad846b1b[root@localhost ~]# docker attach adbbad846b1b               #进入容器[root@adbbad846b1b /]# ls /tmp                               #查看目录
anaconda-ks.cfg  ks-script-4luisyla  ks-script-o23i7rc2  ks-script-x6ei4wuu

8、查看容器资源使用率

[root@localhost ~]# docker statsCONTAINER ID   NAME           CPU %     MEM USAGE / LIMIT   MEM %     NET I/O     BLOCK I/O   PIDS
adbbad846b1b   busy_hawking   0.00%     544KiB / 3.682GiB   0.01%     656B / 0B   0B / 0B     1

9、查看容器进程状态

[root@localhost ~]# docker ps -a CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS     NAMES
adbbad846b1b   centos    "/bin/bash"   6 minutes ago   Up 4 minutes             busy_hawking[root@localhost ~]# docker top ad UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                6558                6535                0                   18:16               pts/0               00:00:00            /bin/bash
  1. 10、更新容器配置

--restart=always #在docker服务重启时自动启动容器

[root@localhost ~]# docker update --restart=always ad
ad

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

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

相关文章

玩转顺序表——【数据结构】

在C语言学习中,我们经常会遇见增删查改等一系列操作,而这些操作全都与线性表关联,没有线性表将会对这些操作完成的十分艰难!那今天就让我们来了解一下顺序表如何增删查改!!! 目录 1.线性表 2…

运算放大器(二):恒流源

一、实现原理 恒流源的输出电流能够在一定范围内保持稳定,不会随负载的变化而变化。 通过运放,将输入的电压信号转换成满足一定关系的电流信号,转换后的电流相当一个输出可调的简易恒流源。 二、电路结构 常用的恒流源电路如…

C语言每日一题:11.《数据结构》链表分割。

题目一: 题目链接: 思路一:使用带头链表 1.构建两个新的带头链表,头节点不存储数据。 2.循环遍历原来的链表。 3.小于x的尾插到第一个链表。 4.大于等于x尾插到第二个链表。 5.进行链表合并,注意第二个链表的尾的下一…

【【STM32学习-3】】

STM32学习-3 下面是对c语言的稍微复习 这个是我们设置好的文件 以后拖出去用就可以了 这里加入关于指针的感想 关于指针数组和数组指针的想法 常规的东西是int a10; int * p&a; (p指向了a元素,意思是p等于a的地址 类型是int*)就是 整型指…

二十三种设计模式第二十篇--备忘录模式

备忘录模式,备忘录模式属于行为型模式。它允许在不破坏封装的情况下捕获和恢复对象的内部状态。保存一个对象的某个状态,以便在适当的时候恢复对象,该模式通过创建一个备忘录对象来保存原始对象的状态,并将其存储在一个负责管理备…

基于ts的浏览器缓存工具封装(含源码)

cache.ts缓存工具 浏览器缓存工具封装实现使用方法示例代码 浏览器缓存工具封装 在前端开发中,经常会遇到需要缓存数据的情况,例如保存用户的登录状态、缓存部分页面数据等 但有时候需要缓存一些复杂的对象,例如用户信息对象、设置配置等。…

2、Tomcat介绍(下)

组件分类 在Apache Tomcat中&#xff0c;有几个顶级组件&#xff0c;它们是Tomcat的核心组件&#xff0c;负责整个服务器的运行和管理。这些顶级组件包括&#xff1a; Server(服务器)&#xff1a;Tomcat的server.xml配置文件中的<Server>元素代表整个Tomcat服务器实例。每…

【MySQL】模具更新方案

系列文章 C#底层库–MySQLBuilder脚本构建类&#xff08;select、insert、update、in、带条件的SQL自动生成&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129179216 C#底层库–MySQL数据库操作辅助类&#xff08;推荐阅读&#xff0…

【C++】STL——vector的模拟实现、常用构造函数、迭代器、运算符重载、扩容函数、增删查改

文章目录 1.模拟实现vector1.1构造函数1.2迭代器1.3运算符重载1.4扩容函数1.5增删查改 1.模拟实现vector vector使用文章 1.1构造函数 析构函数 在C中&#xff0c;vector是一个动态数组容器&#xff0c;可以根据需要自动调整大小。vector类提供了几个不同的构造函数来创建和初…

深度学习笔记-暂退法(Drop out)

背景 在机器学习的模型中&#xff0c;如果模型的参数太多&#xff0c;而训练样本又太少&#xff0c;训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题&#xff0c;过拟合具体表现在&#xff1a;模型在训练数据上损失函数较小&#xff0c;预…

【Python目标识别】Labelimg标记深度学习(YOLO)样本

人工智能、ai、深度学习已经火了很长一段时间了&#xff0c;但是还有很多小伙伴没有接触到这个行业&#xff0c;但大家应该多多少少听过&#xff0c;网上有些兼职就是拿电脑拉拉框、数据标注啥的&#xff0c;其实这就是在标记样本&#xff0c;供计算机去学习。所以今天跟大家分…

哈工大计算机网络课程网络安全基本原理之:身份认证

哈工大计算机网络课程网络安全基本原理之&#xff1a;身份认证 在日常生活中&#xff0c;在很多场景下我们都需要对当前身份做认证&#xff0c;比如使用密码、人脸识别、指纹识别等&#xff0c;这些都是身份认证的常用方式。本节介绍的身份认证&#xff0c;是在计算机网络安全…

分享一个 VUE 侧边导航共用组建

项目效果图&#xff1a; 项目描述&#xff1a;加载组建时&#xff0c;隐藏&#xff0c;鼠标滑动到指定区域的时候该菜单选中高亮&#xff0c;点击菜单跳转到指定模块&#xff0c;每个页面都适用。 html 部分&#xff1a; 提示&#xff1a;我这里有英文所以有$i18n.localezh…

用Rust生成Ant-Design Table Columns | 京东云技术团队

经常开发表格&#xff0c;是不是已经被手写Ant-Design Table的Columns整烦了&#xff1f; 尤其是ToB项目&#xff0c;表格经常动不动就几十列。每次照着后端给的接口文档一个个配置&#xff0c;太头疼了&#xff0c;主要是有时还会粘错就尴尬了。 那有没有办法能自动生成colu…

【CDC】跨时钟域处理方法总结一

文章目录 一、概述1.异步时序2.亚稳态与建立保持时间 二、跨时钟域处理1.控制信号的跨时钟域处理&#xff08;单bit数据&#xff09;a.慢时钟域到快时钟域b.快时钟域到慢时钟域握手“扩宽”快时钟域脉冲时钟停止法窄脉冲捕捉电路 2.数据信号的跨时钟域处理&#xff08;多bit数据…

Could not locate supplied template: react+ts搭建

1. reactts创建 我们在是用下create-react-app之前要下载一下 npm install create-react-app -g使用一下命令创建ts的react框架 create-react-app my-app --scripts-versionreact-scripts-ts 2. 遇见问题 我们用以上创建之后会提示一段代码选择“Y”之后发现我们创建的项目…

【重造轮子】golang实现可重入锁

造个可重入锁的轮子 介绍目标 正文sync.Mutexsync.Mutex介绍多协程计数器demo多协程计数器加锁 源码剖析Mutex数据结构Lock()加锁核心逻辑 UnLock() 重入锁与可重入锁魔改 sync.Mutex 参考文档 介绍 开新坑啦&#xff01;&#xff01; 从这篇文章开始&#xff0c;尝试造轮子&a…

目标检测任务中常用的数据集格式(voc、coco、yolo)

一、Pascal VOC VOC数据集(Annotation的格式是xmI) Pascal VOC数据集是目标检测的常用的大规模数据集之一&#xff0c;从05年到12年都会举办比赛&#xff0c;比赛任务task&#xff1a; 分类Classification目标检测Object Detection语义分割Class Segmentation实例分割Object…

基于PHP校园疫情防控信息管理系统-计算机毕设 附源码12057

PHP校园疫情防控信息管理系统 摘 要 如今计算机行业的发展极为快速&#xff0c;搭载于计算机软件运行的数据库管理系统在各行各业得到了广泛的运用&#xff0c;其在数据管理方面具有的准确性和高效性为大中小企业的日常运营提供了巨大的帮助。自从2020年新冠疫情爆发以来&…

ES6及以上新特性

ES6&#xff08;ECMAScript 2015&#xff09;及以上版本引入了许多新特性&#xff0c;每个版本都有不同的增强和改进。以下是 ES6 及以上版本的新特性的详细描述&#xff1a; ES6&#xff08;ECMAScript 2015&#xff09;&#xff1a; let 和 const 声明&#xff1a;引入块级作…