Docker学习之容器管理(超详解析)

容器相关命令:

容器操作:

启动容器

方法1:先创建一个容器:docker create 镜像名再启动容器:docker start 容器名(不推荐)
[root@localhost ~]# docker create -it myubuntu:18.04 //创建容器
7bc99c9ea102ab49cc400437824a9549495947105cf8f133742f18a99f522ebf
[root@localhost ~]# docker ps -a //查看容器状态
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
7bc99c9ea102        myubuntu:18.04      "bash"              7 seconds ago       Created                                      elastic_hertz
[root@localhost ~]# docker start 7bc99c9ea102 //启动容器
7bc99c9ea102
[root@localhost ~]# docker ps -a  //再次查看容器状态
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                   PORTS               NAMES
7bc99c9ea102        myubuntu:18.04      "bash"              About a minute ago   Up 4 seconds                                 elastic_hertz
方法2:docker run 镜像名
(1)格式
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
(2)options 常用命令选项
-t :打开一个终端,像使用交换机一样使用容器
-i:交互式访问
-d:剥离与当前终端的关系;否则会一直占据着终端
--name:容器名字
--network:指定网络
--rm:容器一停,自动删除
[root@localhost ~]# docker run myubuntu:18.04 /bin/echo "hello world"
hello world
当利用docker run来创建并启动容器时,docker在后台运行的标准包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载;
利用镜像创建一个容器,并启动该容器;
分配一个文件系统给容器,并在只读的镜像层外挂载一层可读写层;
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去;
从网桥的地址池分配一个ip地址给容器;
执行用户指定的应用程序;
执行完毕后容器被自动终止。
[root@localhost ~]# docker run myubuntu:18.04 /bin/zzh "hello world"
docker: Error response from daemon: OCI runtime create failed: runc create failed: unable to start container process: exec: "/bin/zzh": stat /bin/zzh: no such file or directory: unknown.
ERRO[0000] error waiting for container: context canceled 
[root@localhost ~]# echo $?
127
常见错误代码:
125:docker daemon执行错误,例如指定不了支持的docker命令参数;
126:所指定命令无法执行,例如权限出错;
127:容器内命令无法找到
[root@localhost ~]# docker run -it myubuntu:18.04 /bin/bash
root@be2c0ade27be:/# psPID TTY          TIME CMD1 pts/0    00:00:00 bash10 pts/0    00:00:00 ps
root@be2c0ade27be:/# exit
-t选项让docker分配一个伪终端并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。在容器内用ps命令查看进程,只运行了bash应用,并没有其他无关的进程。用户可以使用CTRL+d或输入exit命令退出容器。
[root@localhost ~]# docker run -itd myubuntu:18.04
守护态运行:
更多的时候,需要让docker容器在后台以守护态形式运行。此时,可以通过添加-d参数来实现。

停止和激活容器

停止容器:
docker stop 关闭运行的容器
docker kill 杀死运行的容器(不推荐)
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
71ecd5b63ba4        myubuntu:18.04      "bash"              51 seconds ago      Up 51 seconds                           test
[root@localhost ~]# docker stop test 
test
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
docker start
(1)格式
Usage: docker start [OPTIONS] CONTAINER [CONTAINER...]
(2)Options:
-a:附加到当前终端
-i:交互式
[root@localhost ~]# docker start test 
test
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
71ecd5b63ba4        myubuntu:18.04      "bash"              51 seconds ago      Up 51 seconds                           test

删除容器

正常删除容器,先关闭容器(stop,kill)再删除容器(rm)即可
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
428fbc85c1c9        myubuntu:18.04      "bash"              About a minute ago   Up About a minute                       test
[root@localhost ~]# docker stop test
test
[root@localhost ~]# docker rm test
test
删除所有容器,-f强制删除
[root@localhost ~]# docker rm -f `docker ps -aq`
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES

进入容器

1.attach方法
[root@localhost ~]# docker attach 1b6f59c28263 //此为正常连接使用attach效果
root@1b6f59c28263:/# ls
bin   etc   lib64  opt   run   sys  var
boot  home  media  proc  sbin  tmp
dev   lib   mnt    root  srv   usr
[root@localhost ~]# docker attach 1b6f59c28263 //此为复制会话后使用attach效果
root@1b6f59c28263:/# ls
bin   etc   lib64  opt   run   sys  var
boot  home  media  proc  sbin  tmp
dev   lib   mnt    root  srv   usr
使用attach命令有时候并不方便。当多个窗口同时attach到同一个容器时,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作了。
2.exec方法
[root@localhost ~]# docker exec -it test /bin/bash
root@428fbc85c1c9:/# exit
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
428fbc85c1c9        myubuntu:18.04      "bash"              About a minute ago   Up About a minute                       test
通过指定-it参数来保持标准输入打开,并且分配一个伪终端。通过exec命令对容器执行操作是最为推荐的方式。

容器迁移

1.导出
[root@localhost ~]# docker export -o test.tar test 
[root@localhost ~]# docker export test > test2.tar
使用export有两种方式实现一种可以使用-o参数完成,还有一种可以使用重定向方式完成。
[root@localhost ~]# ll -h
总用量 253M
-rw-------  1 root root 64M  3月 13 16:59 192.168.27.137
-rw-------. 1 root root 706  1月 23 19:05 anaconda-ks.cfg
-rw-------  1 root root 64M  3月 13 16:59 images.tar
-rw-r--r--  1 root root 63M  3月 13 19:37 test2.tar
-rw-------  1 root root 63M  3月 13 19:37 test.tar
[root@localhost ~]# scp test.tar 192.168.27.137:~  //将tar文件使用scp拷贝到137上
Authorized users only. All activities may be monitored and reported.
root@192.168.27.137's password: 
test.tar            100%   62MB 261.1MB/s   00:00  
2.导入
[root@localhost ~]# ll  //先查看是否存在
总用量 129396
-rw-------. 1 root root      706  1月 23 19:05 anaconda-ks.cfg
-rw-------  1 root root 66983424  3月 13 17:00 images.tar
-rw-------  1 root root 65510912  3月 13 19:38 test.tar
[root@localhost ~]# docker import test.tar kongfu/test:v1 //使用import命令导入到本地路径下,注意拷贝过来后是以镜像形式存在。
sha256:4b06009c3c7367b1c63df6cc285322417b0901699556506a29caccc6b674dd6d
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
kongfu/test         v1                  4b06009c3c73        10 seconds ago      63.1MB
busybox             latest              beae173ccac6        2 years ago         1.24MB
myubuntu            18.04               5a214d77f5d7        2 years ago         63.1MB
实际上,既可以使用docker load命令来导入镜像存储文件到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库。这两者的区别在于:容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积更大。此外从容器快照文件导入时可以重新指定标签等元数据信息。

容器常见监测命令

[root@localhost ~]# docker inspect test  //查看容器具体信息
[{"Id": "b763e469011130780de3630023877f8d0c6bb64ce9de90d6c5a4940b818a594b","Created": "2024-03-13T11:36:12.916805739Z","Path": "bash","Args": [],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 8838,"ExitCode": 0,"Error": "","StartedAt": "2024-03-13T11:36:13.057031767Z","FinishedAt": "0001-01-01T00:00:00Z"
...
]
[root@localhost ~]# docker top test  
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                8838                8821                0                   19:36               pts/0               00:00:00            bash
[root@localhost ~]# docker stats test  //动态监测信息
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
b763e4690111        test                0.00%               404KiB / 3.297GiB   0.01%               1.16kB / 0B         0B / 0B             1CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
b763e4690111        test                0.00%               404KiB / 3.297GiB   0.01%               1.16kB / 0B         0B / 0B             1CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
b763e4690111        test                0.00%               404KiB / 3.297GiB   0.01%               1.16kB / 0B         0B / 0B             1CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
b763e4690111        test                0.00%               404KiB / 3.297GiB   0.01%               1.16kB / 0B         0B / 0B             1CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
b763e4690111        test                0.00%               404KiB / 3.297GiB   0.01%               1.16kB / 0B         0B / 0B             1CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
b763e4690111        test                0.00%               404KiB / 3.297GiB   0.01%               1.16kB / 0B         0B / 0B             1CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
b763e4690111        test                0.00%               404KiB / 3.297GiB   0.01%               1.16kB / 0B         0B / 0B             1CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
b763e4690111        test                0.00%               404KiB / 3.297GiB   0.01%               1.16kB / 0B         0B / 0B   
[root@localhost ~]# docker cp test.tar test:/tmp
[root@localhost ~]# docker exec -it test /bin/bash
root@b763e4690111:/# ls /tmp/
test.tar
root@b763e4690111:/# exit
exit
[root@localhost ~]# docker diff test 
C /root
A /root/.bash_history
C /tmp
A /tmp/test.tar
[root@localhost ~]# docker port test    

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

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

相关文章

白酒:生产过程的智能化与自动化升级改造

在当今的工业生产中,智能化与自动化已成为提进一步率、品质和竞争力的关键因素。云仓酒庄紧跟时代步伐,对豪迈白酒的生产过程进行了一系列智能化与自动化升级改造,旨在提升生产效率、确保产品质量的同时,降低生产成本。 首先&…

Express学习(四)

使用Express写接口 创建基本的服务器 创建API路由模块 编写GET接口 编写POST接口 CORS跨域资源共享 什么是CORS CORS由一系列HTTP响应头组成,这些HTTP响应头决定浏览器是否阻止前端JS代码跨域获取资源。浏览器的同源安全策略默认会阻止网页“跨域”获取资源。但如…

数据结构和算法:栈与队列

栈 栈 &#xff08;stack&#xff09;是一种遵循先入后出逻辑的线性数据结构 把堆叠元素的顶部称为“栈顶”&#xff0c;底部称为“栈底”。 将把元素添加到栈顶的操作叫作“入栈”&#xff0c;删除栈顶元素的操作叫作“出栈”。 栈的常用操作 /* 初始化栈 */ stack<int&g…

专升本 C语言笔记-07 逗号运算符

1.逗号表达式的用法 就是用逗号隔开的多个表达式。逗号表达式&#xff0c;从左向右依次执行。 2.逗号表达式的特性 2.1.当没有括号时&#xff0c;第一个表达式为整个表达式的值。 代码 int x 3,y 5,a 0; a x,y; printf("a %d",a); 说明:因为逗号优先级最低,会…

【CSS颜色】

本文章属于学习笔记&#xff0c;在https://www.freecodecamp.org/chinese/learn/2022/responsive-web-design/中练习 三、CSS颜色 1、有两种主要的颜色模型:电子设备中使用的加性RGB(红、绿、蓝)模型和印刷品中使用的减色CMYK(青色、品红、黄色、黑色)模型。 使用RGB模型。这…

学习JAVA的第二十一天(基础)

多线程 线程&#xff1a; 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。 进程&#xff1a; 程序的基本执行实体 并发&#xff1a; 在同一时刻&#xff0c;有多个指令在单个CPU上交替执行 并行&#xff1a; 在同一时刻&…

【C语言】Windows下的C语言线程编程详解

文章目录 1. 头文件1.1 windows.h1.2 process.h 2. 创建线程3. 线程同步3.1 线程同步方式3.1 互斥量&#xff08;Mutex&#xff09;3.2 事件&#xff08;Event&#xff09; 4. 线程的结束与资源管理5.线程池&#xff08;简要&#xff09; 在Windows平台下&#xff0c;C语言提供…

活动会议线上直播,如何扩大曝光?媒体直播分流解析

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 线上直播扩大曝光与媒体直播分流解析 一、扩大曝光策略&#xff1a; 平台选择&#xff1a;选择用户基数大、活跃度高的直播平台进行直播。 预告宣传&#xff1a;提前发布直播预告&…

k8s-Istio服务网络 27

官网&#xff1a;https://istio.io/latest/zh/about/service-mesh/ Istio与k8s的区别 SpringCloud传统微服务结合k8s与Istio与k8s结合&#xff1a; Istio数据面&#xff1a;通过envoy以sidecar方式拦截svc的流量来进行治理。 Istio控制面&#xff1a;pilot list/watch APIserv…

HarmonyOS NEXT应用开发之异常处理案例

介绍 本示例介绍了通过应用事件打点hiAppEvent获取上一次应用异常信息的方法&#xff0c;主要分为应用崩溃、应用卡死以及系统查杀三种。 效果图预览 使用说明&#xff1a; 点击构建应用崩溃事件&#xff0c;3s之后应用退出&#xff0c;然后打开应用进入应用异常页面&#x…

nginx启动闪退

在nginx目录下cmd&#xff0c;nginx -t&#xff0c;找到原因是&#xff1a;“在端口80上运行NGINX时&#xff0c;因为端口80是HTTP默认端口&#xff0c;需要管理员权限才能访问” 所以修改端口号&#xff1a; 在nginx.conf文件中&#xff0c;修改listen&#xff1a;80为8080 …

【C++】类的默认成员函数(下)

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 一、运算符重载1.1 引例1.2 概念及运用&#xff1a;1.3 牛刀小试:1.4 重载1.5 运…

Python网络基础爬虫-python基本语法

文章目录 逻辑语句if,else,elifforwhile异常处理 函数与类defpassclass 逻辑语句 熟悉C/C语言的人们可能很希望Python提供switch语句&#xff0c;但Python中并没有这个关键词&#xff0c;也没有这个语句结构。但是可以通过if-elif-elif-…这样的结构代替&#xff0c;或者使用字…

目标检测——YOLOv2算法解读

论文&#xff1a;YOLO9000: Better, Faster, Stronger 作者&#xff1a;Joseph Redmon, Ali Farhadi 链接&#xff1a;https://arxiv.org/pdf/1612.08242v1.pdf 代码&#xff1a;http://pjreddie.com/yolo9000/ YOLO系列其他文章&#xff1a; YOLOv1通俗易懂版解读SSD算法解读…

记一次生产慢sql索引优化及思考

记一次生产慢sql索引优化及思考 问题重现 夜黑风高的某一晚&#xff0c;突然收到一条运营后台数据库慢sql的报警&#xff0c;耗时竟然达到了60s。看了一下&#xff0c;还好不是很频繁&#xff0c;内心会更加从容排查问题&#xff0c;应该是特定条件下没有走到索引导致&#x…

[论文精读]Dynamic Coarse-to-Fine Learning for Oriented Tiny Object Detection

论文网址&#xff1a;[2304.08876] 用于定向微小目标检测的动态粗到细学习 (arxiv.org) 论文代码&#xff1a;https://github.com/ChaselTsui/mmrotate-dcfl 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&…

支付模块-基于消息队列发送支付通知消息

消息队列发送支付通知消息 需求分析 订单服务作为通用服务&#xff0c;在订单支付成功后需要将支付结果异步通知给其他对接的微服务&#xff0c;微服务收到支付结果根据订单的类型去更新自己的业务数据 技术方案 使用消息队列进行异步通知需要保证消息的可靠性即生产端将消息…

深入了解 大语言模型(LLM)微调方法

引言 众所周知&#xff0c;大语言模型(LLM)正在飞速发展&#xff0c;各行业都有了自己的大模型。其中&#xff0c;大模型微调技术在此过程中起到了非常关键的作用&#xff0c;它提升了模型的生成效率和适应性&#xff0c;使其能够在多样化的应用场景中发挥更大的价值。 那么&…

服务器命令

服务器命令 服务器命令top查看任务 服务器命令 top查看任务 、ps 命令 ps 命令是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和它所运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。总之大部分信息都是可以通过执行…

pytorch模型转onnx格式,编写符号函数实现torch算子接口和onnx算子的映射,新建简单算子--模型部署记录整理

对于深度学习模型来说&#xff0c;模型部署指让训练好的模型在特定环境中运行的过程。相比于软件部署&#xff0c;模型部署会面临更多的难题&#xff1a; 运行模型所需的环境难以配置。深度学习模型通常是由一些框架编写&#xff0c;比如 PyTorch、TensorFlow。由于框架规模、依…