Docker容器基本管理

目录

一、概述

(一)为什么要用到容器

(二)docker概念

1.镜像

2.容器

3.仓库

(三)Docker与虚拟机的区别

(四)Linux namespace的六大类型

二、安装docker容器引擎

(一)环境准备

(二)设置阿里云镜像源

(三)安装 Docker-CE并设置为开机自动启动

(四)查看 docker 版本信息

(五)docker 信息查看

三、Docker 镜像操作

(一)搜索镜像

(二)获取镜像

(三)镜像加速下载

(四)查看下载到本地的所有镜像

(五)获取镜像详细信息

(六)为本地的镜像添加新的标签

(七)删除镜像

(八)存出镜像

(九)载入镜像

(十)上传镜像

四、Docker容器操作

(一)容器创建

1.创建

2.查看容器的运行状态

3.启动容器

(二)创建和启动容器

(三)终止容器运行

(四)容器的进入

(五)复制

1.从主机复制到容器

2.从容器复制文件到主机

(六)容器的导出与导入       

1.导出

2.导入

(七)删除容器


一、概述

(一)为什么要用到容器

  • 容器可以屏蔽底层操作系统的差异性,让业务应用不管在哪里都是使用容器的环境运行,从而保证开发测试环境与生产环境的一致性
  • 容器部署起来非常便捷和迅速,缩短开发测试部署的周期时间

(二)docker概念

       docker是用go语言开发并开源的容器引擎,用来运行容器里的应用。docker也是可用来管理容器和镜像的一种工具。

1.镜像

          是创建容器的基础,是一个只读的模板文件,里面包含运行容器中的应用程序所需要的所有内容(应用程序文件、配置文件、运行库文件、依赖包等)

2.容器

       是用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器之间默认是相互隔离的

3.仓库

      是用来集中保存镜像的地方,有公有仓库和私有仓库之分

(三)Docker与虚拟机的区别

(四)Linux namespace的六大类型

名称查看位置支持版本说明
cgroup/proc/[pid]/ns/cgroupsince Linux 4.6

控制进程使用资源

(限制内存最大使用量)

IPC/proc/[pid]/ns/ipcsince Linux 3.0隔离进程间通信
Mount/proc/[pid]/ns/mntsince Linux 3.8使得各进程仿佛又各自的文件系统
Network/proc/[pid]/ns/netsince Linux 3.0进程可以有独立的网络空间
PID/proc/[pid]/ns/pidsince Linux 3.8隔离pid
USER/proc/[pid]/ns/usersince Linux 3.8隔离用户

UTS

(UNIX Time-Sharing)

/proc/[pid]/ns/utssince Linux 3.0隔离nodename,hostname

二、安装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并设置为开机自动启动

#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io

systemctl start docker.service
systemctl enable docker.service 

(四)查看 docker 版本信息

#查看 docker 版本信息
docker version

(五)docker 信息查看

#docker 信息查看
docker info 

三、Docker 镜像操作

(一)搜索镜像

#搜索镜像
格式:docker search 关键字
docker search nginx

(二)获取镜像

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

(三)镜像加速下载

浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 获取镜像加速器配置
 
mkdir -p /etc/docker
 
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://pbt7lb0q.mirror.aliyuncs.com"]
}
EOF
 
systemctl daemon-reload
systemctl restart docker

(四)查看下载到本地的所有镜像

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

(五)获取镜像详细信息

格式:
docker inspect 镜像ID号
 
●lowerdir是镜像层,目录或者文件是只读的,其实就是rootfs,image layer可以分很多层,所以对应的lowerdir是可以有多个目录
●upperdir是在lowerdir之上的容器层,这层是可读可写的,在启动一个容器时候会进行创建,所有的对容器数据更改都发生在这里层
●MergedDir是表现层,是容器的挂载点
●WorkDir 工作目录

(六)为本地的镜像添加新的标签

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

(七)删除镜像

格式:
docker rmi 仓库名称:标签	[-f]		#当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号					#会彻底删除该镜像

docker rmi 镜像ID号 -f               #多个相同ID号时,需要强制删除

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

(八)存出镜像

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

将镜像保存成为本地文件

(九)载入镜像

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

(十)上传镜像

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。https://hub.docker.com
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。
 
docker tag nginx:latest soscscs/nginx:web		#添加新的标签时必须在前面加上自己的dockerhub的username
docker login								    #登录公共仓库
Username:yy
password:123
docker push soscscs/nginx:web					#上传镜像

四、Docker容器操作

(一)容器创建

1.创建

  • 将镜像加载到容器的过程
格式:
docker create [选项] 镜像
 
常用选项:
-i:让容器开启标准输入接受用户输入命令
-t:让 Docker 分配一个伪终端 tty
-it :合起来实现和容器交互的作用,运行一个交互式会话 shell 

2.查看容器的运行状态

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

3.启动容器

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

(二)创建和启动容器

       可以直接执行 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 -d [-i -t --name --rm]  镜像名:标签  [容器启动命令]

(三)终止容器运行

docker stop 容器名|容器ID        #发送 SIGTERM 信号,默认等待10s
或
docker kill 容器名|容器ID        #发送 SIGKILL 信号,强制停止容器

(四)容器的进入

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

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

(五)复制

1.从主机复制到容器

从主机复制到容器
docker cp 宿主机文件路径  容器名|容器ID:绝对路径

2.从容器复制文件到主机

从容器复制到主机
docker cp 容器名|容器ID:绝对路径  宿主机文件路径

(六)容器的导出与导入       

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

1.导出

导出格式
docker export 容器ID/名称 > 文件名
或
docker export -o 容器模板文件 容器名|容器ID 

2.导入

导入格式
cat 文件名 | docker import – 镜像名称:标签
或
docker import 容器模板文件 -- 镜像名:标签 

(七)删除容器

格式:
docker rm [-f] 容器ID/名称

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

光耦驱动继电器电路图大全

光耦驱动继电器电路图&#xff08;一&#xff09; 注&#xff1a; 1U1-1脚可接12V&#xff0c;也可接5V&#xff0c;1U1导通&#xff0c;1Q1导通&#xff0c;1Q1-30V&#xff0c;线圈两端电压为11.7V. 1U1-1脚不接或接地&#xff0c;1U1不通&#xff0c;1Q1截止&#xff0c;1…

Federated Optimization in Heterogeneous Networks —— Fedprox算法

Federated Optimization in Heterogeneous Networks 1. 论文信息 论文题目: Federated Optimization in Heterogeneous Networks Fedprox算法&#xff0c;plato小项目跑通并理解作者&#xff1a;Tian Li, Anit Kumar Sahu, Manzil Zaheer, Maziar Sanjabi, Ameet Talwalkar, …

使用阿里云的oss对象存储服务实现图片上传(前端vue后端java详解)

一&#xff1a;前期准备&#xff1a; 1.1&#xff1a;注册阿里云账号&#xff0c;开启对象存储oss功能&#xff0c;创建一个bucket&#xff08;百度教程多的是&#xff0c;跟着创建一个就行&#xff0c;创建时注意存储类型是标准存储&#xff0c;读写权限是公共读&#xff09;…

HNU-编译原理-甘晴void学习感悟

前言 熬过煎熬的考试周、复习以及更加煎熬的等成绩&#xff0c;查到成绩的那一刻&#xff0c;心里还是挺开心的。 虽然我没有完全学懂这门课程&#xff0c;但我还是兢兢业业地通过了课程的考试&#xff0c;拿到了这门课程的认可。 记录一下自己对编译原理的学习感悟&#xf…

python使用pyinstaller 快速打包成一个exe程序方案

使用PyInstaller是一种将Python脚本打包成独立可执行文件&#xff08;.exe&#xff09;的方便方法。 以下是一个简单的步骤&#xff0c;以及相关的说明和代码示例&#xff1a; 1.安装PyInstaller: pip install pyinstaller2.在终端中导航到你的Python脚本所在的目录: cd pat…

day32_CSS

今日内容 0 复习昨日 1 css属性 2 盒子模型 【重点】 3 css扩展属性 4 Bootstrap【重点】 0 复习昨日 1 表格标签 table表格里面有tr , (行)行内有单元格,td行合并,rowspan列合并,colspan 2 写出input标签type属性的值 文本框 text 密码框 password 单选框 radio 复选框 checkb…

在线教育系统开发:构建现代化学习平台

随着科技的迅速发展&#xff0c;在线教育系统在教育领域扮演着越来越重要的角色。本文将深入探讨在线教育系统的开发过程&#xff0c;涉及关键技术和代码实现。 技术选型 在开始开发之前&#xff0c;我们首先需要选择适合在线教育系统的技术栈。以下是一些常见的技术选项&am…

使用宝塔面板部署Nuxt3项目到云服务器上

1、前期准备 1&#xff09;准备一台云服务器2&#xff09; 在云服务器上安装宝塔面板软件应用&#xff0c;安装步骤可参考博客:使用宝塔面板部署Node.jsMysql服务和Vue3-Admin项目到云服务器上 2、进行Nuxt3项目的部署 1)、本地执行打包命令&#xff0c;输出以下两个文件目录…

Android系统开发之TimeZoneDetectorService浅析--上

一&#xff1a;问题描述&#xff1a; 客户有一个关闭通话功能的需求&#xff0c;根据MTK的配置方法关闭了大概8个宏开关后&#xff0c;实现通话功能&#xff0c;但是导致插好sim卡开机后&#xff0c;时间和时区不能更新的问题。 二&#xff1a;问题分析&#xff1a; (1).MTK…

AF700 NHS 酯,AF 700 Succinimidyl Ester,一种明亮且具有光稳定性的近红外染料

AF700 NHS 酯&#xff0c;AF 700 Succinimidyl Ester&#xff0c;一种明亮且具有光稳定性的近红外染料&#xff0c;AF700-NHS-酯&#xff0c;具有水溶性和 pH 值不敏感性 您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;AF700 NHS 酯&#xff0c;AF 700 Succinimid…

深度视觉目标跟踪进展综述-论文笔记

中科大学报上的一篇综述&#xff0c;总结得很详细&#xff0c;整理了相关笔记。 1 引言 目标跟踪旨在基于初始帧中指定的感兴趣目标( 一般用矩形框表示) &#xff0c;在后续帧中对该目标进行持续的定位。 基于深度学习的跟踪算法&#xff0c;采用的框架包括相关滤波器、分类…

pcl+vtk(十四)vtkCamera相机简单介绍

一、vtkCamera相机 人眼相当于三维场景下的相机&#xff0c; VTK是用vtkCamera类来表示三维渲染场景中的相机。vtkCamera负责把三维场景投影到二维平面&#xff0c;如屏幕、图像等。 相机位置&#xff1a;即相机所在的位置&#xff0c;用方法vtkCamera::SetPosition()设置。 相…

力扣hot100 腐烂的橘子 BFS 矢量数组 满注释版

Problem: 994. 腐烂的橘子 文章目录 思路复杂度&#x1f49d; Code 思路 &#x1f468;‍&#x1f3eb; 参考 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( n ) O(n) O(n) &#x1f49d; Code class Solution {int[] dx new int[] { 0, 1, 0, -1 };// 行 矢…

如何快速搭建实用的爬虫管理平台

目录 一、前言 二、选择合适的爬虫框架 三、搭建数据库 步骤1 步骤2 步骤3 四、搭建Web服务器 步骤1 步骤2 步骤3 步骤4 五、管理爬虫 六、总结 一、前言 爬虫是互联网数据采集的关键工具&#xff0c;但是随着数据量的增加和需求的多样化&#xff0c;手动运行和管…

SpringMVC-HttpMessageConverter 报文信息转化器

文章目录 HttpMessageConverter一、概念二、RequestBody三、RequestEntity四、 ResponseBody1.返回JSON格式的字符串 五、RestController六、ResponseEntity HttpMessageConverter 一、概念 报文信息转化器&#xff0c;将请求报文转化为Java对象&#xff0c;或将Java对象转化…

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解

【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解 提示:最近开始在【医学图像分割】方面进行研究,记录相关知识点,分享学习中遇到的问题已经解决的方法。 文章目录 【图像分割】【深度学习】Windows10下UNet代码Pytorch实现与源码讲解前言UNet模型运行环境搭…

解决 Required Integer parameter ‘uid‘ is not present

1.原因分析 后端没接收到uid可能是前端没传递uid也可能是前端传递了uid&#xff0c;但是传递方式与后端接收方式不匹配&#xff0c;导致没接收到更大的可能是因为后端请求方式错了。比如&#xff1a; 2.解决方案 先确定前端传参方式与后端请求方式是匹配的后端get请求的话…

动态库和静态库的理解 Linux

其实库文件里面的内容就是函数的实现方法&#xff0c;向我们包含的头文件其实就是函数的生命&#xff0c;而我们编译链接程序时会自动加载库文件&#xff0c;最终形成可执行程序。其实我们在编译链接时不仅仅会将文件的库文件加载进来&#xff0c;其实头文件也是需要加载进来的…

C++输入输出流

输入/输出流类&#xff1a;iostream---------i input&#xff08;输入&#xff09; o output&#xff08;输出&#xff09; stream&#xff1a;流 iostream&#xff1a; istream类&#xff1a;输入流类-------------cin&#xff1a;输入流类的对象 ostre…

企业级大数据安全架构(六)数据授权和审计管理

作者&#xff1a;楼高 本节详细介绍企业级大数据架构中的第六部分&#xff0c;数据授权和审计管理 1.Ranger简介 Apache Ranger是一款被设计成全面掌管Hadoop生态系统的数据安全管理框架&#xff0c;为Hadoop生态系统众多组件提供一个统一的数据授权和管理界面&#xff0c; 管…