当前位置: 首页 > news >正文

云原生容器化-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)的整数序列中&#xff0c;判断是否存在某两个元素之和为k。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 第一行输入序列的长度n和k&#xff0c;用空格分开。 第二行输入序列中的n个整数&a…...

2023年哪个前端框架用的最多?

2023 年&#xff0c;TypeScript 的每月下载量持续稳定增长&#xff0c;年度累计下载量高达2,071,832,110&#xff08;20.7 亿&#xff09;&#xff0c;展现了强大的市场需求和用户认可。 本文来通过详细的数据&#xff08;2023 年 npm 累计下载量&#xff09;&#xff0c;看看…...

基于BitVM的乐观 BTC bridge

1. 引言 前序博客&#xff1a; 区块链互操作协议Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f;BitVM&#xff1a;Bitcoin的链下合约 基于BitVM的乐观 BTC bridge&#xff1a; Trust-minimized two-way peg 机制 BitVM BTC bridge背后的主要思想是&#xff1a; 为比…...

谷歌浏览器安装扩展程序axure-chrome-extension

注&#xff1a; 文末附扩展附件&#xff1a;axure-chrome-extension_v0.7.0.crx 1、安装扩展程序axure-chrome-extension 找到axure-chrome-extension.crx&#xff0c;把axure-chrome-extension.crx后缀改为zip&#xff0c;然后解压&#xff0c;得到一个文件夹 2、打开谷歌浏览…...

C++学习:大小写转换

islower/isupper函数 islower和isupper是C标准库中的字符分类函数&#xff0c;用于检查一个字符是否为小写字母或大写字母。 islower和isupper函数需要包含头文件&#xff0c;也可用万能头文<bits/stdc.h>包含。 函数返回值为bool类型。 char ch1 A; char ch2 a;//…...

【王道数据结构】【chapter5树与二叉树】【P159t16】

试设计判断两棵二叉树是否相似的算法。所谓二叉树T1和T2相似&#xff0c;指的是T1和T2都是空的二叉树或都只有一个根节点&#xff1b;或者T1的左子树和T2的左子树是相似的&#xff0c;且T1的右子树和T2的右子树是相似的 #include <iostream> #include <stack> #inc…...

代码随想录算法训练营第51天 | 139.单词拆分 多重背包理论基础

单词拆分 这道题最后是判断能否组成&#xff0c;很像回溯法的问题形式&#xff0c;和分割回文串那道题比较类似&#xff0c;所以是可以用回溯法解决的&#xff0c;但是回溯法需要使用记忆化递归来避免超时。 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的休闲娱乐代理售票系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的休闲娱乐代理售票系统 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;休闲娱乐代理…...

【Linux】学习-基础IO拓展篇

Linux基础IO拓展篇—详解文件系统 理解文件系统 在Linux基础IO篇中&#xff0c;我们站在用户的视角对文件进行了理解&#xff0c;主要是针对被打开的文件&#xff0c;那么有没有没有被打开的文件呢&#xff1f;当然有&#xff01;今天我们换个视角&#xff0c;来站在系统的角…...

算法详解(力扣141——环形链表系列)

博主ID&#xff1a;代码小豪 文章目录 环形链表环形链表的性质分析快慢指针法指针的追及相遇问题 环形链表&#xff08;2&#xff09; 环形链表 先来看看环形链表的原题&#xff1a; 中间的部分叙述有点繁杂&#xff0c;简单来概括就是&#xff0c;假如有一个节点&#xff0c…...

浅谈路由器交换结构

一、路由器技术概述 路由器&#xff08;Router&#xff09;是连接两个或多个网络的硬件设备&#xff0c;在网络间起网关的作用&#xff0c;是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备。它能够理解不同的协议&#xff0c;例如某个局域网使用的以太网协议…...

Linux第51步_移植ST公司的linux内核第3步_添加修改设备树

1、设备树文件的路径 1)、创建linux中的设备树头文件 在“my_linux/linux-5.4.31/arch/arm/boot/dts/”目录中&#xff0c;以“stm32mp15xx-edx.dtsi”为蓝本&#xff0c;复制一份&#xff0c;并命名为 “stm32mp157d-atk.dtsi”&#xff0c;这就是我们开发板的设备树头文件。…...

【PyTorch】PyTorch中张量(Tensor)统计操作

PyTorch深度学习总结 第五章 PyTorch中张量(Tensor)统计操作 文章目录 PyTorch深度学习总结前言一、最值查找二、特殊值查询 前言 上文介绍了PyTorch中张量(Tensor)的计算操作&#xff0c;本文将介绍张量的统计操作。 一、最值查找 函数描述torch.max()找出张量中的最大值to…...

安卓游戏开发框架应用场景以及优劣分析

一、引言 在移动游戏开发领域&#xff0c;选择合适的开发框架是项目成功的关键因素之一。特别是对于安卓平台&#xff0c;由于其开放性和庞大的用户基础&#xff0c;不同的游戏开发框架应运而生&#xff0c;旨在帮助开发者高效地构建游戏应用。以下是一些流行的安卓游戏开发框架…...

单片机学习笔记---LCD1602

LCD1602介绍 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是一种字符型液晶显示模块&#xff0c;可以显示ASCII码的标准字符和其它的一些内置特殊字符&#xff08;比如日文的片假名&#xff09;&#xff0c;还可以有8个自定义字符 显示容量&#xff1a;…...

django中实现适配器模式

在Django中实现适配器模式&#xff08;Adapter Pattern&#xff09;涉及到创建一个适配器类&#xff0c;它允许不兼容的接口之间进行交互。适配器模式通常用于将一个类的接口转换为另一个客户端期望的接口。 一&#xff1a;实现例子 下面是一个简单的例子&#xff0c;演示如何…...

题记(42)--EXCEL排序

目录 一、题目内容 二、输入描述 三、输出描述 四、输入输出示例 五、完整C语言代码 一、题目内容 Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。 对每个测试用例&#xff0c;首先输出1行“Case i:”&#xff0c;其中 i 是测试用例的编号&#…...

【学网攻】 第(28)节 -- OSPF虚链路

系列文章目录 目录 系列文章目录 文章目录 前言 一、什么是OSPF虚链路&#xff1f; 二、实验 1.引入 实验目标 实验背景 技术原理 实验步骤 实验设备 实验拓扑图 实验配置 扩展 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...