03-Docker入门

03-Docker入门

在运行之前,首先通过如下命令确认Docker的状态

sudo docker info

运行第一个容器

运行如下命令,运行我们的第一个centos容器,如果本地没有该镜像,就会自动下载。这里的两个参数,-i保证我们可以输入,-t可以提供一个终端,这样才会有一个交互式的shell。

[root@node2 /]# docker run -i -t centos:7 /bin/bash
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7

使用第一个容器

我们已经进入了这个容器,可以通过hostname查看机器名

[root@e870712763e6 /]# hostname
e870712763e6

事实上,这个容器就是一个模拟的centos系统,

[root@e870712763e6 /]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)

理论上你可以用他做任何事情,比如安装vim

[root@e870712763e6 /]# yum update & yum install vim

退出容器:

[root@e870712763e6 /]# exit

退出后容器就不在运行了,可以通过ps -a命令查看当前机器上的容器

[root@node2 /]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                      PORTS     NAMES
e870712763e6   centos:7      "/bin/bash"   10 minutes ago   Exited (0) 48 seconds ago             elastic_tu
a20d2750859a   hello-world   "/hello"      2 hours ago      Exited (0) 2 hours ago                keen_heyrovsky

容器命名

如果创建时没有指定名称,Docker会自动生成一个名称,比如上面的elastic_tu

可以在创建时使用如下命令命名:

docker run --name my_centos7 -i -t centos:7 /bin/bash

也可以用rename修改名称

docker rename elastic_tu my_centos7

可以看到已经改名成功

[root@node2 /]# docker ps -a
CONTAINER ID   IMAGE         COMMAND       CREATED          STATUS                     PORTS     NAMES
e870712763e6   centos:7      "/bin/bash"   16 minutes ago   Exited (0) 7 minutes ago             my_centos7

启动已停止的容器

可以使用ID或Name来启动,启动后默认和上次的run命令一样

[root@node2 /]# docker start my_centos7

此时容器已经运行了,通过docker ps命令可以看到

[root@node2 /]# docker ps
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
e870712763e6   centos:7   "/bin/bash"   22 minutes ago   Up 2 seconds             my_centos7

如果需要进入shell界面,需要使用attach命令

[root@node2 /]# docker attach my_centos7

创建守护式容器

很多时候我们需要容器在退出后继续运行,此时就需要运行守护式容器,也即是daemonize container。可以通过下面命令创建:

[root@node4 ~]# sudo docker run --name my_daemon -d centos:7 /bin/sh -c "while true; do echo hello world; sleep 1; done"
afe2544f583833e483f6cfe6b2bedaff936dca4548396b36a94b4e6665061834

运行此命令后,系统仅仅返回一个容器id,不会返回bash界面。可以通过docker ps命令看到这个运行中的容器

[root@node4 ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED         STATUS              PORTS     NAMES
afe2544f5838   centos:7   "/bin/sh -c 'while t…"   2 minutes ago   Up About a minute             my_daemon

查看守护式容器

可以通过docker logs命令查看日志

[root@node4 ~]# sudo docker logs my_daemon
hello world
hello world
hello world
hello world

可以通过-f参数,-t加上时间戳进行跟踪(用ctrl+c退出

sudo docker logs -ft my_daemon
2024-04-04T12:09:19.636861979Z hello world
2024-04-04T12:09:20.654969250Z hello world
2024-04-04T12:09:21.671809247Z hello world
2024-04-04T12:09:22.682771892Z hello world

用—tail参数可以跟踪最后10行内容

sudo docker logs --tail 10 my_daemon

可以通过—log-driver参数指定日志输出位置,这样docker logs中就看不到日志了

docker run --log-driver="Syslog" --name daemon2 -d centos:7 /bin ...后面还是输出hello

查看容器内的进程

使用docker top命令可以看到容器内运行了哪些进程

[root@node4 ~]# docker top my_daemon
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1600                1582                0                   19:58               ?                   00:00:01            /bin/sh -c while true; do echo hello world; sleep 1; done
root                2874                1600                0                   20:18               ?                   00:00:00            sleep 1

使用docker stats查看容器状态,如果有多个守护进程的话会一起显示

docker stats 后面可以跟容器name 也可以不跟

在守护容器中运行其他进程

要在守护容器中启动其他进程,可以使用docker exec命令

[root@node4 ~]# docker exec -d my_daemon touch /opt/newfile

以上命令创建一个空文件。我们也可以启动一个bash界面,然后看下刚刚创建的文件

[root@node4 ~]# docker exec -t -i my_daemon /bin/bash
[root@afe2544f5838 /]# cd /opt
[root@afe2544f5838 opt]# ls
newfile

停止和自动重启守护式容器

使用docker stop命令来终止运行中的守护式容器,同样支持id和name

root@node4 ~]# docker stop my_daemon

如果希望容器在错误退出后自动重启,可以使用—restart参数

sudo docker run --restart=always --name alive_daemon -d centos:7 ......

可以指定退出代码为非0的值时,才会重启;同时可以指定重启次数

--restart=on-failure:5

查看容器详情

ps命令可以查看容器的简单信息,详细信息可以通过inspect命令查看

[root@node4 ~]# docker inspect my_daemon
[{"Id": "afe2544f583833e483f6cfe6b2bedaff936dca4548396b36a94b4e6665061834","Created": "2024-04-04T11:58:37.93042412Z","Path": "/bin/sh","Args": ["-c","while true; do echo hello world; sleep 1; done"],
......后略

比如要查看ip地址,可以使用如下format命令(如果容器不在运行,IP地址会是一个空值

[root@node4 ~]# docker inspect --format='{{ .NetworkSettings.IPAddress }}' my_daemon
172.17.0.2

删除容器

使用docker rm命令来删除容器(删除之前需要停止

# 也支持id
docker rm my_daemon 

通过如下命令可以删除所有容器,生产环境慎用,否则准备提桶

[root@node4 ~]# docker rm `docker ps -a -q`
d86aada3acab
5a3d7d0c0093

小结

本章学习了如何使用docker创建、启动、查看和删除容器。这是今后的基础。

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

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

相关文章

滑动窗口算法 - LCR 014. 字符串的排列

前言 接前文 滑动窗口算法 - LC76 最小覆盖子串-CSDN博客,此题也是套用滑窗模板,但是在两个细节点处稍有不同。 正文 LCR 014. 字符串的排列 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。 换句话说&#xf…

Linux多进程通信总结——进程间通信看这一篇足够啦!

1.进程间通信方式综合比较 优点缺点有名管道1)任意进程间通信1)缓冲区有限无名管道1)简单方便1)单向通信2)父子进程间通信3)缓冲区有限消息队列1)任意进程通信2)无需考虑进程间同步…

Linux 文件相关命令

一、查看文件命令 1)浏览文件less 默认查看文件的前 10 行。 less /etc/services ##功能说明: #1.默认打开首屏内容 #2.按【回车】按行访问 #3.按【空格】按屏访问 #4.【从上向下】搜索用/111,搜索包含111的内容,此时按n继续向下搜&#x…

PCL 基于直线进行KMeans聚类

文章目录 一、K-Means算法二、K-Means算法步骤三、实现代码四、实现效果参考文献一、K-Means算法 在诸多的聚类方法中,K-Means聚类方法是属于“基于原型的聚类”(也称为原型聚类)的方法,此类方法均是假设聚类结构能通过一组原型刻画,在现实聚类中极为常用。通常情况下,该类…

JAVAEE之IoCDI

Spring 是⼀个 IoC(控制反转)容器,作为容器, 那么它就具备两个最基础的功能: • 存 • 取 Spring 容器管理的主要是对象, 这些对象, 我们称之为"Bean". 我们把这些对象交由Spring管理, 由 Spring来负责对象的创建…

想学网络安全,从哪里开始?网络安全的学习路线

网络安全学习路线: 想学习网络安全专业的知识,想当黑客,但是不知道该从哪里开始学。 我给你一个路线! 清晰图片和大纲:https://docs.qq.com/doc/DU1lpVFpSbWVrd2p3

面试官:为什么忘记密码要重置,而不是告诉我原密码?

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~ Hello,大家好,我是 Sunday。 最近有个同学在面试中遇到了一个很有意思的问题,我相信大多…

基于单片机的电动车电池充电保护装置设计

摘 要:针对电动车充电安全方面的隐患,提出基于单片机控制的电动车电池充电保护装置的设 计。该装置以单片机为核心,包含数字温度传感器、控制按钮、外接显示屏、降温风扇及其他组件。控制按钮主要用来设定温度,温度传感器分别装在蓄电池和充电器内部,若充电器或蓄电池温度…

蓝桥杯23年第十四届省赛-异或和之和|拆位、贡献法

题目链接: 蓝桥杯2023年第十四届省赛真题-异或和之和 - C语言网 (dotcpp.com) 1.异或和之和 - 蓝桥云课 (lanqiao.cn) 参考题解: 蓝桥杯真题讲解:异或和之和 (拆位、贡献法)-CSDN博客 洛谷P9236 [蓝桥杯 2023 省 A]…

ubuntu23 安装minio

要在Ubuntu 23版本上安装MinIO,您可以遵循以下步骤: 1. 下载MinIO Server二进制文件 访问MinIO官方下载页面(https://min.io/download),或者直接在终端使用wget命令下载最新版本的MinIO二进制文件。假设您想要安装的…

【T5中的激活函数】GLU Variants Improve Transformer

【mT5中的激活函数】GLU Variants Improve Transformer 论文信息 阅读评价 Abstract Introduction Gated Linear Units (GLU) and Variants Experiments on Text-to-Text Transfer Transformer (T5) Conclusion 论文信息 名称内容论文标题GLU Variants Improve Transfo…

Python课程设计(课设)源码哪里找?

在互联网上寻找免费的Python课程设计(课设)源码,可以参考以下几个途径: 开源平台:GitHub是一个非常受欢迎的开源代码托管平台,你可以在这里搜索相关的Python项目。很多开发者会将他们的项目开源&#xff0c…

flutter获取手机中的系统路径信息

https://www.bilibili.com/video/BV1wE421g7sw获取系统中的路径 获取系统中的路径,并在这个路径中创建一个文本文件【str.txt】 然后进行写入【str.txt】 再读取这个文件【str.txt】 手机没有开通root权限无法看到写入到【应用程序文档目录】路径中的文件 用来…

MySQL故障排查与优化

一、MySQL故障排查 1.1 故障现象与解决方法 1.1.1 故障1 1.1.2 故障2 1.1.3 故障3 1.1.4 故障4 1.1.5 故障5 1.1.6 故障6 1.1.7 故障7​ 1.1.8 故障8 1.1.9 MySQL 主从故障排查 二、MySQL优化 2.1 硬件方面 2.2 查询优化 一、MySQL故障排查 1.1 故障现象与解决方…

【考研经验贴】24考研860软件工程佛系上岸经验分享【丰富简历、初复试攻略、导师志愿、资料汇总】

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本文讲解24考研860软件工程佛系上岸经验分享【丰富简历、初复试攻略、导师志愿、资料汇总】,期待与你一同探索、学习、进步,一起卷起来叭! 目…

Hot100-80(Leetcode763划分字母区间)

代码&#xff1a; class Solution {public List<Integer> partitionLabels(String s) {int n s.length();boolean f[] new boolean[n1];Map<Character,Integer> map new HashMap<>();for(int i0;i<n;i){if(!map.containsKey(s.charAt(i))){f[i]true;m…

玩转C语言——文件操作、预处理、编译、链接

前言&#xff1a; 经过前面的学习&#xff0c;我们已经对C语言的语法学习完毕了&#xff0c;今天&#xff0c;我们这节内容是为了修炼内功&#xff0c;为以后的学习打下一个坚实基础。话不多说&#xff0c;开始我们今天的学习吧&#xff01; 一、文件操作 1.⼆进制⽂件和⽂本⽂…

一文了解低功耗蓝牙BLE

低功耗蓝牙技术可以构建两种类型的设备:双模设备和单模设备。双模设备既支持经典蓝牙又支持低功耗蓝牙。单模设备只支持低功耗蓝牙。还有仅支持经典蓝牙的设备。 在链路层,设备被分为广播者、扫描者、从设备和主设备。广播者是传输数据包的设备,扫描者是接收广播者的数据包…

其他元素

img元素 在文档中显示图像&#xff0c;可以任意改变图像的大小和外观 属性值 src属性&#xff1a;指定图像的路径 alt属性&#xff1a;提供备用文本&#xff08;当网络延迟或src出错时显示&#xff09; <img src"../../picture/屏幕截图 2024-03-08 231030.png&quo…

C语言 | Leetcode C语言题解之第10题正则表达式匹配

题目&#xff1a; 题解&#xff1a; bool isMatch(char* s, char* p) {int m strlen(s);int n strlen(p);// dp[i][j] 表示 s 的前 i 个字符和 p 的前 j 个字符是否匹配bool dp[m 1][n 1];memset(dp, false, sizeof(dp));dp[0][0] true; // 空字符串和空模式匹配// 处理 …