docker基本管理和概念

2023-12-13 21:44:45
docker是什么?

开源的应用容器引擎,基于go语言开发的,运行在Linux系统当中的开源的,轻量级的”虚拟机“

docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的,可移植的,自给自足的容器

docker的宿主机是linux系统,集装箱可以理解为相互隔离的容器(组件,应用成APP),每个容器都是一个独立的应用程序

docker的设置宗旨

build,ship and run any app ,anywhere

build封装好的程序,只要部署即可使用,一次封装

ship and run any app 一次封装完成之后的程序,可以在任何环境运行

anywhere:任意宿主机

一次封装,到处运行

封装,发布,部署,运行,维护,运行,销毁

可以整套的方式管理应用程序的生命周期

docker为什么受欢迎?

1、灵活,在负载的应用也可以实现容器化

2、 轻量级:小型的,不完整的,最小化封装的程序,与宿主机共享内核

3、可互换:可以随后的升级,更新

4、便携式:本地可以构建,在云平台上可以实现部署,在任何地方云翔

5、可扩展:自动分发容器副本

6、可堆叠:在一个宿主机上可以创建不同版本的同一容器,也可以是多个相同版本的同一容器

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

namespace的六项隔离措施

1、UTS(命名空间),系统调用参数:CLONE_NEWUTS,隔离内容:主机与域名,在UTS这个命名空间当中创建进程,进程可以看到自己的主机名和域名,与其他进行分隔开

2、IPC 系统调用的参数:CLONE_NEWIPC,隔离内容:信号量,消息队列,共享内存,在IPC这个命名空间之中,进行可以拥有独立的进程间通信资源

3、PID 系统调用参数:CLONE_NEWPID,隔离内容:每个进程都有自己独立的进程号空间

4、network 系统调用参数:CLONE_NEWNET 隔离内容:网络设备,网络线,以及端口

每个进程都有子一个自己独立的网络资源,端口号

5、mount 系统调用的参数:CLONE_NEWNS 隔离内容:挂载点,在mount这个命名空间之中,每个进程或者设备都有自己的文件系统挂载点,相互之间互不干扰

6、user 系统调用参数:CLONE_NEWUSER,隔离不同的用户和用户组

基于这六个隔离项,实现了容器和容器之间,以及容器和宿主机之间的资源隔离

docker的核心组件

镜像:是docker的基础,最小单位,类似与虚拟机的ISO文件,一个镜像就是一个可执行的包,包里面包含了运行这个程序的所有内容(代码,配置文件,环境变量)

docker镜像也是一个压缩包,不是一个解压的文件,是一个环境部署的脚本,甚至包含了完整的操作系统

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

仓库:保存镜像,所有的镜像都是从仓库当中拉去的,可以有公有仓库

还可以是私有仓库,镜像都是从仓库中拉去,镜像也保存在仓库之中

下载到了本地:镜像 容器 日志 /var/lib/docker 宿主机

docker与虚拟机之间的区别
特性docker虚拟机
启动速度秒级分钟级
计算能力损耗几乎无损耗50%
性能接近于原生系统弱于原生系统
系统支持量上千个硬件系统来看(几十个)
隔离性资源隔离完全隔离
安全性安全性差安全性高
docker实验部署
关闭防火墙和安全机制

安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 

yum-config-manager 工具,可以远程自定义获取yum源
device-mapper:1、进行逻辑卷管理的通用设备的映射机制
		    	2、lvm2

设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

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

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

重启docker
设置开机自启
systemctl start docker.service
systemctl enable docker.service 

查看docker版本(24版本)
docker version

docker只能支持64位系统

查看本机的所有信息
docker info

docker安装完毕之后,客户端和服务端都在一起,都运行在一台机器上
overlay2:docker使用的文件系统驱动
overlayFS:overlay file system:联动文件系统,用于适配宿主机的文件系统,可以自动适配
对docker的镜像进行操作
搜索镜像

docker search 镜像名称

#name 镜像名称
#description 描述信息
#stars 点赞数量
#official 官方镜像
#automated 自动化构建

配置镜像加速
#获取镜像加速器配置
#浏览器访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
#镜像下载后存放在 /var/lib/docker

下载镜像
下载镜像(不指定版本,默认就是最新版本)
docker pull centos
#指定版本下载
docker pull centos:7

#查看下载的镜像
docker images
#REPOSITORY 镜像所属的仓库
#tag	标签,可以理解为版本,标记一个仓库中的不同镜像
#IMAGE ID 镜像额度唯一标识,标识不重复
#CREATED 镜像的创建时间
#size 镜像大小

#镜像详细信息
docker inspect 镜像ID

#lowerDir	底层目录 docker的底层文件系统,是一个或者多个镜像文件的根文件系统
#UpperDir	可写层  可以在容器运行时,在容器内进行写操作,实现容器的可写性
#MergeDir	合并目录	lowerdir和upperDir合并起来,就是容器的文件系统,用户看到的也就是这个合并的视图
#workDie		工作目录	处理文件系统的变更,当在容器内进行写操作时,overlayfs使用workdir来追踪文件系统的变更

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

为本地的镜像添加新的标签
格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest nginx:web
如何把镜像文件保存本地
docker save -o /opt/centos.tar centos:7

如何把本地镜像文件存入docker中
docker load -i centos.tar

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

docker create -it nginx:latest /bin/bash
查看容器的运行状态
docker ps -a
查看正在运行的容器
docker ps

启动容器
格式:docker start 容器的ID/名称
docker start 8b0a7be0ff58
docker ps -a

 #创建容器并持续运行容器
docker run -itd --name test1 centos:7 /bin/bash  

终止容器运行
格式:docker stop 容器的ID/名称
docker stop 2592d3fad0fb

docker ps -a

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

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

容器导入和导出
导出格式:docker export 容器ID/名称 > 文件名
docker export 2592d3fad0fb > centos7.tar

docker export -o centos7.tar 2592d3fad0fb

#导入格式:cat 文件名 | docker import – 镜像名称:标签
cat centos7.tar | docker import - centos7:test			#导入后会生成镜像,但不会创建容器

docker import centos7.tar -- centos7:test

删除容器
格式:docker rm [-f] 容器ID/名称
docker stop 2592d3fad0fb
docker rm 2592d3fad0fb?? ??? ??? ??? ?#删除已经终止状态的容器
docker rm -f 2592d3fad0fb?? ??? ??? ?#强制删除正在运行的容器
删除镜像

文章来源:https://blog.csdn.net/qq_71147683/article/details/134828525
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。