首页 > 其他分享 >Docker基本管理

Docker基本管理

时间:2024-01-23 18:25:04浏览次数:23  
标签:基本 容器 管理 虚拟机 id 镜像 Docker docker

Docker

Docker 概述

容器引擎

Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。

Docker的Logo设计为蓝色鲸鱼,拖着许多集装箱。
鲸鱼可看作为宿主机,集装箱可理解为相互隔离的容器,每个集装箱中都包含自己的应用程序。

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

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


容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。

#Docker与虚拟机的区别:
特性                        Docker容器                    虚拟机
启动速度                    秒级                        分钟级
计算能力损耗                 几乎无                         损耗 50%左右
性能                        接近原生                    弱于
系统支持量(单机)            上千个                        几十个
隔离性                        资源隔离/限制                完全隔离

#容器在内核中支持2种重要技术:
docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g,只有当需要修改时才复制一份数据)。


#Docker核心概念:
●镜像
Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。
通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。
Docker镜像也是一个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建,所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

●容器
Docker的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证平台的安全性。
可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

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

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

 

Linux系统命名空间

namespace的六项隔离
NAMESPACE 系统调用参数 隔离内容
UTS CLONE NEWUTS 主机名与域名
IPC CLONE EWWIPC 信号量、消息队列和共享内存
PID CLONE EWPID 进程编号
NETWORK CLONE NEWNET 网络设备、网络栈、端口等
MOUNT CLONE NEWNS 挂载点(文件系统)
USER CLONE EWISER 用户和用户组(3.8以后的内核才支持)

 

容器与虚拟机的区别

容器 虚拟机
所有容器共享宿主机的内核 每个虚拟机都有独立的操作系统和内核
通过namespace实现资源隔离,通过cgroup实现限制资源的最大使用量 完全隔离。每个虚拟机都有独立的硬件资源
容器是秒级启动速度 虚拟机是分钟级启动速度
容器相当于宿主机的进程,性能几乎没有损耗 需要通过hypervisor虚拟机管理程序对宿主机资源虚拟访问,有一定的性能损耗
单机容量能够支持成百上千个容器 单机容量只能支持最多几十个虚拟机

 

安装 Docker

 #安装依赖包

yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

 #设置阿里云镜像源

 #yum安装Docker-CE

 #开启比设置开机自启

安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。

 #查看docker版本信息

 

 

 #搜索镜像

 #获取镜像    格式:(docker pull 仓库名称[:标签])

 

 

 

 #指定镜像加速,后续镜像都从阿里云上获取,如阿里云没有再去官网获取

 

 #再获取nginx,速度快了,nginx后面不加指定报的后缀,默认获取当前最新的nginx (latest)

 

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

镜像下载后存放在 /var/lib/docker 。
Docker 相关的本地资源存放在 /var/lib/docker/ 目录下,
其中 containers 目录存放容器信息,image 目录存放镜像信息,overlay2 目录下存放具体的镜像底层文件。

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

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

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

 

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

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

 

 #删除镜像     格式:docker rmi 仓库名称:标签

 

 #删除id号一样的镜像,按名称删除的话删不完全

 #指定id号删除,同一id号相同的镜像指定id号删除,会报错要加 -f 强杀  

docker rmi  + 镜像ID号   #会彻底删除该镜像

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

 

 #将镜像存入本地并导入到24服务器中

 

 #24服务器接收到

 #镜像在本地导入

 

 #创建个容器

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

 

 #docker -s -a  #查看所有状态的容器   ,docker start 容器名/容器id  (启动容器) , 状态为up

 #关闭容器

docker stop 容器名/容器id  (发送 SIGTERM 信号,默认等待10s) | docker kill 容器名/容器id (发送 SIGKILL 信号,强制停止容器) #关闭容器  

  #查看容器详细信息  (dokcer inspect 容器名称|容器id)

 #进入容器中要先开启容器

 #在外面opt目录下创建个test.txt文件

 #将创建的文件导入到容器中的mnt目录下

 

 #在容器中创建个ak47目录

 #将容器中的mnt目录下的ak47 拷贝到外面opt目录下

 #用docker run 创建并直接运行  加d是代表后台运行

 #将容器导出取名posstion

 #将到到导出去的容器导回去,进入容器里,看看之前在容器里创建的文件是否还在!

 #创建个容器并加上选项rm

 #创建的容器再运行

 #将创建的容器关闭,再查看下,显示没有了。用run创建容器时,加选项--rm时,当关掉运行的容器时会自动删除该容器

 

 #删除正在运行的容器需要用-f强杀

 

#上传镜像

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

docker tag nginx:latest soscscs/nginx:web        #添加新的标签时必须在前面加上自己的dockerhub的username
docker login                                #登录公共仓库
Username:soscscs
password:abc123456
docker push soscscs/nginx:web                    #上传镜像

 

 

 

总结

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

#容器引擎
docker containered podman rocket

#虚拟化软件
windows:  VMware workstation 个人工作站版  VMware Sphere + ESXI 企业版虚拟化应用  XEN
Linux:  KVM(基于内核Linux内核的虚拟机) -> Openstack 

#Docker是什么?
docker是用go语言开发并开源的容器引擎,用来运行容器里的应用,同时docker可以用来管理容器和镜像一种工具

#容器与虚拟机的区别?
容器
1)所有容器共享宿主机的内核
2)通过namespace实现资源隔离,通过cgroup实现限制资源的最大使用量
3)容器是秒级启动速度
4)容器相当于宿主机的进程,性能几乎没有损耗
5)单机容量能够支持成百上千个容器

虚拟机
1)每个虚拟机都有独立的操作系统和内核
2)完全隔离。每个虚拟机都有独立的硬件资源
3)虚拟机是分钟级启动速度
4)需要通过hypervisor虚拟机管理程序对宿主机资源虚拟访问,有一定的性能损耗
5)单机容量只能支持最多几十个虚拟机



#docker的三个核心概念
镜像:是创建容器的基础,是一个只读的模板文件,里面包含运行容器中的应用程序所需要的所有内容(应用程序文件、配置文件、运行库文件、依赖包等)
容器:用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器之间默认是相互隔离的
仓库:是用来集中保存镜像的地方,且仓库有公有仓库和私有仓库之分

 

#docker 镜像操作
docker search 仓库/镜像的关键词 #搜索镜像
docker pull 仓库名/镜像名:标签 #获取镜像 (如过不指定标签默认使用:latest 标签)
docker version #查看 docker 版本信息
docker info #docker 信息查看
docker images #查看本地有哪些镜像
docker inspect +镜像名/镜像的ID #根据镜像的唯一标识 ID 号,获取镜像详细信息 (与docker images命令结合使用)
docker tag 旧镜像名:旧标签 新镜像名:新标签 #为本地的镜像添加新的标签
docker rmi + 镜像名/镜像ID [-f] #删除镜像 -f强杀 (如同一id多个镜像名不同的镜像指定id删除的话需要加-f强杀)
docker save -o 指定镜像文件 镜像名或镜像id #将镜像存入本地
docker load -i | < 镜像文件 #镜像在本地导入
docker login #登录仓库 默认登录官方公有仓库
docker push 仓库名/镜像名:标签 #进行镜像推送到仓库



#docker 容器操作
docker create [--name 容器名] 镜像名:标签[容器启动命令] #创建容器 不加启动命令就是容器里默认启动命令
docker start 容器名/容器id #启动容器
docker ps #查看正在运行的容器
docker ps -a #查看所有状态的容器
docker stop 容器名/容器id (发送 SIGTERM 信号,默认等待10s) | docker kill 容器名/容器id (发送 SIGKILL 信号,强制停止容器) #关闭容器
dokcer inspect 容器名称|容器id #查看容器详细信息
docker exec -it 容器名/容器id bash |sh #进入容器 (进入容器前,确保容器正在运行)
docker cp 宿主机文件路径 容器名|容器id:绝对路径 #宿主机的文件拷贝到容器中
docker cp 容器名|容器id:绝对路径 宿主机文件路径 #容器中文件拷贝到容器中


docker rm 容器名 + -f(强杀) #删除容器 (一般建议关闭容器再删除)
#注,容器里数据是临时保存的


docker stop 容器名|容器ID -t (设置等待时间)


docker export -o 容器模板文件 容器名|容器id ip地址:存放目录 #导出到另一台服务器
docker export 容器名|容器id > 模板文件 #导出
docker import 容器模板文件 -- 镜像名:标签 #标准导入
cat 模板文件 | docker import 容器模板文件 -- 镜像名:标签


docker run [选项] #创建并运行容器(默认前台运行容器)
docker run -d [选项: -i -t --name --rm] 镜像名称:标签 [容器启动命令] #-d后台运行 --rm 容器退出后会自动将容器删除


#当利用 docker run 来创建容器时,Docker 在后台的标准运行过程是:
1)检查本地是否存在指定的镜像。当镜像不存在时,会从公有仓库下载;
2)利用镜像创建并启动一个容器;
3)分配一个文件系统给容器,在只读的镜像层外面挂载一层可读写层;
4)从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中;
5)分配一个地址池中的IP地址给容器;
6)执行用户指定的应用程序,执行完毕后容器被终止运行;



#docker rum 的启动过程
1)检查本地是否存在指定的镜像。如有则直接使用本地镜像创建容器,如没有则从查看中拉取镜像在创建容器
2)在只读的镜像层上挂载一层可写的容器层
3)从docker网桥给容器分配一个虚拟接口和IP地址
4)使用镜像的默认启动命令或指定命令启动容器,直到容器中PID为1的主进程退出为止



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) #批量清理后台停止的容器

 

 

标签:基本,容器,管理,虚拟机,id,镜像,Docker,docker
From: https://www.cnblogs.com/yanrui07/p/17982198

相关文章

  • [转帖]Docker最佳实践:5个方法精简镜像
    https://juejin.cn/post/6844903880526921741  精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患。优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而有差异。本文将介绍精简Docker镜像的几种通用方法。精简Docker镜像大小的必要性Doc......
  • 医院绩效管理系统,实现医院绩效管理数据采集的自动化和绩效评估数字化
    医院绩效管理系统以国家医院绩效管理考核政策法规为依据,结合医院管理实践,以经济管理指标为核心,医疗质量、安全、效率、效益管理为重点,特别强调持续改进(PDCA)管理理念。实现医院绩效管理数据采集的自动化和绩效评估数字化,使医院的绩效评价工作更加公平、公正和规范化;通过实时数据统计......
  • 合天实验室-职业院校技能竞赛信息安全管理与评估赛前训练
    抓包工具HTTP协议基础1.HTTP教程:http://www.runoob.com/http/http-tutorial.html2.HTTP协议详解:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html3.99%的人都理解错了HTTP中GET与POST的区别:https://juejin.im/entry/57597bd45bbb500053c88b4c4.推荐书......
  • 如何做可以更好的提升企业内部的管理效率?
    随着全球化竞争加剧和信息技术飞速发展,企业在2024年面临着更高的效率要求和更复杂的战略挑战。在此背景下,科学、公正且具有前瞻性的绩效考核管理系统成为推动企业管理效率升级的核心动力。首先,建立目标导向型绩效管理体系是提升管理效率的基础。这意味着企业在设定考核指标时,应紧......
  • 测试管理进阶 | 如何打造一份出彩的工作汇报!
    霍格沃兹的测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。本文主要是以述......
  • 2024年深圳市各住房公积金管理中心地址及电话
    1、深圳市住房公积金管理中心坪山区公积金服务专窗区域:深圳市坪山区类别:公积金中心地址:广东省深圳市坪山区金牛路12号启兴大厦电话:0755-123292、深圳市住房公积金管理中心龙华区公积金服务专窗区域:深圳市龙华区类别:公积金中心地址:广东省深圳市龙华......
  • 软件测试/测试管理|如何打造一份出彩的工作汇报!
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。本文主要是以述职汇报......
  • Spring Security 权限管理框架
    1.SpringSecurity是什么Springsecurity是针对Spring项目的安全框架,可以实现强大的Web安全控制,2.SpringSecurity可以做什么,核心的功能主要是实现两个目标:认证和授权认证Authentication:身份验证通常通过用户名和密码,验证用户身份,登录授权Authorization:授权发生在系统成......
  • Alpine搭建docker环境
    Alpine搭建docker环境基础环境已经具备,进行应用的安装和配置。安装docker服务#安装dockerapkadddocker配置docker服务#启动dockerservicedockerstart#开机启动rc-updateadddockerboot#查看版本dockerversion‍报错处理servicedocker......
  • 南京信息工程大学宿舍管理员吴阿姨的精彩演讲
    每年到了7月份,是各大高校的学生陆陆续续的到了离别的日子,大家可能都有印象,唱着《隐形的翅膀》给未来的毕业生励志的北大校长,还有发表了精彩的演讲华东科技大学的校长,他们都是因为在毕业典礼上的表现是红遍了网络,可是这次在毕业生的典礼上走红的人物不是校长,而是一位普通的宿舍管理......