云原生容器化-5 Docker常见操作命令
1.登录和退出docker仓库
使用docker login和docker logout分别用于登录和退出docker仓库。
#登录时携带用户名、密码、仓库地址信息
docker login --username test --password test@123 192.168.0.22:8000
docker login --username seong --password 3er4#ER$ 192.168.0.22:8000#注销时需要仓库信息
docker logout 192.168.0.22:8000
2.镜像相关
2.1 查看镜像列表
使用docker images 查看本地docker镜像列表:
[root@VM-4-6-centos ~]# docker images | grep httpd
httpd beta2 559eaf86a53b 6 hours ago 167MB
httpd latest 59bcd61b45fd 3 weeks ago 167MB
2.2 生成镜像
通过docker build可以根据Dockerfile生成docker镜像
docker build -t ${镜像名称:版本号} -f ${Dockerfile路径} ${构建上下文路径}
2.3 搜索、下拉和推送镜像
使用docker search 从远程仓库根据名称搜索镜像:
#从docker仓库搜索名称与httpd相关的镜像
docker search httpd
使用docker pull 从远程仓库下载镜像:
[root@VM-4-6-centos ~]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
Digest: sha256:5ee9ec089bab71ffcb85734e2f7018171bcb2d6707f402779d3f5b28190bb1af
Status: Image is up to date for httpd:latest
docker.io/library/httpd:latest
不携带版本号时,默认下载latest版本。
使用docker push 向仓库推送镜像:
docker push ${仓库地址}/${镜像名:版本号}
[root@VM-4-6-centos ~]# docker push 192.168.0.22:8000/httpd
Using default tag: latest
The push refers to repository [192.168.0.22:8000/httpd]
ab3a0403a0d9: Pushed
40a428a249db: Pushed
24bd64e09119: Pushed
5f70bf18a086: Layer already exists
c3147eaa9536: Pushed
fb1bd2fc5282: Pushed
latest: digest: sha256:77f8ee2103ca1320c2db50ece65451fe42b662c420fa876f55ce2325d675a886 size: 1572
2.4 镜像标签
使用docker tag对镜像打标签:
[root@VM-4-6-centos ~]# docker tag httpd httpd:beta-1[root@VM-4-6-centos ~]# docker images | grep httpd
httpd beta-1 59bcd61b45fd 3 weeks ago 167MB
httpd latest 59bcd61b45fd 3 weeks ago 167MB
在向本地仓库推送镜像时,也需要使用docker tag给镜像打上仓库地址标签:
[root@VM-4-6-centos ~]# docker tag httpd 192.168.0.22:8000/httpd
[root@VM-4-6-centos ~]# docker images | grep httpd
192.168.0.22:8000/httpd latest 59bcd61b45fd 3 weeks ago 167MB
httpd beta-1 59bcd61b45fd 3 weeks ago 167MB
httpd latest 59bcd61b45fd 3 weeks ago 167MB
2.5 删除镜像
使用docker rmi删除镜像
[root@VM-4-6-centos ~]# docker rmi httpd:beta-1
Untagged: httpd:beta-1
[root@VM-4-6-centos ~]# docker images | grep httpd
192.168.0.22:8000/httpd latest 59bcd61b45fd 3 weeks ago 167MB
httpd latest 59bcd61b45fd 3 weeks ago 167MB
注意:只有对应容器的镜像才可以被删除。
2.6 查看镜像详情
使用docker inspect查看详情, 使用方式:
docker inspect ${镜像ID或者镜像名}
3.容器相关
3.1 查看容器
docker ps 查看正在运行的容器,docker ps -a查询所有容器(包含已停止运行的容器):
[root@VM-4-6-centos ~]# docker ps -a | grep httpd | awk '{print $1, $7, $11, $12}'
32df086f7430 Exited ago seong-http
b3cb2c7282bf Up seong-http-beta2[root@VM-4-6-centos ~]# docker ps | grep httpd | awk '{print $1, $7, $11, $12}'
b3cb2c7282bf Up seong-http-beta2
Exited表示容器已经停止运行,Up表示容器正在运行。
3.2 运行容器
docker run
-d
--name ${容器name}
-p ${宿主机端口:容器端口}
-v ${宿主机路径:容器路径}
${镜像名}
${启动命令}
-p用于添加宿主机与容器的端口映射关系,多个端口映射时,需要使用多个-p进行标注;
-v用于在宿主机和容器之间挂载文件系统,多个挂载卷时,需要使用多个-v进行标注。
-d 表示在后台运行;
–name 为容器指定名称,否则会随机生成。
3.3 启动、停止、删除容器
#启停容器
docker stop ${容器ID/容器name}
docker start ${容器ID/容器name}
docker restart ${容器ID/容器name}#删除容器
docker rm ${容器ID/容器name}
注意:镜像可以被删除的前提条件是对应的容器都处于停止状态。
3.4 进入容器
docker exec -it ${容器ID/容器name} ${sh或者bash}
也可通过docker attach进入容器中,但attach进入的是容器启动命令的终端。
3.5 将容器保存为镜像
docker commit ${容器ID/容器name} ${镜像名:版本号}
相对于docker commit命令,更推荐使用Dockerfile创建镜像,可参考:云原生容器化-3 Dockerfile
3.6 查询容器详情
docker inspect ${容器ID/容器name}
返回一个JSON格式对象,包含容器的ID、IP地址和网关、端口映射、挂载卷等详细信息。
如下所示为docker inspect命令的执行结果,省去部分信息后如下:
[{// 容器的id、名称、创建时间、状态、使用的镜像ID"Id": "2cab8a45e739c9ec68e9f202d937742b26ba5c2d8c9278a0f259f390215af2c4","Name": "/test_aiws_demo","Created": "2024-02-15T03:33:32.853593119Z","State": {"Status": "running"},"Image": "sha256:e2c0e7ac74ac85436be147a5fc022fd6294e8c27c025c258c58f556641e6535e",//日志路径,通过docker logs查看的就是该日志文件"LogPath": "/var/lib/docker/containers/2cab8a45e739c9ec68e9f202d937742b26ba5c2d8c9278a0f259f390215af2c4/2cab8a45e739c9ec68e9f202d937742b26ba5c2d8c9278a0f259f390215af2c4-json.log",// 文件系统驱动使用overlay2"Driver": "overlay2",// 挂载信息:宿主机的/usr/local/aiws/logs目录关联容器的/usr/local/app/logs目录"Mounts": [{"Type": "bind","Source": "/usr/local/aiws/logs","Destination": "/usr/local/app/logs","Mode": "","RW": true,"Propagation": "rprivate"}],// 容器的配置信息"Config": {"Image": "124.221.127.40:5000/traffic/aiws_image_seong:1.0",// 容器的工作目录,进入容器后,直接进入该目录"WorkingDir": "/usr/local/app"},// 容器的网络信息"NetworkSettings": {"Ports": {// 容器的8001端口映射到宿主机的8888端口"8888/tcp": [{"HostIp": "0.0.0.0","HostPort": "8001"},{"HostIp": "::","HostPort": "8001"}]},// 容器的IP、MAC和网关"Gateway": "172.17.0.1","IPAddress": "172.17.0.6","MacAddress": "02:42:ac:11:00:06",}}
]
3.7 查看容器日志
#查看docker日志
docker logs ${容器ID/容器name}#追踪docker日志,效果如同 tail -f
docker logs -f ${容器ID/容器name}
docker logs得到的是该容器的标准输出和标准错误,日志记录在宿主机的某个路径下,可以通过
docker inspect ${容器ID/容器name} | grep LogPath 获取。如果是SpringBoot项目,可以通过添加ConsoleAppender配置将输出定向到docker logs日志中:
<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><root level="info"><appender-ref ref="STDOUT" /></root>
</configuration>
4.其他docker命令
4.1.查看docker版本和信息
docker info命令用于显示 Docker 系统的详细信息,包括容器、镜像、存储驱动、版本等信息; docker version 命令用于显示 Docker 的版本信息,包括 Docker 客户端和 Docker 服务器的版本信息。
docker infodocker version
4.2 容器与宿主机的拷贝
docker cp在宿主机上执行,可以实现在容器和宿主机之间相互拷贝文件.
从宿主机向容器内部拷贝文件:
docker cp ${宿主机目录} ${容器ID:/容器路径}
从容器向宿主机箱拷贝文件:
docker cp ${容器ID:/容器路径} ${宿主机目录}
相关文章:
云原生容器化-5 Docker常见操作命令
1.登录和退出docker仓库 使用docker login和docker logout分别用于登录和退出docker仓库。 #登录时携带用户名、密码、仓库地址信息 docker login --username test --password test123 192.168.0.22:8000 docker login --username seong --password 3er4#ER$ 192.168.0.22:8…...
几道简单的题目练一下手感
第 1 题 【 问答题 】 • 找和为K的两个元素 在一个长度为n(n < 1000)的整数序列中,判断是否存在某两个元素之和为k。 时间限制:1000 内存限制:65536 输入 第一行输入序列的长度n和k,用空格分开。 第二行输入序列中的n个整数&a…...
2023年哪个前端框架用的最多?
2023 年,TypeScript 的每月下载量持续稳定增长,年度累计下载量高达2,071,832,110(20.7 亿),展现了强大的市场需求和用户认可。 本文来通过详细的数据(2023 年 npm 累计下载量),看看…...
基于BitVM的乐观 BTC bridge
1. 引言 前序博客: 区块链互操作协议Bitcoin Bridge:治愈还是诅咒?BitVM:Bitcoin的链下合约 基于BitVM的乐观 BTC bridge: Trust-minimized two-way peg 机制 BitVM BTC bridge背后的主要思想是: 为比…...
谷歌浏览器安装扩展程序axure-chrome-extension
注: 文末附扩展附件:axure-chrome-extension_v0.7.0.crx 1、安装扩展程序axure-chrome-extension 找到axure-chrome-extension.crx,把axure-chrome-extension.crx后缀改为zip,然后解压,得到一个文件夹 2、打开谷歌浏览…...
C++学习:大小写转换
islower/isupper函数 islower和isupper是C标准库中的字符分类函数,用于检查一个字符是否为小写字母或大写字母。 islower和isupper函数需要包含头文件,也可用万能头文<bits/stdc.h>包含。 函数返回值为bool类型。 char ch1 A; char ch2 a;//…...
【王道数据结构】【chapter5树与二叉树】【P159t16】
试设计判断两棵二叉树是否相似的算法。所谓二叉树T1和T2相似,指的是T1和T2都是空的二叉树或都只有一个根节点;或者T1的左子树和T2的左子树是相似的,且T1的右子树和T2的右子树是相似的 #include <iostream> #include <stack> #inc…...
代码随想录算法训练营第51天 | 139.单词拆分 多重背包理论基础
单词拆分 这道题最后是判断能否组成,很像回溯法的问题形式,和分割回文串那道题比较类似,所以是可以用回溯法解决的,但是回溯法需要使用记忆化递归来避免超时。 class Solution{ public:bool backtracking(const string s, const …...
weilai8游戏爬虫
#!/usr/bin/python # -*- coding: UTF-8 -*- #!/usr/bin/python # -*- coding: UTF-8 -*- import os,csv import re import random import time import requests from lxml import etreefrom urllib.parse import quote, unquotepage98 sess requests.Session()#创建一个sessi…...
【Java程序设计】【C00261】基于Springboot的休闲娱乐代理售票系统(有论文)
基于Springboot的休闲娱乐代理售票系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的休闲娱乐代理售票系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块:休闲娱乐代理…...
【Linux】学习-基础IO拓展篇
Linux基础IO拓展篇—详解文件系统 理解文件系统 在Linux基础IO篇中,我们站在用户的视角对文件进行了理解,主要是针对被打开的文件,那么有没有没有被打开的文件呢?当然有!今天我们换个视角,来站在系统的角…...
算法详解(力扣141——环形链表系列)
博主ID:代码小豪 文章目录 环形链表环形链表的性质分析快慢指针法指针的追及相遇问题 环形链表(2) 环形链表 先来看看环形链表的原题: 中间的部分叙述有点繁杂,简单来概括就是,假如有一个节点,…...
浅谈路由器交换结构
一、路由器技术概述 路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议,例如某个局域网使用的以太网协议…...
Linux第51步_移植ST公司的linux内核第3步_添加修改设备树
1、设备树文件的路径 1)、创建linux中的设备树头文件 在“my_linux/linux-5.4.31/arch/arm/boot/dts/”目录中,以“stm32mp15xx-edx.dtsi”为蓝本,复制一份,并命名为 “stm32mp157d-atk.dtsi”,这就是我们开发板的设备树头文件。…...
【PyTorch】PyTorch中张量(Tensor)统计操作
PyTorch深度学习总结 第五章 PyTorch中张量(Tensor)统计操作 文章目录 PyTorch深度学习总结前言一、最值查找二、特殊值查询 前言 上文介绍了PyTorch中张量(Tensor)的计算操作,本文将介绍张量的统计操作。 一、最值查找 函数描述torch.max()找出张量中的最大值to…...
安卓游戏开发框架应用场景以及优劣分析
一、引言 在移动游戏开发领域,选择合适的开发框架是项目成功的关键因素之一。特别是对于安卓平台,由于其开放性和庞大的用户基础,不同的游戏开发框架应运而生,旨在帮助开发者高效地构建游戏应用。以下是一些流行的安卓游戏开发框架…...
单片机学习笔记---LCD1602
LCD1602介绍 LCD1602(Liquid Crystal Display)液晶显示屏是一种字符型液晶显示模块,可以显示ASCII码的标准字符和其它的一些内置特殊字符(比如日文的片假名),还可以有8个自定义字符 显示容量:…...
django中实现适配器模式
在Django中实现适配器模式(Adapter Pattern)涉及到创建一个适配器类,它允许不兼容的接口之间进行交互。适配器模式通常用于将一个类的接口转换为另一个客户端期望的接口。 一:实现例子 下面是一个简单的例子,演示如何…...
题记(42)--EXCEL排序
目录 一、题目内容 二、输入描述 三、输出描述 四、输入输出示例 五、完整C语言代码 一、题目内容 Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。 对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号&#…...
【学网攻】 第(28)节 -- OSPF虚链路
系列文章目录 目录 系列文章目录 文章目录 前言 一、什么是OSPF虚链路? 二、实验 1.引入 实验目标 实验背景 技术原理 实验步骤 实验设备 实验拓扑图 实验配置 扩展 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
