Docker 基础管理

为什么要用容器?

1)容器可以屏蔽底层操作系统的差异性,让业务应用不管在哪里都是使用容器的环境运行,从而保证开发,测试环境与生产环境的一致性

2)容器部署起来非常便捷和迅速,缩短开发、测试部署的周期时间

docker是什么?

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

容器引擎:docker containered podman rocket

 

容器的优点

●灵活:即使是最复杂的应用也可以集装箱化。

●轻量级:容器利用并共享主机内核。

●可互换:可以即时部署更新和升级。

●便携式:可以在本地构建,部署到云,并在任何地方运行。

●可扩展:可以增加并自动分发容器副本。

●可堆叠:可以垂直和即时堆叠服务。

 

docker和虚拟机的区别:

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

 

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

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

 

虚拟化软件:

windows :VMware Workstation 个人工作站版 VMware Sphere + ESXI 企业版

linux:KVM (基于linux内核的虚拟机) -> Openstack (私有云)

 

docker安装

先准备安装环境

#关闭防火墙

 #安装docker依赖环境,lvm逻辑卷

 #安装docker本地源

 #yum安装docker

 #开启docker,并设置开机自启

 #docker version 查看docker版本信息

 #docker info 查看docker所有信息

 

 

docker核心概念

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

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

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

 

docker镜像操作

复制代码
docker version   #查看docker版本信息
docker info   #查看docker信息
docker search 仓库/镜像的关键词
docker pull  仓库名/镜像名:标签  (如果不指定标签,默认使用:latest标签)
docker images   #查看本地的所有镜像
docker inspect  镜像名镜像id     #查看镜像的详细信息
docker tag 就镜像名:旧标签   新镜像名:新标签       #修改镜像的镜像名和标签名
docker rmi 仓库名:标签   |镜像id [-f]    #删除镜像
docker save -o 镜像文件  镜像名|镜像id   #导出
docker load -i|< 镜像文件     #载入

docker login  #登录官方公有仓库
docker push  仓库名/镜像名:标签   #推送镜像到公有仓库
复制代码

 #搜索nginx镜像

#获取镜像

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

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

不过在下载的时候,发现下载的速度有点慢,我们可以在阿里云的云镜象库下载。

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

 #配置一个daemon配置文件来使用加速器

 #刷新配置,重新启动docker

 #可以在docker的信息中查看到

 #通过 docker inspect命令,查看镜像的具体信息

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

 不过新添加的标签和原镜像的id号一样

 #通过rmi命令删除指定的镜像

 #将镜像文件保存成本地文件

 #将镜像文件载入到镜像库中

 

docker容器操作

复制代码
docker create [选项] [--name 容器名]镜像名:标签 [容器启动命令]
#创建容器
docker start 容器id |名称
#运行容器
docker stop 容器id |名称
#关闭容器
docker exec -it 容器id |名称 shell环境
#加入容器
exit
#退出容器
docker cp 文件 容器名称:绝对路径
#把虚拟机的文件复制到容器中
docker cp 容器名称:/绝对路径指定文件 /指定目录
#把容器中的文件复制到虚拟机中
docker ps -a  
#查看容器运行状态
docker rm[-f] 容器名|id 
#删除容器
docker rm $(docker ps -a -q)        #批量清理后台停止的容器
ecport -o 容器名称|id

docker run 容器id|名称  (-d 后台运行)
#前台创建并运行容器
docker run -d -i -t --name --rm  镜像名:标签 
复制代码

#创建容器

 #启动容器

 #加入容器,并查看

 #将主机中的文件复制到容器中

 #将容器中的文件,复制到主机中

 #终止容器的运行

当利用 docker run 来创建容器时, Docker 在后台的标准运行过程是:
(1)检查本地是否存在指定的镜像。如果有则直接使用本地镜像创建容器,如果没有则会从公有仓库下载在创建容器;
(2)在只读的镜像层上挂载一层可读可写的容器层;
3)从docker网桥给容器分配一个虚拟接口和ip
(4)使用镜像的默认启动命令或者指定的命令启动容器,直到容器中pid=1的主进程退出为止
posted @   打开方式不对  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示