Docker镜像与容器操作

一、Docker 镜像操作

1.1 搜索镜像

格式:docker search 关键字

docker search nginx

1.2 获取镜像nginx

格式:docker pull 仓库名称[:标签]

如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。

docker pull nginx

1.3 查看下载的镜像文件信息

镜像下载后存放在 /var/lib/docker

cat /var/lib/docker/image/overlay2/repositories.json

1.5 查看下载到本地的所有镜像

docker images

REPOSITORY:镜像属于的仓库
TAG:镜像的标签信息,标记同一个仓库中的不同镜像
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像
CREATED:镜像创建时间
SIZE:镜像大小

1.6 根据镜像的唯一标识 ID 号,获取镜像详细信息

格式:docker inspect 镜像ID号

docker inspect 605c77e624dd

1.7 为本地的镜像添加新的标签

格式:docker tag 名称:[标签] 新名称:[新标签]

docker tag nginx:latest nginx:web
docker images | grep nginx

1.8 删除镜像

格式:

  • docker rmi 仓库名称:标签   #当一个镜像有多个标签时,只是删除其中指定的标签

或者

  • docker rmi 镜像ID号  #会彻底删除该镜像
docker rmi nginx:latest

注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。

1.9 镜像导出导入到本地

1.9.1 导出镜像:将镜像保存成为本地文件

格式:docker save -o 存储文件名 存储的镜像

docker save -o nginx nginx:web    #存出镜像命名为nginx存在当前目录下
ls -lh

1.9.2 导入镜像:将镜像文件导入到镜像库中

格式:

  • docker load < 存出的文件

或者

  • docker load -i 存出的文件
docker load < nginx
docker load -i nginx

 

1.10 上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。(https://hub.docker.com)

可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。

(如果网址进不去,一定要记得挂翻墙软件才可以访问外网!)

 

 

在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:latest taoxiayu1/nginx:txy        #添加新的标签

docker login            #登录公共仓库Username:taoxiayu1
password:***********

docker push taoxiayu1/nginx:txy    #上传镜像

 docker images         #查看镜像

 

二、Docker 容器操作

2.1 容器创建

容器创建就是将镜像加载到容器的过程。新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

格式:docker create [选项] 镜像

常用选项:
-i:让容器开启标准输入
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell 

docker create -it nginx:web /bin/bash

2.2 查看容器的运行状态

docker ps -a      #-a 选项可以显示所有的容器

CONTAINER ID:容器的ID号

IMAGE:加载的镜像

COMMAND:运行的程序

CREATED:创建时间

STATUS:当前的状态

PORTS:端口映射

NAMES:名称

2.3 启动容器——docker start

格式:docker start 容器的ID号

docker start ff170003110b
docker ps -a

2.4 创建并启动容器(一次性执行)—— docker run

可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。
注意:容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行,命令结束容器退出。

docker 容器默认会把容器内部第一个进程,也就是 pid=1 的程序作为docker容器是否正在运行的依据,如果docker容器中 pid = 1 的进程挂了,那么docker容器便会直接退出,也就是说Docker容器中必须有一个前台进程,否则认为容器已经挂掉。

当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:

(1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;

(2)利用镜像创建并启动一个容器;

(3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;

(4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;

(5)分配一个地址池中的 IP 地址给容器;

(6)执行用户指定的应用程序,执行完毕后容器被终止运行。

docker run centos:7 /usr/bin/bash -c ls
docker ps -a       #会发现创建了一个新容器并启动执行一条 shell 命令,之后就停止了

2.5 在后台持续运行 docker run 创建的容器

需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。

docker run -it centos:7 bash  #不加 -d 选项会创建容器后直接进入容器,但是退出容器,容器也会停止

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
docker ps -a        #可以看出容器始终处于 UP,运行状态

2.6 终止容器运行

格式:docker stop 容器的ID/名称

docker stop ff170003110b
docker ps -a

2.7 容器的进入

需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。

格式:docker exec -it 容器ID/名称 /bin/bash

-i 选项表示让容器的输入保持打开;

-t 选项表示让 Docker 分配一个伪终端。

docker start 9802468c6a77                #进入容器前,确保容器正在运行
docker exec -it 9802468c6a77 /bin/bash
ls

exit
docker ps -a   #查看运行状态

2.8 复制到容器中

echo abc123 > ~/txytest.txt
docker cp ~/txytest.txt 9802468c6a77:/opt/

2.9 从容器复制文件到主机

docker cp 9802468c6a77:/opt/test.txt ~/abc123.txt

2.10 容器的导出与导入

用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。

  • 导出格式:docker export 容器ID/名称 > 文件名

docker export 2592d3fad0fb > centos7.tar

  • 导入格式:cat 文件名 | docker import – 镜像名称:标签

cat centos7.tar | docker import - centos7:test            #导入后会生成镜像,但不会创建容器

2.11 删除容器

格式:docker rm [-f] 容器ID/名称
docker stop 2592d3fad0fb
docker rm 2592d3fad0fb                #删除已经终止状态的容器

docker rm -f 2592d3fad0fb            #强制删除正在运行的容器

docker ps -a | awk 'NR>=2{print "docker stop "$1}' | bash            #批量停止容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker stop

docker ps -a | awk 'NR>=2{print "docker rm "$1}' | bash                #批量删除所有容器
docker ps -a | awk 'NR>=2{print $1}'| xargs docker rm

docker images | awk 'NR>=2{print "docker rmi "$3}'| bash            #批量删除镜像
docker images | grep none | awk '{print $3}' | xargs docker rmi        #删除none镜像

docker rm $(docker ps -a -q)        #批量清理后台停止的容器

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

DOM4标准的事件监听与滚屏优化

EventTarget.addEventListener() 我们在学习addEventListener()时都只是知道它是用来给事件注册事件处理函数的。但是这种描述并不是很准确&#xff0c;MDN上给我们准确的描述了它的定义。EventTarget.addEventListener()方法将指定的监听器注册到EventTarget上&#xff0c;当…

字符长、看不懂、费率飙升|Runes协议上线后发生了什么?

作者&#xff1a;比特里里 X/推&#xff1a;lilyanna_btc 1、字符数长了&#xff0c;单词都完整了&#xff0c;反而看不懂了 由于 Runes 协议的字符长度限制&#xff0c;大部分的票都在 13 个字符及以上&#xff0c;人名、域名、slogan&#xff0c;各类玩法都出来了。很多人适…

文本向量化模型新突破——acge_text_embedding勇夺C-MTEB榜首

在人工智能的浪潮中&#xff0c;以GPT4、Claude3、Llama 3等大型语言模型&#xff08;LLM&#xff09;无疑是最引人注目的潮头。这些模型通过在海量数据上的预训练&#xff0c;学习到了丰富的语言知识和模式&#xff0c;展现了出惊人的能力。在支撑这些大型语言模型应用落地方面…

JS----前端不同格式的 UUID生成

前端 UUID生成 export const generateUUID () > {let timestamp new Date().getTime()let performanceNow (typeof performance ! undefined && performance.now && performance.now() * 1000) || 0return xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.replac…

免费好用的AI绘画生成器推荐,建议收藏!

AI绘画生成器可以根据设计师的需求生成各种风格、主题的绘画作品&#xff0c;无论是现代抽象&#xff0c;还是古典风景&#xff0c;都能应有尽有。任何人只需几步简单操作&#xff0c;都可以轻松使用这款工具&#xff0c;就能生成出令人惊艳的作品。那么免费好用的AI绘画生成器…

docker部署通义千问-7B-Chat的openai-api环境

服务器环境&#xff1a; 显卡驱动&#xff1a;Driver Version: 530.30.02 CUDA版本&#xff1a;CUDA Version: 12.1 显卡&#xff1a;NVIDIA GeForce RTX 3090共4张 注意&#xff1a;最好把显卡驱动升级到530&#xff0c;CUDA版本之前使用11.7有问题。 一、下载模型文件 …

Linux之安装Nginx

目录 传送门前言一、快速安装二、反向代理语法1、基本语法2、location语法1. 基本语法2. 匹配规则3. 修饰符4. 权重5. 嵌套location6. 其他指令7.案例 三、配置反向代理 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff0…

2024年深圳杯东三省数学建模联赛A题论文首发第二种思路

深圳杯A题论文代码分享资料链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1L2NVgoefSW-yuqZjEB3wcw 提取码&#xff1a;sxjm 问题一 数据转换&#xff1a; 首先&#xff0c;我们将监测站的经纬度坐标转换为基于米的笛卡尔坐标系。这是因为在地面上的大尺度距离…

selenium‘拟人包装‘设置

1、设置header,proxy 1.1关于user-agent 输入about:version 找到user-agent: import requests # 引用requests库 from selenium import webdriver#载入浏览器驱动#header&#xff0c;proxy设置 optionswebdriver.ChromeOptions()#实例化浏览器参数设置options.add_argument…

探索深度与广度的平衡:迭代加深深度优先搜索技术解析

探索深度与广度的平衡&#xff1a;迭代加深深度优先搜索技术解析 迭代加深深度优先搜索&#xff08;IDDFS&#xff09;的基本原理伪代码C语言实现讨论结论 迭代加深&#xff08;Iterative Deepening Depth-First Search, IDDFS&#xff09;是一种用于解决搜索问题的方法&#x…

解决配置Tomcat时,找不到war和war exploded问题

解决配置Tomcat时&#xff0c;找不到war和war exploded问题 文章目录 解决配置Tomcat时&#xff0c;找不到war和war exploded问题前言一、解决方法&#xff1a;1. war exploded2. war 总结 前言 提示&#xff1a;以下是本篇文章正文内容&#xff1a; 一、解决方法&#xff1a;…

spring的跨域问题

跨域问题 什么是跨域解决跨域 什么是跨域 跨域问题本质是浏览器的一种保护机制&#xff0c;它的初衷是为了保证用户的安全&#xff0c;防止恶意网站窃取数据。如果出现了以下情况中的任意一种&#xff0c;那么它就是跨域请求&#xff1a; 1、协议不同&#xff0c;如 http 和 h…

网站想实现HTTPS访问需要有哪些步骤?

网站要实现HTTPS访问&#xff0c;以确保数据传输安全和提升用户信任度&#xff0c;主要需按以下步骤操作&#xff1a; 1. 购买或申请SSL证书&#xff1a; - 根据网站类型和需求&#xff0c;选择合适的SSL证书&#xff1a;DV&#xff08;域名验证&#xff09;、OV&#xff08;组…

翻页电子图书制作小技巧分享给你

当今社会&#xff0c;二维码已经成为了信息传递的重要方式之一&#xff0c;其在电子商务、广告营销、活动推广等领域广泛应用。而如何将二维码巧妙地融入电子画册中&#xff0c;制作出高端、具有吸引力的作品&#xff0c;成为了许多设计师和营销人员关注的焦点 但是很多人却不知…

TCP协议核心一文搞懂<随手笔记>

1.简介 传输控制协议&#xff0c;是一种面向连接的、可靠的、基于IP的传输层协议。 TCP工作于传输层&#xff0c;IP在网络层&#xff0c;ARP在数据链路层 源端口和目的端口&#xff1a; 各占两个字节&#xff0c;这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个T…

华为sr-mpls policy配置案例

SR&#xff0d;MPLS POLICY在ensp上面做不了&#xff0c;这是官方上的配置

解压RPM包---rpm2cpiocpio的使用

RPM包括是使用cpio格式打包的&#xff0c;因此可以先转成cpio然后解压&#xff0c;如下所示&#xff1a; rpm2cpio xxx.rpm | cpio -div

【C++】项目级的组织结构与Cmake编译

文章目录 C项目级的组织结构与Cmake编译分文件编写程序C项目级的组织结构Cmake编译 C项目级的组织结构与Cmake编译 分文件编写程序 (1) 创建后缀名为.h的头文件max.h&#xff0c;并在其中写函数的声明 #include<iostream> using namespace std; int max(int a, int b)…

【Linux】文件目录及路径表示

1. Linux目录结构 在 Linux 系统中&#xff0c;有几个目录是比较重要的&#xff0c;平时需要注意不要误删除或者随意更改内部文件。 /etc&#xff1a; 这个是系统中的配置文件&#xff0c;如果更改了该目录下的某个文件可能会导致系统不能启动。 /bin, /sbin, /usr/bin, /usr…

前端JS必用工具【js-tool-big-box】,获取浏览器参数、cookie、localStorage的存取

这一小节&#xff0c;我们针对js-tool-big-box工具做一些使用讲解&#xff0c;主要获取浏览器参数、cookie、localStorage的存取方面的。 这些方法差不多每次项目中要么用不到&#xff0c;要么就自己写一份&#xff0c;轮子造的很重复啊&#xff0c;而且localStorage有时候要求…