docker基本管理和相关概念

1、docker是什么?

docker是开源的应用容器引擎。基于go语言开发的,运行在Linux系统当中开源轻量级的“虚拟机”。
docker可以在一台主机上轻松的为任何应用创建一个轻量级的,可移植的,自给自足的容器。
docker的宿主机是Linux系统。集装箱可以理解为相互隔离的容器(组件:应用APP),每个容器都是一个独立的应用程序。

docker只能支持64位系统。

2、docker的设计宗旨:build、ship and run any app、anywhere

build: 封装好的程序,只更部罢即可使用。一次封装
run any app: 一次封装之后的应用程序,可以在任意环境运行
anywhere: 任意宿主机

一次封装,到处运行、封装、发布、部罢、运行,维护、运行、销毁,可以一整套的方式管理应用程序的生命周期。

3、docker为什么受欢迎???

1、灵活,再复杂的应用都可以实现容器化。
2、轻量级:小型的,不完整的,最小化封装的程序,与宿主机共享内核。
3、可互换:可以随时的升级更新。
4、便携式:可以本地构建,在平台上也可以实现部署,任何地方运行。
5、可扩展: 自动分发容器副本。
6、可堆叠:在一个宿主机上可以创建不同版本的同一容器,也可以是多个相同版本的同一容器。

namespace(系统资源的资源隔离)的六项隔离措施!

linux的命名空间namespace,是一种内核特性,运行将一组的系统资源隔离,在一个命名空间中的进程在系统当中可以拥有独立的资源。

系统调用参数隔离内容说明
UTS(命名空间)CLONE_NEWUTS主机和域名在UTS这个命名空间当中创建进程,进程空间可以看到自己的主机名和域名,与其他进程分隔开。内容。在IPC这个命名空间之中,进行可以拥有独立的进程间通信资源。
IPCCLONE_NEWIPC信号量,消息队列,共享
PIDCLONE_NEWPIDPID号每个进程都有自己独立的进程号空间
networkCLONE_NEWNET网络设备,网络栈,    及网络端口每个进程都有一个自己独立的网络资源,端口号。
mountCLONE_NEWNS挂载点在mount这个命名空间之中,每个进程或者设备都有自己的文件系统挂载点,互相之间互不干扰。
userCLONE_NEWUSER用户和用户组
基于这六个隔离项,实现了容器和容器之间,以及容器和宿主机之间的贷源隔离。

doucker的核心组件:

镜像

镜像:是doceker的基础,最小单位。类似于虚拟机的ios文件,一个镜像就是一个可执行的包,包里面包含了运行这个程序的所有内容(代码,配置文件,环境变量)
doceker镜像也是一个压缩包,不是有一个解压的文件,是一个环境部署的脚本,甚至包含了完整的系统操作。

容器

容器: docker的容器就是基于镜像运行起来的实例,可以启动,停止,删除。每一个容器都是相互隔离的,互不相见。

仓库

仓库:保存镜像,所有的镜像都是从仓库当中拉去的,可以有公有仓库,私有仓库镜像都是从仓库中拉取,镜像也保存在仓库之中。可以下载到了本地:镜像 容器 日志 /var/lib/docker 宿主机。

doecker与虚拟机之间的区别:

特性docker虚拟机
启动速度秒级分钟级
计算能力的损耗几乎无     损耗50%
性能接近原生系统弱于原生系统
系统支持量上千个根据硬件系统来看
隔离性资源隔离完全隔离
安全性

创建docker

yum -y install yum-utils device-mapper-persistent-data lvm2

yum-utils: yum-config-manager工具,可以远程自定义获取yum源

device-mapper-persistent-data lvm2

device-mapper 1、进行逻辑卷管理的通用设备的映射机制                 2、lvm2

获取docker源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

下载docker

yum -y install docker-ce-cli docker-ce contarnerd.io

docker-ce-cli 提供docker的命令行工具
contarnerd.io 负载管理容器的生命周期,创建,运行,停止,继续 销毁。
docker-ce:docker的社区版,面向开发者,小型团队和个人使用。免费 

启动docker服务

systemctl restart docker.service

查看docker信息

docker info

Storage Driver: overlay2
docker使用的文件系统驱动。

查看正在运行的容器

docker ps 


查看所有的容器,包括运行和没有运行的

docker ps -a 

搜索库中包

docker search nginx
-------------------------------------------------------------------------------------------
NAME   	    DESCRIPTION 	STARS 		OFFICAL 	AUTOMATED
镜像名称	    描述信息    	    点赞数量	    官方镜像	    是否自动化构建
-------------------------------------------------------------------------------------------

下载库中包

docker pull nginx:X 下载 X--版本号

例:
[root@localhost ~]# docker pull nginx:1.22.0
1.22.0: Pulling from library/nginx
bd159e379b3b: Pull complete 
265da2307f4a: Pull complete 
9f5a323076dc: Pull complete 
1cb127bd9321: Pull complete 
20d83d630f2b: Pull complete 
e0c68760750a: Pull complete 
Digest: sha256:f0d28f2047853cbc10732d6eaa1b57f1f4db9b017679b9fd7966b6a2f9ccc2d1
Status: Downloaded newer image for nginx:1.22.0
docker.io/library/nginx:1.22.0
[root@localhost ~]# 

 查看镜像

docker images     查看镜像
-------------------------------------------------------------------------------------------
REPOSITORY 	    TAG 	IMAGE ID 		CREATED 		SIZE
镜像所属的查看	标签    镜像的唯一标识   镜像创建时间      镜像大小
-------------------------------------------------------------------------------------------

查看镜像详细信息

docker inspect 镜像id

 例

修改标签

docker tag 镜像名:旧标签 镜像名:新标签

删除镜像

一个镜像有多个标签,删除时,只是删除标签,只剩最后一个,删除的就是镜像本身

镜像被容器使用,先停容器,再删容器,再删镜像

docker rmi 镜像名:标签 或 IMAGE ID

导出镜像

docker save -o 指定路径/xxx.tar 镜像名:标签

导入镜像

docker load -i 指定路径/xxx.tar

上传镜像到仓库

仓库登录网站:https://hub.docker.com/   (站点要科学上网)

打标签
docker tag 镜像名:标签 网站用户名/镜像名:新标签

登录
docker login
出现Login Succeeded 即为成功

上传镜像到库
docker push 网站用户名/镜像名:新标签

docker

创建容器

docker create -it 镜像名:标签 /bin/bash

启动容器

docker start (CONTAINER ID)

进入容器

docker exec -it (NAMES或CONTAINER ID) /bin/bash

-i:让容器开启标准输入,接受用户的输入命令
-t: 给这个容器分配一个终端,这是一个虚拟的伪终端
-it:形成一个宿主机和容器之间形成一个可以交互shell命令行。

没有镜像直接启动docker

docker run -itd --name 容器名 镜像名:标签 /bin/bash

-it 形成交互式会话
-d:可以让创建的容器以守护的进程在后台运行,容器所运行的程序不会结束。
--name 给容器命名
/bin/bash 后台运行 


1、没有镜像能不能直接run???
        没有镜像会自动拉取下载
2、运行的程序是什么???
-d 结合,给容器持续运行的命令,后台没有指令,容器没有可运行的程序,将会直接退出。

将容器内的文件复制到linux本地

docker cp 容器名:/复制文件 linux存放路径

docker cp test1:/etc/nginx/nginx.conf /opt/

将linux本地的文件复制到容器内

docker cp linux文件路径 id或容器名:指定存放路径

docker cp /opt/kgc 7c49b2dcd570:/

删除容器

docker rm CONTAINER ID 或 NAMES


docker rm 990846a57d11
docker rm test1

导出容器

docker export -o xxx.tar 容器名
导出的容器还是一个镜像,必须要run create 才能成为容器

docker export -o test1.tar test11

导入容器

docker import xxx.tar -- 镜像名:标签
容器包 xxx.tar
导出的容器还是一个镜像,必须要run create 才能成为容器
已经配置好的导出的容器镜像,可以直接使用(我们都是用的开发已经设置,配置好的容器镜像)


docker import test1.tar -- daoru:9

docker 的特性:

即使在创建过程中报错,容器还是会创建,但容器不可用
导入镜像,或者导入容器镜像,如果和已有标签重复

批量删除后台停止的东西

docker rm $(docker ps -a -q)

批量停止的后台容器

docker ps -a | awk 'NR>=2{print "docker stop " $1}' | bash

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

总结

docker是一个轻量级的虚拟机,宿主机是Linux

docker的核心:镜像、容器、仓库

docker的命令:

docker基本命令:
docker search
#搜索
docker pull nginx:1.22.0
#获取镜像
docker images
#查看镜像
docker rmi -f
#强制删除镜像
docker tag nginx:1.22.0(在镜像中已有标签) nginx:zyg(给他新的标签)相当于硬连接(复制了源镜像)
#给不同的镜像打上不同的标签
 
导入和导出镜像:
docker save -0 /opt/nginx.tar(一般用xxx.tar) nginx:1.22.0(这个镜像要已经存在)
#导处镜像
docker load -i xxx.tar
#导入镜像
 
上传镜像:
docker push jqmnzyg/nginx:zyg
#jqmzyg:dockerup的用户名
#nginx:zyg是镜像名称和标签
 
容器:
有镜像才有容器
容器都是基于镜像创建的
-i
-t
-d
其中-i和-t和-d一般一起使用
-itd:表示后台运行指定程序,而且创建一个交互式的shell.用户输入操作命令
docker run -itd 镜像名称 --name 容器名称 /bin/bash
#如果容器中没有可执行的命令,容器创建完成之后将会立刻退出
docker exec -it 容器名/容器ID
 
查看正在运行的容器:
docker ps
#只显示正在运行的容器
docker ps-a
#显示所有容器,包括没有在运行的容器
 
导出容器:
docker export -o 导出名称.tar 容器名/容器id
导入容器:
docker import 导入名称.tar --容器名:标签名(标签名尽量不要重复)
 
复制文件出入容器:
复制文件到本地:
docker cp 容器名/容器id:/etc/nginx/nginx.conf /opt/
复制本地文件到容器:
docker cp /opt/123.txt 容器名/容器id:/etc/nginx/nginx.conf
 
删除容器:
docker rm -f
#强制删除容器
docker rm
#删除容器
 
停止容器:
docker stop
#停止容器

导出的容器还是一个镜像。必须要运行起来(run create)才能成为容器

已经配置好的导出容器镜像,可以直接使用(我们都是用的开发已经设置,配置好的进行)

docker的特性:即使在创建过程中报错,容器还是会被创建,但是这个容器不可用

导入镜像或者导入容器镜像。如果和已有标签重复,导入的镜像或者容器镜像。

TAG这一项就会变成<none>。标签重复的镜像或者容器镜像使用docker ps或者ps -a是查看不到的,可以使用docker images查看。

附加题

删除了在运行的容器的镜像,对容器会有影响吗?
在Docker中,容器和镜像是两个不同的概念。

镜像是一个静态的文件,包含了用于创建容器的文件系统和配置信息。

容器则是在镜像的基础上运行起来的实例。

1、 如果你删除了正在运行的容器的镜像,对于已经运行的容器通常不会有直接的影响

2、 因为容器是在镜像的基础上创建的实例并且运行的实例是独立于镜像的。

3、 删除镜像不会影响已经运行的容器的文件系统或运行状态。

但是需要注意以下几点:

新容器的创建: 如果你删除了一个镜像,以后如果需要再次创建一个相同的容器,就需要重新拉取该镜像或者使用其他已有的镜像。如果没有本地缓存,Docker 将会从远程仓库重新下载镜像。

基于文件系统的操作: 如果运行的容器对文件系统进行了修改,并且你删除了相应的镜像,那么这些修改可能会丢失。因为容器运行时的文件系统实际上是基于镜像的,如果没有了镜像,就无法重新创建一个一模一样的容器。

总之,正在运行的容器的镜像通常不会直接影响正在运行的容器,但可能会影响将来创建新容器的过程。

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

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

相关文章

2024年江苏省职业院校技能大赛 信息安全管理与评估 第二阶段教师组 (样卷)

2024年江苏省职业院校技能大赛 信息安全管理与评估 第二阶段教师组 (样卷) 项目竞赛样题 本文件为信息安全管理与评估项目竞赛-第二阶段样题&#xff0c;内容包括&#xff1a;网络安全事件响应、数字取证调查、应用程序安全。 本次比赛时间为180分钟。 介绍 GeekSec专注技能竞…

visual Studio MFC 平台实现拉普拉斯和拉普拉斯与直方图均衡化与中值滤波相结合实现比较

拉普拉斯变换的原理与应用 本文使用visual Studio MFC 平台实现图像增强中的拉普拉斯变换&#xff0c;同时拉普拉斯一般不会单独使用&#xff0c;与其他平滑操作相结合&#xff0c;本文使用了拉普拉斯与直方图均衡化以及与中值滤波相结合&#xff0c;也对三种方式进行了对比 关…

MIT6S081-Lab2总结

大家好&#xff0c;我叫徐锦桐&#xff0c;个人博客地址为www.xujintong.com&#xff0c;github地址为https://github.com/xjintong。平时记录一下学习计算机过程中获取的知识&#xff0c;还有日常折腾的经验&#xff0c;欢迎大家访问。 Lab2就是了解一下xv6的系统调用流程&…

Python 进阶(十三):JSON 序列化和反序列化(json 模块)

大家好&#xff0c;我是水滴~~ 本篇文章主要介绍json模块的功能&#xff0c;包括将Python对象序列化到文件、将Python对象序列化为字符串、序列化时类型的对照表、将文件中JSON数据反序列化为Python对象&#xff0c;将JSON字符串反序列化为Python对象、反序列化时类型的对照表…

Kafka使用指南

Kafka简介架构设计Kafka的架构设计关键概念Kafka的架构设计关键机制 Partition介绍Partition工作机制 应用场景ACK机制介绍ACK机制原理ACK机制对性能的影响ACK控制粒度Kafka分区数对集群性能影响调整分区优化集群性能拓展Kafka数据全局有序 Kafka简介 Kafka是由Apache软件基金…

Spring Boot学习随笔-SpringBoot的引言,回顾传统SSM开发

学习视频&#xff1a;【编程不良人】2021年SpringBoot最新最全教程 第一章、传统SSM开发回顾以及问题 Spring SpringMVC Mybatis SSM 实现一个简单功能 员工添加、查询… SSM项目简单实现 项目 需求分析 —>概要设计 —>&#xff08;库表设计&#xff09; —> 详细…

Linux进程解析(冯诺依曼体系结构,操作系统,进程初步解析)

冯诺依曼体系结构&#xff1a; 我们常见的计算机&#xff0c;如笔记本。我们常见的计算机&#xff0c;服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是有一个个的硬件组件组成&#xff1a; 中央处理器(CPU)&am…

MIT6.5840-2023-Lab1: MapReduce

前置知识 MapReduce&#xff1a;Master 将一个 Map 任务或 Reduce 任务分配给一个空闲的 worker。 Map阶段&#xff1a;被分配了 map 任务的 worker 程序读取相关的输入数据片段&#xff0c;生成并输出中间 k/v 对&#xff0c;并缓存在内存中。 Reduce阶段&#xff1a;所有 ma…

Linux socket编程(12):Unix套接字之socketpair、sendmsg和recvmsg详解

在上一篇文章Unix套接字编程及通信例子中&#xff0c;我们对Unix套接字编程有一个基本的了解。但在Unix套接字编程的领域中&#xff0c;有一组特殊而强大的工具&#xff1a;socketpair、sendmsg 和 recvmsg&#xff0c;它们为实现本地进程间通信提供了便捷的方式。 文章目录 1 …

python二维数组创建赋值问题:更改单个值却更改了所有项的值

test_list [] dic1 {} test_list [dic1 for _ in range(3)] ll [1, 2, 3]for i in range(3):test_list[i][value] ll[i]print(test_list)运行结果&#xff1a;每次赋值都更改了所有项 原因&#xff1a;python的二位数据创建方式就是这样&#xff0c;官方文档中有描述Wha…

大话数据结构-查找-线性索引查找

注&#xff1a;本文同步发布于稀土掘金。 4 线性索引查找 4.1 概述 索引就是把一个关键字与它对应的记录相关联的过程&#xff0c;一个索引由若干个索引项构成&#xff0c;每个索引项至少应包含关键字和其对应的记录在存储器中的位置等信息。 索引按照结构可分为线性索引、树…

【SpringBoot】在SpringBoot中配置序列化的Redis

文章目录 前言展示包结构在SpringBoot中配置Redis测试总结 前言 在使用Java操作Redis时&#xff0c;如果不对Redis进行序列化操作&#xff0c;可能会导致存储的key和value与原来的数据不一致的问题 本文也借此机会来详细讲解一下SpringBoot中配置序列化Redis的步骤 展示包结构 …

AI助力智慧农业,基于YOLOv7【tiny/yolov7/yolov7x】开发构建不同参数量级农田场景下庄稼作物、杂草智能检测识别系统

智慧农业随着数字化信息化浪潮的演变有了新的定义&#xff0c;在前面的系列博文中&#xff0c;我们从一些现实世界里面的所见所想所感进行了很多对应的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《自建数据集&#xff0c;基于YOLOv7开发构建农田场景下杂草…

绘图 Seaborn 10个示例

绘图 Seaborn 是什么安装使用显示中文及负号散点图箱线图小提琴图堆叠柱状图分面绘图分类散点图热力图成对关系图线图直方图 是什么 Seaborn 是一个Python数据可视化库&#xff0c;它基于Matplotlib。Seaborn提供了高级的绘图接口&#xff0c;可以用来绘制各种统计图形&#xf…

nodejs+vue+微信小程序+python+PHP新闻发布系统的设计与实现-计算机毕业设计推荐

根据现实需要&#xff0c;此系统我们设计出一下功能&#xff0c;主要有以下功能模板。 &#xff08;1&#xff09;新闻发布系统前台&#xff1a;首页、时事新闻、公告资讯、个人中心。 &#xff08;2&#xff09;管理员功能&#xff1a;首页、个人中心、用户管理、新闻分类管理…

文本编辑软件:Ulysses mac介绍说明

Ulysses mac是面向 Mac、iPhone 和 iPad 的一站式写作环境。Ulysses 提供令人愉悦、专注的写作体验&#xff0c;加上高效文稿管理、无缝同步以及灵活导出。markdown 可以直接对于文本进行不同类型的分类、编辑&#xff0c;比如标题、注解、评论之类的内容。 Ulysses让注意力专…

rpm安装gitlab

1.rpm包下载 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ 2.进行安装 rpm -ivh gitlab-ce-15.9.7-ce.0.el7.x86_64.rpm --nodeps --force 3.配置访问地址 vim /etc/gitlab/gitlab.rb 4.重新加载配置以及重启服务 gitlab-ctl reconfiguregitlab-ctl resta…

Ubuntur编译ROS报错:error PCL requires C++14 or above

ubuntu20.04 编译ROS包 报错&#xff1a; error&#xff1a; PCL requires C14 or above&#xff1a; 修改Cmakelists.txt文件&#xff1a; set&#xff08;CMAKE_CXX_STANDARD 14&#xff09; 再次编译成功.

2023 IoTDB 用户大会成功举办,深入洞察工业互联网数据价值

2023 年 12 月 3 日&#xff0c;中国通信学会作为指导单位&#xff0c;Apache IoTDB Community、清华大学软件学院、中国通信学会开源技术委员会联合主办&#xff0c;“科创中国”开源产业科技服务团和天谋科技&#xff08;北京&#xff09;有限公司承办的 2023 IoTDB 用户大会…

AI 绘画 | Stable Diffusion 动漫人物真人化

前言 如何让一张动漫人物变成真实系列人物?Stable Diffusion WebUI五步即可实现。快来使用AI绘画打开异世界的大门吧!!! 动漫真人化 首先在图生图里上传一张二次元动漫人物图片,然后选择一个真实系人物画风的大模型,最后点击DeepBooru 反推,自动填充提示词,调整重绘…