Docker之镜像与容器的相关操作

目录

 一、Docker镜像

搜索镜像

下载镜像 

查看宿主机上的镜像

删除镜像 

二、Docker容器

创建容器 

查看容器

启停容器

删除容器

进入容器

创建/启动/进入容器

退出容器

查看容器内部信息


一、Docker镜像

Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下载(默认使用 Docker Hub公共注册服务器中的仓库), 用户也可以通过配置,使用自定义的镜像仓库。

搜索镜像

docker search 镜像名称

例如:

docker search centos

下载镜像 

docker pull 镜像

例如, 获取一个 centos 系统的基础镜像可以使用如下的命令:

# 未指定版本一般会使用latest(最新的)版本
docker pull centos
# 或者直接指定版本
docker pull centos:版本号

查看宿主机上的镜像

docker images

/var/lib/docker 为 docker 默认安装目录

# 切换目录
cd /var/lib/docker/containers 
# 查看目录下的文件
ls

删除镜像 

docker rmi 镜像ID/标签

例如:

# 根据镜像ID删除
docker rmi feb5d9fea6a5
# 根据镜像标签(版本)
docker rmi hello-world:latest 或 docker rmi hello-world:版本号

如果提示镜像被使用,需要先停止某个ID的容器,然后先删除容器再删除镜像。或者强制删除镜像。

强制删除镜像:  

docker rmi -f centos:版本号 

-f, -force: 强制删除镜像, 即使有容器依赖它。

总之, 通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像。  

二、Docker容器

容器是Docker的另一个核心概念。简单来说,容器是镜像的一个运行实例。所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层;同时,容器中的应用进程处于运行状态。

通俗理解:类 -> 实例,镜像 -> 容器

创建容器 

# 方式一:创建容器不指定容器名,由Docker容器随机生成
docker create -it centos:latest
# 方式二:创建容器并指定容器名
docker create -it --name tomcat01 centos:latest

命令说明:

命令说明
create创建docker容器关键字
-it是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端
--name指定生成的容器的名字,允许空,如果不指定会自动生成
centos:latest即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像,不存在就从公有仓库下载。

查看容器

查看当前运行的容器:

docker ps

查看所有容器:

docker ps -a

启停容器

# 启动容器
docker start 容器ID或name
# 停止容器
docker stop 容器ID或name
# 重启容器
docker restart 容器ID或name 

删除容器

docker rm 容器ID

主要支持的选项包括:

选项说明
-f, --force=false是否强行终止并删除一个运行中的容器
-l, --link=false删除容器的连接 ,但保留容器
-v, --volumes=false删除容器挂载的数据卷

删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

docker rm $(docker ps -aq)

停止所有容器并删除容器:

docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

还可以根据容器的状态删除,删除Exited状态的容器:

docker rm $(docker ps -qf status=exited)

Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器:

docker container prune

进入容器

docker exec -it 容器ID/容器NAME /bin/bash
# 简写方式:
docker exec -it 容器ID/容器NAME bash

 注意:只有在容器启动的时候即UP状态才能进入容器终端

创建/启动/进入容器

run 命令等于 create + start。

  • 创建+启动+进入容器:

    docker run -it centos:latest /bin/bash
  • 创建容器,通过 -p 标记指定端口映射规则,可以指定多个:(注意:此处p是小写)

    docker run -it -p 7001:8001 centos:latest /bin/bash

  • 使用 -P 标记时, Docker 会随机映射一个 49000~49900 的端口:(注意:此处P是大写)

    docker run -it -P --name tomcat03 centos:latest /bin/bash

更多的时候,需要让 Docker 容器在后台以守护态( Daemonized )形式运行 此时,可以通过添加 -d 参数来实现:

# 创建容器指定后台运行模式(后台守护态)
docker run -it -d --name webapp centos:latest 
# 进入容器
docker exec -it webapp /bin/bash

部分参数说明:

参数说明
-p端口映射,格式为:主机(宿主)端口:容器端口
-P注意是大写P,使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口
-d后台运行模式

退出容器

退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】

如果不想继续运行:按【ctrl+d】或输入exit

查看容器内部信息

  • 进入容器内部获取信息

首先,请先进入容器:

docker exec -it 容器ID/容器NAME /bin/bash

如果此时已进入容器内部,可分别执行hostname、ip addr、env这三个命令可以获取相关信息:

# 查看主机名
hostname
# 查看IP地址
ip addr
# 查看环境变量
env

  • 在宿主机,执行docker exec命令
# 获取容器的hostname
docker exec 容器ID/容器NAME hostname
# 获取容器ip地址
docker exec 容器ID/容器NAME ip addr
# 获取容器环境变量
docker exec 容器ID/容器NAME env
  • 在宿主机,使用 docker inspect 命令

推荐使用 docker inspect 来获取信息,这个命令会返回一个 json 字符串,里面以 key-value 的格式准备了该容器相关的信息,内容十分丰富,可以一次性取得全部内容,也可以返回指定 key 对应的信息。

docker inspect 容器ID/容器NAME

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

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

相关文章

mysql 连接查询和子查询

学习了mysql基本查询, 接着学习连接查询和子查询。 4,连接查询 连接是关系数据库模型的主要特点。连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等。通过连接运算符可以实现多个表查询。在关系数据库管理系统中,表建…

使用 Docker Compose 部署邮件服务器

使用 Docker Compose 部署邮件服务器 很多时候为了方便, 我们都直接使用第三方邮箱进行收发邮件。 但第三方邮箱有些要求定期修改密码,有些限制发邮箱的次数, 对于一些个人和企业来说, 有自己的域名和服务器为什么不自己搭建一个邮…

GESP Python编程五级认证真题 2024年3月

Python 五级 2024 年 03 月 1 单选题(每题 2 分,共 30 分) 第 1 题 下面流程图在yr输入2024时,可以判定yr代表闰年,并输出 2月是29天 ,则图中菱形框中应该填入( )。 A. (yr % 400 0…

Leetcode刷题笔记——多维动态规划篇

Leetcode刷题笔记——多维动态规划篇 第一题:最小路径和 Leetcode64:最小路径和:中等题 (详情点击链接见原题) 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的…

稀碎从零算法笔记Day36-LeetCode:H指数

有点绕的一个题,题目描述的有点奇怪(可以看下英文?) 题型:数组、模拟 链接:274. H 指数 - 力扣(LeetCode) 来源:LeetCode 题目描述 给你一个整数数组 citations &am…

SpringBoot登录校验(四)过滤器Filter

JWT令牌生成后,客户端发的请求头中会带有JWT令牌,服务端需要校验每个请求的令牌,如果在每个controller方法中添加校验模块,则十分复杂且冗余,所以引入统一拦截模块,将请求拦截下来并做校验,这块…

【算法】两数之和(暴力求解+哈希表)

本题来源---《两数之和》。 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里…

Golang | Leetcode Golang题解之第12题整数转罗马数字

题解: 题解: var (thousands []string{"", "M", "MM", "MMM"}hundreds []string{"", "C", "CC", "CCC", "CD", "D", "DC", "…

UNITY实战进阶-BatchRendererGroup+Jobs+Burst+RVO2+GPUAnimation 实现万人团战(一)

研究思路:GPUAnimation把动画放入GPU中处理,BatchRendererGroup进行动态批量渲染处理,JobsBurst进行多线程处理逻辑(移动、攻击等),RVO2采用Jobs的寻路导航。 准备工作: Editor > Project S…

VMware虚拟机(Rocky9.3)硬盘扩容详细图文教程

参考<<鸟哥的Linux>>以及VMware虚拟机硬盘扩容详细图文教程 原因: 用户空间不足,且系统是用LVM&#xff08;logical volume manager&#xff09;进行分区 df -h #查看/home目录下磁盘容量不足磁盘扩容步骤 关闭虚拟机,选择编辑虚拟机, 点击硬盘,再点击扩容 这个…

Redis安装说明

Redis安装说明 大多数企业都是基于Linux服务器来部署项目&#xff0c;而且Redis官方也没有提供Windows版本的安装包。因此课程中我们会基于Linux系统来安装Redis. 此处选择的Linux版本为CentOS 7. Redis的官方网站地址&#xff1a;https://redis.io/ 1.单机安装Redis 1.1.…

Mysql底层原理十一:Mvcc

为什么要mvcc&#xff1f; 提高并发度&#xff0c;如果读和写都是通过加锁的方式&#xff0c;并发肯定上不来&#xff0c;通过mvcc来实现写通过加锁&#xff0c;读通过mvcc readView机制 3.9.1 Undo版本链 再重复一遍&#xff0c;页面中的记录存放在用户表空间的数据页中&a…

VLAN 与 VXLAN:一个字母之差,到底两者有什么区别?

来源&#xff1a;网络技术联盟站 网络虚拟化技术在现代网络架构中扮演着至关重要的角色&#xff0c;而其中的两个重要代表——虚拟局域网&#xff08;VLAN&#xff09;和虚拟扩展局域网&#xff08;VXLAN&#xff09;——在网络管理和扩展性方面发挥着独特的作用。本文将深入研…

LeetCode-1483. 树节点的第 K 个祖先【树 深度优先搜索 广度优先搜索 设计 二分查找 动态规划】

LeetCode-1483. 树节点的第 K 个祖先【树 深度优先搜索 广度优先搜索 设计 二分查找 动态规划】 题目描述&#xff1a;解题思路一&#xff1a;暴力解法会超时&#xff01;【一级一级往上跳&#xff0c;效率太低】解题思路二&#xff1a;倍增&#xff0c;利用二进制运算&#xf…

gin框架提高篇(三)

多服务器程序运行 package mainimport ("fmt""github.com/gin-gonic/gin""golang.org/x/sync/errgroup""net/http""time" )var g errgroup.Group // 使用 errgroup.Group 来并发启动这两个服务器func main() {// 服务器1se…

穿越代码之海:探寻结构体深层逻辑,展望未来应用新天地

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 结构体作为一种数据结构&#xff0c;其定义和特点决定了它在各种应用中的广泛适用性。随着科技的进步和新兴行业的不断涌现&#xf…

HarmonyOS 应用开发之wrapBuilder:封装全局@Builder

全局Builder作为wrapBuilder的参数返回WrappedBuilder对象&#xff0c;实现 全局Builder 可以进行赋值和传递。 说明&#xff1a; 从API version 11开始使用。 接口说明 wrapBuilder是一个模板函数&#xff0c;返回一个WrappedBuilder对象。 declare function wrapBuilder<…

机器学习数据预处理—统计分析方法

数据预处理 1 数据规范化 量纲&#xff0c;指将一个物理导出量用若干基本量的乘方之积表示出来的表达式。数据的比较需要关注两点——绝对数值和量纲&#xff0c;而特征间因为量纲的存在导致无法直接通过绝对数值比较大小&#xff0c;也就无法判断特征间的重要性。例如若某个…

算法:树形dp(树状dp)

文章目录 一、树形DP的概念1.基本概念2.解题步骤3.树形DP数据结构 二、典型例题1.LeetCode&#xff1a;337. 打家劫舍 III1.1、定义状态转移方程1.2、参考代码 2.ACWing&#xff1a;285. 没有上司的舞会1.1、定义状态转移方程1.2、拓扑排序参考代码1.3、dfs后序遍历参考代码 一…

刷题之Leetcode209题(超级详细)

209.长度最小的子数组 力扣题目链接(opens new window)https://leetcode.cn/problems/minimum-size-subarray-sum/ 给定一个含有 n 个正整数的数组和一个正整数 s &#xff0c;找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组&#xff0c;并返回其长度。如果不存在符合条…