云原生容器化-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)节 -- 认识网络【学网攻…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
