Docker 的安装和镜像容器的基本操作

news2024/9/27 21:28:29

文章目录

  • 一、Docker 概述
    • 1、Docker的概念
    • 2、容器的优点
    • 3、容器与虚拟机的区别
    • 4、容器在内核中支持2种重要技术
    • 5、Docker核心概念
  • 二、Docker的安装
    • 1、docker的安装步骤
    • 2、实例操作:安装docker
  • 三、Docker 镜像操作
    • 1、搜索镜像
    • 2、获取镜像
    • 3、镜像加速下载
    • 4、查看镜像信息
    • 5、根据镜像的唯一标识 ID 号,获取镜像详细信息
    • 6、为本地的镜像添加新的标签
    • 7、删除镜像
    • 8、存出镜像:将镜像保存成为本地文件
    • 9、载入镜像:将镜像文件导入到镜像库中
    • 10、上传镜像
  • 四、Docker 容器操作
    • 1、容器创建:就是将镜像加载到容器的过程
    • 2、查看容器的运行状态
    • 3、启动容器
    • 4、创建并启动容器
    • 5、在后台持续运行 docker run 创建的容器
    • 6、终止容器运行
    • 7、容器的进入
    • 8 、从宿主机上将文件导入到容器中
    • 9、容器的导出与导入
    • 10、删除容器

一、Docker 概述

1、Docker的概念

• Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源

• Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”

• Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱

鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序

Docker的设计宗旨:Build,Ship and Run Any App,Anywhere,

即通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件,既可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统

2、容器的优点

容器化越来越受欢迎,因为容器是:

灵活:即使是最复杂的应用也可以集装箱化。
轻量级:容器利用并共享主机内核。
可互换:可以即时部署更新和升级。
便携式:可以在本地构建,部署到云,并在任何地方运行。
可扩展:可以增加并自动分发容器副本。
可堆叠:可以垂直和即时堆叠服务。

3、容器与虚拟机的区别

容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。

虚拟机运行的是一个完成的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
在这里插入图片描述

4、容器在内核中支持2种重要技术

docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。

5、Docker核心概念

1)镜像
Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。

通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。

2)容器
Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。

可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

3)仓库
Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用push命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。

Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 目录下。

二、Docker的安装

1、docker的安装步骤

目前 Docker 只能支持 64 位系统。
 
systemctl stop firewalld.service
setenforce 0
 
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
--------------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,
                它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
--------------------------------------------------------------------------------------------
 
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce
 
systemctl start docker.service
systemctl enable docker.service
 
#查看 docker 版本信息
docker version 

2、实例操作:安装docker

2.1 关闭防火墙
在这里插入图片描述
2.2 安装依赖包
在这里插入图片描述
2.3 设置阿里云镜像源并安装 Docker-CE并设置为开机自动启动(使用在线源安装)

在这里插入图片描述
在这里插入图片描述
2.4 查看 docker 版本信息
在这里插入图片描述

三、Docker 镜像操作

1、搜索镜像

格式:docker search 关键字
docker search nginx

在这里插入图片描述

2、获取镜像

格式:docker pull 仓库名称[:标签]
#如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签。
docker pull nginx

在这里插入图片描述

3、镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://1fam3t0i.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker

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

4、查看镜像信息

镜像下载后存放在 /var/lib/docker
4.1 查看下载的镜像文件信息

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

在这里插入图片描述
4.2 查看下载到本地的所有镜像

docker images
 
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 9 days ago 133MB
--------------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
---------------------------------------------------------------------------------------

在这里插入图片描述

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

格式:docker inspect 镜像ID号
docker inspect ae2feff98a0c

在这里插入图片描述

6、为本地的镜像添加新的标签

格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest nginx:web
 
docker images | grep nginx

在这里插入图片描述

7、删除镜像

格式:
docker rmi 仓库名称:标签  #当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号    #会彻底删除该镜像
 
注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
 
docker rmi nginx:web

在这里插入图片描述

8、存出镜像:将镜像保存成为本地文件

格式:docker save -o 存储文件名 存储的镜像
docker save -o nginx nginx:latest   #存出镜像命名为nginx存在当前目录下
ls -lh

在这里插入图片描述

9、载入镜像:将镜像文件导入到镜像库中

格式:
docker load < 存出的文件
或者
docker load -i 存出的文件
 
docker load < nginx

在这里插入图片描述

10、上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

docker tag nginx:web ly08/nginx:web #添加新的标签
docker login    #登录公共仓库
Username:
password:
docker push ly08/nginx:web  #上传镜像

在这里插入图片描述

四、Docker 容器操作

1、容器创建:就是将镜像加载到容器的过程

新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器

docker create命令能够基于镜像创建容器。

该命令执行的效果类似于docker run -d,即创建一个将在系统后台运行的容器。

但是与docker run -d不同的是,docker create创建的容器并未实际启动,还需要执行docker start命令或docker run命令以启动容器。

事实上,docker create命令常用于在启动容器之前进行必要的设置。

格式:docker create [选项] 镜像
常用选项:
-i:让容器的输入保持打开
-t:让 Docker 分配一个伪终端
 
docker create -it nginx:latest /bin/bash

注释:

-it就等于-i和-t,这两个参数的作用是,为该docker创建一个伪终端,这样就可以进入到容器的交互模式(也就是直接进入到容器里面)

后面的/bin/bash的作用是表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself,这个/bin/bash就表示启动容器后启动bash
在这里插入图片描述

2、查看容器的运行状态

docker ps -a    #-a 选项可以显示所有的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b0a7be0ff58 nginx:latest "/docker-entrypoint.…" 57 seconds ago Created inspiring_swanson
 
容器的ID号  加载的镜像 运行的程序 创建时间 当前的状态 端口映射 名称

在这里插入图片描述

3、启动容器

格式:docker start 容器的ID/名称
docker start 8b0a7be0ff58
docker ps -a

在这里插入图片描述

4、创建并启动容器

可以直接执行 docker run 命令, 等同于先执行 docker create 命令,再执行 docker start 命令。

注意:容器是一个与其中运行的 shell 命令共存亡的终端,命令运行容器运行, 命令结束容器退出。

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

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

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

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

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

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

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

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

在这里插入图片描述

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

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

docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
 
docker ps -a    #可以看出容器始终处于 UP,运行状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2592d3fad0fb centos:7 "/usr/bin/bash -c 'w…" 2 seconds ago Up 2 seconds peaceful_chatelet
 
docker run -itd --name test1 centos:7 /bin/bash   #给容器重命名,并以守护形式在后台运行

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

6、终止容器运行

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

stop: 停止容器,可以给容器一个等待时间,以防止数据的丢失。

kill: 立即强行停止一个容器(相当于linux命令 kill -9) ,不会给容器反应时间,可能会造成数据丢失

格式:docker stop 容器的ID/名称
docker stop 2592d3fad0fb
 
docker ps -a

在这里插入图片描述

7、容器的进入

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

格式:docker exec -it 容器ID/名称 /bin/bash
-i 选项表示让容器的输入保持打开;
-t 选项表示让 Docker 分配一个伪终端。
 
docker start 2592d3fad0fb   #进入容器前,确保容器正在运行
docker exec -it 2592d3fad0fb /bin/bash
ls
exit    #退出容器后,容器仍在运行
docker ps -a

在这里插入图片描述

8 、从宿主机上将文件导入到容器中

docker ps -a                                               #先获取需要导入到的容器ID,然后重新开一个终端
 
另一个终端上操作
echo "this is test file" >> 123.txt                   #创建测试文件
docker cp 123.txt cef59022a4dd:/opt                 #将测试文件导入到容器内后到容器内的/opt目录下查看

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

9、容器的导出与导入

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

#导出格式:docker export 容器ID/名称 > 文件名
docker export 2592d3fad0fb > centos7.tar
 
#导入格式:cat 文件名 | docker import – 镜像名称:标签
cat centos7.tar | docker import - centos7:test  #导入后会生成镜像,但不会创建容器

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

10、删除容器

格式: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 "docker rm "$1}' | bash  #批量删除所有容器
 
docker images | awk 'NR>=2{print "docker rmi "$3}' | bash    #批量删除镜像

10.1 删除容器和强制删除容器
在这里插入图片描述
在这里插入图片描述
10.2 批量停止和删除容器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

基础工业工程(易树平、郭伏)——第三草 工作研究

第三草 工作研究 第一节 工作研究概述 一、工作研究的对象 工作研究的对象是作业系统&#xff0c;这是一个由多个相互关联的因素所组成的有机整体&#xff0c;旨在实现预定的功能和目标。作业系统的目标表现为输出一定的“产品”或“服务”&#xff0c;主要由材料、设备、能…

超级简洁、彻底组件化的轻量级Android Kotlin Jetpack MVVM组件化框架

结构 特点&#xff1a; 彻底组件化&#xff0c;且更简洁&#xff0c;Module具有独立的Application、AndroidMinifast、资源文件等&#xff1b;Application和Library的切换更加快捷&#xff1b;超级简洁、且多功能的网络层封装&#xff0c;自带2级缓存&#xff0c;App端内嵌了日…

盛元广通高校实验室安全智能管理平台

实验室安全问题一直以来都是高校管理的重点&#xff0c;依据《高等学校实验室安全规范》相关要求&#xff0c;应教育相关部门以及应急管理部门的相关规定&#xff0c;关于安全工作的系列重要指示和部署&#xff0c;必须按照危险源管控分级管理体系对实验室进行分级分类管理&…

ebay、速卖通、ozon销量下滑怎么办?怎样可以提高转化率

单量不好&#xff0c;就开始焦虑&#xff0c;而真正需要了解为什么会出现销量下滑的原因&#xff0c;从不断更新自己的知识&#xff0c;提高自己的技能&#xff0c;如何提高自己的技能呢&#xff1f; 把所学到的知识学以致用&#xff0c;listing的评分&#xff0c;退货率&…

ESP32学习四-自定义分区表

1、简介 ESP32-WROOM-32集成了4MB SPI FLASH。对应的&#xff0c;也会对这4MB FLAHS进行分区处理。在编译esp32程序时&#xff0c;通过make menuconfig -> Partition Table可以设置三种分区。 工厂程序&#xff08;无OTA分区&#xff09; 工厂程序&#xff08;双OTA分…

自旋锁/读者写者问题

自旋锁 自旋锁的概念和理解 锁在处理需要申请加锁的线程的时候&#xff0c;一般有两种处理方法&#xff1a;一种是挂起等待&#xff0c;另外一种是自旋。自旋即轮询。 挂起等待&#xff1a; 当一个线程成功申请锁&#xff0c;并进入临界区后&#xff0c;其它线程在申请的时候…

【经验分享】硬件工程师需要知道的DFM可制造性设计

最近&#xff0c;有硬件工程师朋友找我讨论DFM&#xff0c;也就是可制造性设计。Design for Manufacturability。 什么是可制造性设计&#xff0c;看一张图很容易明白&#xff1a; 过大的PCB&#xff0c;无法上产线批量生产&#xff0c;极大的PCB面积浪费&#xff0c;自然是失…

Spring Batch 指南

SpringBatch 介绍 目前&#xff0c;Spring Batch是批处理框架界为数不多的优秀框架(Java语言开发)。 Spring Batch 是一个轻量级的、完善的批处理框架,旨在帮助企业建立健壮、高效的批处理应用。 Spring Batch是Spring的一个子项目,使用Java语言并基于Spring框架为基础开发,…

.Net 6.0 部署Linux+Nginx +PM2教程

今天带大家将本地.Net6.0项目部署到Linux系统中,其中有用到Nginx反向代理和PM2进程管理工具,希望本偏文章能对你有所帮助,成为你成功路上的垫脚石! 背景: 在.Net 5.0横空出世之后,.Net已经支持夸平台了,身为一名合格的码农,你敢说你不会用Linux? 哈哈哈开个玩笑,因为工作最近接…

Idea启动运行报错:Error:java: 无效的源发行版: 13

最近在做Springboot项目时&#xff0c;常常出现上述错误&#xff0c;小编也不知道怎么回事&#xff0c;到网上找了这个方面的解决办法&#xff0c;但是却发现根本解决不了&#xff0c;最终通过小编多次尝试&#xff0c;终于发现&#xff0c;为什么会报这个错误。(应该是Java版本…

基于广泛数据增强的新型白质束ONE-SHOT分割

文章目录 One-Shot Segmentation of Novel White Matter Tracts via Extensive Data Augmentation摘要方法One-Shot分割的广泛数据增强 实验结果 One-Shot Segmentation of Novel White Matter Tracts via Extensive Data Augmentation 摘要 探索了新WM束的One-Shot分割问题由…

Kubernetes 如何保障容器可用性?一文介绍探针的使用

有时候&#xff0c;应用因为无限循环或死锁而停止响应&#xff0c;为确保应用在这种情况下可以重新启动&#xff0c;需要有一种机制检查应用程序的运行状况&#xff0c;而不是依赖应用程序内部的检测。 K8s 主要提供了三种探针来针对这种机制&#xff1a; 存活探针&#xff1a…

Swift之深入解析内存安全

一、内存安全 一般来说&#xff0c;Swift 会阻止代码中的不安全行为。例如&#xff0c;Swift 会保证变量在被使用前已经初始化&#xff0c;在释放某变量后其内存也会变得不可访问&#xff0c;以及检查数组索引是否存在越界错误。Swift 还通过要求修改内存中位置的代码具有对该…

通达信缠论顶底分型选股公式(一笔优化版)

在前文《缠论底分型选股公式&#xff0c;处理了包含关系》中介绍了缠论底分型&#xff0c;并编写了选股公式。底分型条件比较容易满足&#xff0c;因此产生的信号比较多。有热心网友提出&#xff0c;可以用顶底分型构成一笔过滤信号。 缠论一笔的构成条件&#xff1a;两个相邻…

砷化镓,锑化铟的能带结构

目录 回顾 正课 1.锑化铟的能带结构 2.砷化镓的能带结构 3.混合晶体的能带结构 回顾 从结合力上看由共价键和离子键混合 化合物半导体从结构上来说具有闪锌矿结构 三五族半导体的能带结构&#xff1a; 1.导带结构 2.价带结构 3.禁带宽度 正课 能带结构的共同特征&#…

docker容器与网络模式|磁盘使用|内存使用|清理

docker容器与网络模式|磁盘使用|内存使用|清理 一 docker 网络模式二 docker的网络模式分类三 网络模式详解3.1host模式&#xff1a;3.2 container模式container模式操作 3.3 none模式3.4 brideg模式3.5 自定义网络 四 容器资源控制4.1 docker容器cpu压力测试4.2 设置CPU资源占…

SpringCloud 微服务随机掉线排查过程

一、背景 我们的业务共使用 11 台&#xff08;阿里云&#xff09;服务器&#xff0c;使用 SpringcloudAlibaba 构建微服务集群, 共计 60 个微服务, 全部注册在同一个 Nacos 集群。 流量转发路径&#xff1a;nginx -> spring-gateway -> 业务微服务。 使用的版本如下&a…

IGA_PLSM3D的理解1

文章目录 前言一、IgaTop3D_FAST.m给的参数二、Material properties 材料特性对Geom_Mod3D的理解 三、IGA准备对Pre_IGA3D的理解 输出1-----CtrPts&#xff1a; 输出2-----Ele&#xff1a; 输出3-----GauPts&#xff1a; 对Boun_Cond3D的理解 输出1-----DBoudary&#xff1a; 输…

Java入坑之类的派生与继承

一、继承 1.1继承的概念 Java中的继承&#xff1a;子类就是享有父类的属性和方法&#xff0c;并且还存在一定的属性和方法的扩展。 Subclass&#xff0c;从另一个类派生出的类&#xff0c;称为子类(派生类&#xff0c;扩展类等) Superclass&#xff0c;派生子类的类&#xff…

PC主流同步软件评测

因为一个要把超过13G的众多零散文件同步到webdav网盘的需求&#xff0c;将市面上一些知名的同步软件试用测试了一番&#xff0c;最终发现只有Syncovery满足需求 先把参与测试的同步软件列一下&#xff1a; GoodSync、FreeFileSync、微软SyncToy、KLS Backup、SecondCopy、Sma…