Docker基本操作---镜像与容器操作

Docker基本操作---镜像与容器操作

  • 1. 操作镜像
    • 1.1 查看镜像
    • 1.2 删除镜像
      • 1.2.1 删除镜像
      • 1.2.2 强制删除镜像
      • 1.2.3 删除所有镜像
    • 1.3 启动镜像
    • 1.4 常见错误
      • 1.4.1 image is being used by stopped container e3b9df6dc6ae
  • 2 操作容器
    • 2.1 新建+启动容器
    • 2.2 查看正在运行的容器
    • 2.3 退出容器
    • 2.4 删除已经停止的容器
    • 2.5 启动与停止
    • 2.6 启动守护式进程
    • 2.7 查看容器日志
    • 2.8 查看容器内运行的进程
    • 2.9 查看容器内部细节
    • 2.10 进入正在运行的容器并以命令行交互
    • 2.11 从容器内拷贝文件到主机
    • 2.12 导入和导出容器

1. 操作镜像

1.1 查看镜像

在使用Docker时,合理地管理和使用镜像是一个重要的考量点。正确地删除不再需要的镜像是保持系统整洁和减少存储空间的重要步骤。本文介绍了如何查看Docker系统上的镜像,以及如何删除镜像和强制删除镜像。需要注意的是,删除镜像前要确保该镜像不再需要,避免误删系统必需的镜像。

docker images

在这里插入图片描述

1.2 删除镜像

1.2.1 删除镜像

  • 删除镜像的命令格式为:
docker rmi [OPTIONS] IMAGE [IMAGE...]

其中,OPTIONS是可选项,IMAGE是要删除的镜像名称或ID,可以同时删除多个镜像。

  • 例如,如果要删除名称为“nginx”的镜像,可以执行如下命令:
docker rmi nginx
  • 如果要删除ID为“064b1d04aeff”的镜像,可以执行如下命令:
docker rmi 064b1d04aeff
  • 如果要删除多个镜像,可以在命令中指定多个镜像名称或ID,例如:

docker rmi nginx mysql redis

效果图:
在这里插入图片描述

1.2.2 强制删除镜像

有时候,Docker会因为某种原因无法删除某个镜像,此时可以添加“-f”选项来强制删除镜像。

  • 命令格式如下:
docker rmi -f [IMAGE...]

其中,IMAGE表示要删除的镜像名称或ID,可以同时删除多个镜像。

  • 例如,如果要强制删除名称为“nginx”的镜像,可以执行如下命令:
docker rmi -f nginx
  • 如果要强制删除ID为“064b1d04aeff”的镜像,可以执行如下命令:
docker rmi -f 064b1d04aeff
  • 如果要强制删除多个镜像,可以在命令中指定多个镜像名称或ID,例如:
docker rmi -f nginx mysql redis

1.2.3 删除所有镜像

如果需要删除系统上所有的镜像,可以使用以下命令:

docker rmi $(docker images -q)

该命令会先使用“docker images -q”命令查询系统上的所有镜像,并使用“$(docker images -q)”将查询结果作为参数传递给“docker rmi”命令,从而实现删除所有镜像的操作。

需要注意的是,该命令会删除所有的镜像,包括正在使用的镜像,因此在执行命令之前需要谨慎考虑。

1.3 启动镜像

# 启动已停止的容器
docker start 容器ID或者容器名
# 重启
docker restart 容器ID或者容器名
# 停止
docker stop 容器ID或者容器名
# 强制停止
docker kill 容器ID或容器名 

1.4 常见错误

1.4.1 image is being used by stopped container e3b9df6dc6ae

尝试重启一下容器再重新删除

在这里插入图片描述
在这里插入图片描述

2 操作容器

有镜像才能创建容器, 这是根本前提(下载一个CentOS或者ubuntu镜像演示)

2.1 新建+启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]# 例如:使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令
# 放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
# 要退出终端,直接输入 exit
docker run -it ubuntu /bin/bash

在这里插入图片描述

2.2 查看正在运行的容器

docker ps [OPTIONS]

在这里插入图片描述

  • 表头说明
    在这里插入图片描述
  • option说明
    在这里插入图片描述

2.3 退出容器

(1)run进入容器,exit命令退出,容器停止

(2)run进入容器,ctrl+p+q容器不停止

2.4 删除已经停止的容器

# 删除容器
docker rm 容器id
# 强制删除
docker rm -f 容器id
# 一次性删除多个实例容器(两命令均可)慎用!
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm

2.5 启动与停止

# 启动已停止的容器
docker start 容器ID或者容器名
# 重启
docker restart 容器ID或者容器名
# 停止
docker stop 容器ID或者容器名
# 强制停止
docker kill 容器ID或容器名 

2.6 启动守护式进程

# 启动守护式容器
docker run -d 容器名

注意:

  • 问题:-d启动容器后,docker ps -a 进行查看, 会发现容器已经退出
  • Docker容器后台运行,就必须有一个前台进程。这个是docker的机制问题。

最佳的解决方案是,将你要运行的程序以前台进程的形式运行,常见就是命令行模式,表示我还有交互操作,别中断。

2.7 查看容器日志

# 查看容器日志
docker logs 容器id

2.8 查看容器内运行的进程

# 查看容器内运行的进程
docker top 容器id

2.9 查看容器内部细节

# 查看容器内部细节
docker inspect 容器id

2.10 进入正在运行的容器并以命令行交互

# 比如用ctrl+q+p退出的,以下命令可以重新进入(工作中常用)
docker exec -it 容器id bashShelldocker attach 容器id

一般用-d后台启动的程序,再用exec进入对应容器实例。

2.11 从容器内拷贝文件到主机

docker cp  容器ID:容器内路径 目的主机路径

2.12 导入和导出容器

# export 导出容器的内容留作为一个tar归档文件[对应import命令]
docker export 容器ID > 文件名.tar
# import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号

命令总结

attach    Attach to a running container                 # 当前 shell 下 attach 连接指定运行镜像
build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像
commit    Create a new image from a container changes   # 提交当前容器为新的镜像
cp        Copy files/folders from the containers filesystem to the host path   #从容器中拷贝指定文件或者目录到宿主机中
create    Create a new container                        # 创建一个新的容器,同 run,但不启动容器
diff      Inspect changes on a container’s filesystem   # 查看 docker 容器变化
events    Get real time events from the server          # 从 docker 服务获取容器实时事件
exec      Run a command in an existing container        # 在已存在的容器上运行命令
export    Stream the contents of a container as a tar archive   # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history   Show the history of an image                  # 展示一个镜像形成历史
images    List images                                   # 列出系统当前镜像
import    Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]
info      Display system-wide information               # 显示系统相关信息
inspect   Return low-level information on a container   # 查看容器详细信息
kill      Kill a running container                      # kill 指定 docker 容器
load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]
login     Register or Login to the docker registry server    # 注册或者登陆一个 docker 源服务器
logout    Log out from a Docker registry server          # 从当前 Docker registry 退出
logs      Fetch the logs of a container                 # 输出当前容器日志信息
port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT    # 查看映射端口对应的容器内部源端口
pause     Pause all processes within a container        # 暂停容器
ps        List containers                               # 列出容器列表
pull      Pull an image or a repository from the docker registry server   # 从docker镜像源服务器拉取指定镜像或者库镜像
push      Push an image or a repository to the docker registry server    # 推送指定镜像或者库镜像至docker源服务器
restart   Restart a running container                   # 重启运行的容器
rm        Remove one or more containers                 # 移除一个或者多个容器
rmi       Remove one or more images       # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run       Run a command in a new container              # 创建一个新的容器并运行一个命令
save      Save an image to a tar archive                # 保存一个镜像为一个 tar 包[对应 load]
search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像
start     Start a stopped containers                    # 启动容器
stop      Stop a running containers                     # 停止容器
tag       Tag an image into a repository                # 给源中镜像打标签
top       Lookup the running processes of a container   # 查看容器中运行的进程信息
unpause   Unpause a paused container                    # 取消暂停容器
version   Show the docker version information           # 查看 docker 版本号
wait      Block until a container stops, then print its exit code   # 截取容器停止时的退出状态值

请添加图片描述
未完待续^ 。。^

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

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

相关文章

signal函数简介及使用

signal.h是C标准函数库中的信号处理部分,定义了程序执行时如何处理不同的信号。信号用作进程间通信,报告异常行为(如除零)、用户的一些按键组合(如同时按下Ctrl与C键,产生信号SIGINT)。C中的对应头文件是csignal。 C语言标准定义了6个信号&a…

Unity学习笔记11

一、视频播放功能 1.如何让视频在游戏场景中播放? 在Assets目录下添加一个渲染器纹理,步骤:新建→渲染器纹理 首先在创建一个平面,想让视频在平面上显示。在平面上添加一个组件 Video Player 然后将视频文件拖拽到视频剪辑位置上…

黄金比例设计软件Goldie App mac中文版介绍

Goldie App mac是一款测量可视化黄金比例的工具。专门为设计师打造,可以帮助他们在Mac上测量和可视化黄金比例,从而轻松创建出完美、平衡的设计。 Goldie App mac体积小巧,可以驻留在系统的菜单栏之上,随时提供给用户调用。 拥有独…

如何控制Spring工厂创建对象的次数?详解Spring对象的声明周期!

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

Dijkstra算法(贪心),Floyd-Warshall算法(动态规划), Bellman-Ford算法——用Python实现

图论中最短路径三剑客 前言一、Dijkstra算法(贪心)1.1 Dijkstra在生活中的应用举例1.2 设计思路1.3 算法应用实例1.3.1 以交通规划为例1.3.2 Dijkstra算法执行步骤1.3.3 python代码 1.4 时空复杂度 二、Floyd-Warshall算法(动态规划&#xff…

ThinkPHP 5 中,你可以使用定时任务调度器(TaskScheduler)来执行其他定时任务

在 ThinkPHP 5 中,你可以使用定时任务调度器(TaskScheduler)来执行其他定时任务。以下是一个示例代码,演示如何在一个定时任务中执行另一个定时任务: 首先,你需要创建一个继承自 think\console\Command 的…

12 动态规划解不相交的线

来源:LeetCode第1035题 难度:中等 描述:在两条独立的水平线上按给定的顺序写下nums1和nums2中的整数,现在绘制一些连接两个数字nums1[i]和nums2[j]的指向,这些纸箱需要满足nums1[i]nums2[j],且绘制的直线不与任何其他…

MySQL数据库编程进阶

目录 MySQL 创建索引 普通索引 唯一索引 MySQL 事务 MySQL 触发器 MySQL 内置函数 字符串函数 数字函数 日期函数 其它函数 MySQL 数据库备份 数据备份 数据恢复 MySQL 创建索引 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL…

什么是强缓存和协商缓存?

强缓存(Strong Caching): 强缓存是指在缓存过期前,浏览器直接从本地缓存中加载资源,而不需要向服务器发送请求。这是因为服务器在响应资源请求时,在响 应头中设置了合适的缓存策略(例如 Cache-…

6. 列表

列表(list)是一个抽象的数据结构概念,它表示元素的有序集合,支持元素访问、修改、添加、删除和遍历等操作,无需使用者考虑容量限制的问题。列表可以基于链表或数组实现。 链表天然可以被看作是一个列表,其支持元素增删查改操作&a…

环境部署的学习笔记(Docker)

1 前言 在现场测试时,常常需要在现场机器上搭建开发环境,此时使用容器会是一个比较方便的途径; 2 常见的容器技术 2.1 Docker⭐️31k:目前使用最为广泛的容器技术 2.2 Nix⭐️13.8k:镜像文件占用会比Docker少 Chat…

leetcode每日一题35

90. 子集 II 回溯嘛 子集啊排列组合啊棋盘啊都是回溯 回溯三部曲走起 跟78.子集比,本题给出的数组里存在重复元素了 所以在取元素时,如果同一层里取过某个元素,那么在该层就不能取重复的该元素了 如给出的数组[1,2,2] 可以在某一次递归中第一…

fiddler设置过滤你就这样做,一做一个不只声!

fiddler设置过滤 基本的过滤操作流程以百度为例 步骤: 1、右侧高级工具栏点击Filters》勾选Use Filters》选择Show only Internet Hosts和Show only the following Hosts》在文本框中输入host地址 2、点击Changes not yet saved》再点击Actions》Run Filterset …

如何获取高质量的静态住宅IP代理?常见误区与注意事项

静态住宅IP代理在今天的网络营销领域扮演着至关重要的角色,静态住宅IP代理以其稳定性和高匿名性,为互联网业务提供了一个安全的执行环境。通过模拟真实用户的网络行为,这些IP代理降低了企业在网络营销活动中被识别和封禁的风险。它保护了企业…

echarts修改tooltip默认的圆点图标为其他样式

业务需求,默认是圆点,需要把线的由圆点改为线 红色线是理论,点是历史理论,绿色线是实际, 点是历史实际,在series里的顺序也是这样排的。 打印出来的params里的marker就是圆点,改这段代码就可以了…

力扣106. 从中序与后序遍历序列构造二叉树

栈 思路: 思路与 力扣105. 从前序与中序遍历序列构造二叉树 相同;差异的地方: 从后序遍历数组尾部向前遍历;(根节点在尾部)一直迭代“最右”节点,将其挂载到栈顶(“根”节点&#x…

使用STM32 HAL库驱动光电传感器的设计和优化

光电传感器在许多应用中起着重要的作用,例如自动计数、距离测量等。STM32微控制器和HAL库提供了丰富的功能和易于使用的接口,使得光电传感器的设计和优化变得更加便捷。本文将介绍如何使用STM32 HAL库驱动光电传感器的设计和优化,包括硬件设计…

OpenCV | 傅里叶变换——低通滤波器与高通滤波器

import cv2 #opencv 读取的格式是BGR import numpy as np import matplotlib.pyplot as plt #Matplotlib是RGB %matplotlib inline def cv_show(img,name):cv2.imshow(name,img)cv2.waitKey()cv2.destroyAllWindows() 傅里叶变换 傅里叶变换的作用 高频:变化剧烈…

数据结构-01-数组

每一种编程语言中,基本都会有数组这种数据类型。不过,它不仅仅是一种编程语言中的数据类型,还是一种最基础的数据结构。 1-数组的概念和特性 数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来…

JAVA文件IO, File类, 字符流,字节流

文章目录 文件IO1. File2. IO流2.1 字符流2.1.1 Reader2.1.2 Writer 2.2 字节流2.2.1 InputStream2.2.2 FileInputStream2.2.3 利用Scanner进行字符读取2.2.4 OutputStream 文件IO I: Input, 从硬盘往内存读数据 O: Output, 从内存往硬盘输出数据 1. File Java 中通过 java…