当前位置: 首页 > 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:/容器路径} ${宿主机目录}
http://www.lryc.cn/news/300218.html

相关文章:

  • 几道简单的题目练一下手感
  • 2023年哪个前端框架用的最多?
  • 基于BitVM的乐观 BTC bridge
  • 谷歌浏览器安装扩展程序axure-chrome-extension
  • C++学习:大小写转换
  • 【王道数据结构】【chapter5树与二叉树】【P159t16】
  • 代码随想录算法训练营第51天 | 139.单词拆分 多重背包理论基础
  • weilai8游戏爬虫
  • 【Java程序设计】【C00261】基于Springboot的休闲娱乐代理售票系统(有论文)
  • 【Linux】学习-基础IO拓展篇
  • 算法详解(力扣141——环形链表系列)
  • 浅谈路由器交换结构
  • Linux第51步_移植ST公司的linux内核第3步_添加修改设备树
  • 【PyTorch】PyTorch中张量(Tensor)统计操作
  • 安卓游戏开发框架应用场景以及优劣分析
  • 单片机学习笔记---LCD1602
  • django中实现适配器模式
  • 题记(42)--EXCEL排序
  • 【学网攻】 第(28)节 -- OSPF虚链路
  • 百面嵌入式专栏(面试题)驱动开发面试题汇总1.0
  • Starknet 的 JavaScript 库:Starknet.js、get-starknet和starknet-react
  • debian11 安装 k8s,containerd ,阿里云镜像(已成功)
  • Spring Task定时任务
  • 【设计模式】23中设计模式笔记
  • 类加载过程介绍
  • pytorch创建模型方式
  • MySQL 基础知识(五)之数据增删改
  • 紫微斗数双星组合:廉贞天府在辰戌
  • 人工智能|深度学习——基于全局注意力的改进YOLOv7-AC的水下场景目标检测系统
  • 使用 C++23 从零实现 RISC-V 模拟器(1):最简CPU