Docker容器基本管理

news2024/11/16 11:25:53

目录

一、概述

(一)为什么要用到容器

(二)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/名称

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

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

相关文章

代码+视频,R语言forestploter包优雅的绘制孟德尔随机化研究森林图

在既往文章中&#xff0c;我们对孟德尔随机化研究做了一个简单的介绍。我们可以发现&#xff0c;使用TwoSampleMR包做出来的森林图并不是很美观。今天我们使用R语言forestploter包优雅的绘制孟德尔随机化研究森林图。 使用TwoSampleMR包做出来的森林图是这样的 而很多SCI文章…

在linux、window环境搭建kafka环境

一、搭建环境前置准备 下载kafka的官网 http://kafka.apache.org/downloads根据自己的需求选择版本,安装包不区分linux和windows环境,这一个安装包均可部署。 源代码包含kafka的代码文件,使用scala编写的。 二、linux环境 1. 上传安装包 我下载的版本是kafka_2.12-3.6.1…

JOSEF约瑟 过电流继电器 JL15-1200/11 一开一闭 吊车起重机交直流可用

系列型号 JL15-/11: JL15-1.5/11电流继电器JL15-2.5/11电流继电器 JL15-5/11电流继电器JL15-10/11电流继电器 JL15-15/11电流继电器JL15-20/11电流继电器 JL15-30/11电流继电器JL15-40/11电流继电器 JL15-60/11电流继电器JL15-80/11电流继电器 JL15-100/11电流继电器JL1…

论文笔记(四十二)Diff-DOPE: Differentiable Deep Object Pose Estimation

Diff-DOPE: Differentiable Deep Object Pose Estimation 文章概括摘要I. 介绍II. 相关工作III. DIFF-DOPEIV. 实验结果A. 实施细节和性能B. 准确性C. 机器人-摄像机校准 V. 结论VI. 致谢 文章概括 作者&#xff1a;Jonathan Tremblay, Bowen Wen, Valts Blukis, Balakumar Su…

STM32标准库——(3)LED闪烁、LED流水灯、蜂鸣器

1.相关API 1.1 GPIOSpeed_TypeDef /** * brief Output Maximum frequency selection 最大频率选择*/typedef enum { GPIO_Speed_10MHz 1,GPIO_Speed_2MHz, GPIO_Speed_50MHz }GPIOSpeed_TypeDef;1.2 GPIOMode_TypeDef /** * brief Configuration Mode enumeration 配置…

C/C++ - Auto Reference

目录 auto Reference auto 当使用auto​​关键字声明变量时&#xff0c;C编译器会根据变量的初始化表达式推断出变量的类型。 自动类型推断&#xff1a;auto​​关键字用于自动推断变量的类型&#xff0c;使得变量的类型可以根据初始化表达式进行推导。 初始化表达式&#x…

2.依附弹窗(AttachListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7 基于基础的Popup对象实现的依附于某个控件的弹窗&#xff0c;弹窗可呈现数组对象&#xff0c;达到较好的选择交互效果。 1.布局 通过Border实现圆角边框轮廓&#xff0c;然后通过内部的ListView实现列表展示。…

二叉树中的深度搜索

力扣2331.计算布尔二叉树值 深度搜索&#xff1a;是要进入最下面 二叉树直接往递归上去想&#xff08;易写&#xff0c;不易想&#xff09; public boolean evaluateTree(TreeNode root) {if(root.leftnull||root.rightnull){return root.val0?false:true;} //先拿到左子树&…

E4 基于Mysql的游标定义和应用

一、实验目的: 熟练使用MySQL游标的定义和应用。 二、实验要求: 1、基本硬件配置:英特尔Pentium III 以上,大于4G内存&#xff1b; 2、软件要求:Mysql&#xff1b; 3、时间:1小时&#xff1b; 4、撰写实验报告并按时提交。 三、实验内容: 问题1&#xff1a;请写一个存储…

虚拟机打开之后,无法响应

文章目录 前言一、虚拟机无法响应的前因后果二、解决办法1.找到安装的虚拟机的位置2.将上面的带.lck 的文件删除3. 重新启动虚拟机 总结 前言 虚拟机一直用的好好的&#xff0c;突然打开后无法响应&#xff0c;在此记录下解决的过程。 一、虚拟机无法响应的前因后果 1、虚拟机…

php二次开发股票系统代码:腾讯股票数据接口地址、批量获取股票信息、转换为腾讯接口指定的股票格式

1、腾讯股票数据控制器 <?php namespace app\index\controller;use think\Model; use think\Db;const BASE_URL http://aaaaaa.aaaaa.com; //腾讯数据地址class TencentStocks extends Home { //里面具体的方法 }2、请求接口返回内容 function juhecurl($url, $params f…

1174:长整数排序(指针专题)

题目描述 长整数排序。输入n 然后输入n个位数不超过100位的大整数&#xff0c;输入的整数可能含有前导0。将这n个长整数排序后输出&#xff0c;输出不含前导0。int greater(char *s1, char *s2){若s1指向的整数大于s2指向的整数&#xff0c;返回一个正整数;若s1指向的整数小于s…

baijia靶场漏洞挖掘

打开靶场http://localhost:83/baijiacms/ 1、任意用户注册 点击个人中心>用户登录>免费注册&#xff0c;注入账号密码&#xff0c;抓包 批量注册 这个是已注册的用户返回。 这个是未注册的用户&#xff0c;通过批量注册可以探测到系统已有用户 2、XSS漏洞 打开我的地址…

【linux】-telnet服务安装

1. 说明 telnet 分为 &#xff1a;telnet 服务端 和 telnet 客户端 本文只演示安装 telnet服务端 2. 安装telnet服务端、以及守护服务xinetd 2.1 检测telnet-server的rpm包是否安装 rpm -qa telnet-server 2.2 若未安装&#xff0c;则安装telnet-server&#xff0…

Oracal学习

Oracle是什么 是甲骨文公司的一款支持事务且吞吐量高的数据库特点&#xff1a; &#xff08;1&#xff09;支持多用户、大事务量的事务处理 &#xff08;2&#xff09;数据安全性和完整性控制 &#xff08;3&#xff09;支持分布式数据处理 &#xff08;4&#xff09;可移植性…

WEB安全渗透测试-pikachuDVWAsqli-labsupload-labsxss-labs靶场搭建(超详细)

目录 phpstudy下载安装 一&#xff0c;pikachu靶场搭建 1.下载pikachu 2.新建一个名为pikachu的数据库 3.pikachu数据库配置 ​编辑 4.创建网站 ​编辑 5.打开网站 6.初始化安装 二&#xff0c;DVWA靶场搭建 1.下载DVWA 2.创建一个名为dvwa的数据库 3.DVWA数据库配…

对接钉钉机器人发送钉钉通知

实现效果 话不多说 直接上代码 static void sendMsg(String msg) {try {String content "{\"msgtype\": \"text\",\"text\": {\"content\": \"" msg "\"}}";HttpUtil.simplePost(content, getDingU…

第3章 接口和API设计

第15条&#xff1a;用前缀避免命名空间冲突 OC没有其他语言那种内置的命名空间机制。因此&#xff0c;我们在起名时要设法避免潜在的命名冲突&#xff0c;否则很容易就重名了。若是发生重名冲突&#xff0c;那么应用程序相应的链接过程就会出错。例如&#xff1a; 错误原因在…

【并发编程】Java内存模型

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳重求进&#xff0c;晒太阳 这一章进一步深入学习共享变量在多线程间的【可见性】问题&#xff0c;与多条指令执行时的【有序性】问题 Java内存模型 JMM即Java Memory Mod…

STM32实现软件IIC协议操作OLED显示屏(1)

时间记录&#xff1a;2024/1/25 一、IIC协议介绍 &#xff08;1&#xff09;协议介绍 IIC&#xff08;又称I2C&#xff0c;Inter-Integrated Circuit&#xff09;&#xff0c;即集成电路总线&#xff0c;是一种两线式串行总线&#xff0c;由PHILIPS公司开发&#xff0c;用…