云原生容器化-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:/容器路径} ${宿主机目录}

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

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

相关文章

export和import

export和import是JavaScript中ES6&#xff08;ECMAScript 2015&#xff09;的模块系统的语法&#xff0c;用于实现模块的导出和导入&#xff0c;ES6 的模块系统是 JavaScript 官方标准中定义的模块化规范&#xff0c;现在的前端应用模块化已经很普及了。   export和import的技…

<网络安全>《32 网络信息安全基础(3)网络攻防知识体系》

1 信息安全网络攻防知识 1.网络安全 包括防火墙、入侵检测/防御系统&#xff08;IDS/IPS&#xff09;、安全扫描工具、安全隔离系统等。 2.操作系统安全 包括安全操作系统设计、安全编程、安全测试等。 3.应用安全 包括Web应用安全、数据库应用安全、中间件安全等。 4.数据库安…

Python内置函数03——pow

文章目录 概要基本用法注意事项 概要 Python的内置函数pow(x, y, z)返回x的y次方&#xff0c;如果有第三个参数&#xff0c;则求完幂次后对第三个数取余。 基本用法 1.计算10的2次方 a pow(10, 2) # 10的2次幂 print(a) # 1002.计算5的三次方并取模3 b pow(5, 3, 3) p…

SpringBoot3 + Vue3 由浅入深的交互 基础交互教学

说明&#xff1a;这篇文章是适用于已经学过SpringBoot3和Vue3理论知识&#xff0c;但不会具体如何实操的过程的朋友&#xff0c;那么我将手把手从教大家从后端与前端交互的过程教学。 目录 一、创建一个SpringBoot3项目的和Vue3项目并进行配置 1.1后端配置: 1.1.1applicatio…

【FFmpeg学习】视频变慢处理

视频慢动作处理是个比较常用的操作&#xff0c;可以在播放的时候处理&#xff0c;这里我们考虑把视频修改为慢动作&#xff0c;使用ffmpeg命令&#xff0c;可以这样 ffmpeg -i test.mp4 -vf "setpts5*PTS" -an test_slow3.mp4 这里把视频放慢了5倍&#xff0c;生成…

解锁未来:探秘Zxing二维码技术的神奇世界

解锁未来&#xff1a;探秘Zxing二维码技术的神奇世界 1. 引言 在当今数字化和智能化的社会中&#xff0c;二维码技术已经成为人们生活中不可或缺的一部分。从商品购物、支付结算到健康码、门票核销&#xff0c;二维码无处不在&#xff0c;极大地方便了人们的生活和工作。而Zx…

Python-2

21. 请解释Python中的深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#xff08;Shallow Copy&#xff09;以及它们的应用场景。 在Python中&#xff0c;拷贝对象时会涉及到深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#xff08;Shallow Copy&#xff09;两个概念…

单源最短路总结+练习题

单源最短路总结 文章目录 单源最短路总结建图方式普通无向图邻接表建图新建源点建图正反建图spfa 单源最短路综合运用dijkstradfsdijkstra二分答案 未完待续....... 建图方式 普通无向图邻接表建图 板子题 1129. 热浪 - AcWing题库 找最短路里的最长路 1128. 信使 - AcWin…

每日五道java面试题之java基础篇(九)

目录&#xff1a; 第一题 你们项⽬如何排查JVM问题第二题 ⼀个对象从加载到JVM&#xff0c;再到被GC清除&#xff0c;都经历了什么过程&#xff1f;第三题 怎么确定⼀个对象到底是不是垃圾&#xff1f;第四题 JVM有哪些垃圾回收算法&#xff1f;第五题 什么是STW&#xff1f; 第…

MySQL 基础知识(六)之数据查询(二)

目录 6 数值型函数 7 字符串函数 8 流程控制函数 9 聚合函数 10 分组查询 (group by) 11 分组过滤 (having) 12 限定查询 (limit) 13 多表查询 13.1 连接条件关键词 (on、using) 13.2 连接算法 13.3 交叉连接 (cross join) 13.4 内连接 (inner join) 13.5 外连接 …

力扣hot3--并查集+哈希

第一想法是排个序然后遍历一遍&#xff0c;but时间复杂度就超啦 并查集居然与哈希结合了&#xff08;&#xff09; 已经好久没用过并查集了&#xff0c;&#xff0c;&#xff0c;我们用哈希表f_node中来记录原结点的父节点&#xff0c;其中key是原结点&#xff0c;value是父节点…

Cannot resolve symbol ‘@+id/modifyAvatar‘

问题 Cannot resolve symbol id/modifyAvatar详细问题 笔者进行Android开发&#xff0c;创建组件id&#xff0c;报红。 鼠标放置报红处&#xff0c;提示 Cannot resolve symbol id/modifyAvatar解决方案 顶部菜单栏 → \rightarrow →Build → \rightarrow →Rebuild proje…

推荐《架构探险:从零开始写Java Web框架》

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 春节读了《架构探险&#xff1a;从零开始写Java Web框架》&#xff0c;一本大概10年前的好书。 本书的作者是阿里巴巴架构师黄勇。黄勇对分布式服务架构与大数据技术有深入…

QT 菜单栏

添加/删除菜单栏 默认情况下QMainWindow项目一创建就自带了菜单栏&#xff0c;可以在对象树窗口中&#xff0c;右键菜单栏对象&#xff0c;移除菜单栏&#xff1a; 删除后也可以创建菜单栏&#xff0c;此时在对象树中右键MainWindow对象&#xff0c;菜单里边会多了创建菜单栏的…

Repo命令使用实例(三十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

相机图像质量研究(18)常见问题总结:CMOS期间对成像的影响--CFA

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

c++STL系列——(九)迭代器

在C的标准模板库&#xff08;STL&#xff09;中&#xff0c;迭代器&#xff08;iterator&#xff09;是一种提供对容器中元素访问的抽象概念&#xff0c;它为STL提供了统一的访问接口&#xff0c;使得算法可以独立于具体容器类型进行操作。迭代器类似于指针&#xff0c;允许我们…

js中函数缓存详解(如何实现和应用场景)

文章目录 一、是什么二、如何实现闭包柯里化高阶函数 三、应用场景参考文献 一、是什么 函数缓存&#xff0c;就是将函数运算过的结果进行缓存 本质上就是用空间&#xff08;缓存存储&#xff09;换时间&#xff08;计算过程&#xff09; 常用于缓存数据计算结果和缓存对象 …

Vue2学习第二天

Vue2 学习第二天 1. 数据绑定 Vue 中有 2 种数据绑定的方式&#xff1a; 单向绑定(v-bind)&#xff1a;数据只能从 data 流向页面。双向绑定(v-model)&#xff1a;数据不仅能从 data 流向页面&#xff0c;还可以从页面流向 data。 备注&#xff1a; 双向绑定一般都应用在表单…

Kotlin:单例模式(项目使用实例)

摘要 单例模式主要的五种如下&#xff1a; 饿汉式懒汉式线程安全的懒汉式双重校验锁式&#xff08;Double Check)静态内部类式 一、项目使用单例模式实例场景 app在运行时缓存部分数据&#xff0c;作为全局缓存数据&#xff0c;以便其他页面及时更新页面对应状态的数据&…