- Docker 底层是linux容器实现 Docker是一个容器技术的应用,只是实现层
- linux容器隔离与共享。(cgroups控制组和Namespace)
Linux一共构建了6种不同的Namespace,用于不同场景下的隔离
- Mount - 隔离文件系统挂载点
- UTS - 隔离主机名和域名
- IPC - 隔离进程间通信资源
- PID - 隔离PID空间
- Network - 隔离网络接口
- User - 隔离用户/用户组空间
二、Docker简介
1、是什么
Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在本地编译通过的容器可以批量的在生产环境上部署。
Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱与集装箱之前没有影响。Docker是一个开放平台,使开发人员和管理员可以在称为容器的松散隔离的环境中构建镜像、交互和运行分布式应用程序,以便在开发、QA和生产环境之间进行高效的应用程序生命周期管理。
- Docker三个重要组件
(1)镜像(images)
一个特殊的文件系统。操作系统分为内核和用户空间,对于Linux来说,内核启动后会挂载root文件系统为其提供用户控件的支持。而Docker镜像,就相当于是一个root文件系统。
除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含一些为运行时准备的配置参数。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
镜像实际是由多层文件系统联合组成。镜像构建时,会一层一层构建,前一层是后一层的基础。每一层构建完就不会再改变,后一层上的任何改变只发生在当前层。比如:删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅把当前层标记为该文件已删除。
分层存储的特征还使得镜像的复用、定制变的更为容易。甚至可以用之前构建好的镜像作为基础层,然后进一步添加新的层,以定制自己所需的内容,构建新的镜像。
(2)容器(Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、暂停、停止、删除等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行与属于自己独立的命名空间,容器也是分层存储。
容器存储层的生命周期跟容器一样,容器消亡时,容器存储层也会消亡,任何保存于容器存储层的信息都会丢失。
容器不应该向其存储层内写入任何数据,容器存储层也要保持无状态化。所有的文件写入操作,都应该使用数据卷、或者绑定宿主目录,在这些位置的读写会跳过存储层,直接对宿主发生读写,其性能和稳定性更高。容器消亡后数据卷的数据不会丢失。
容器在整个应用程序生命周期工作流中提供以下优点:隔离性、可移植性、灵活性、可伸缩性和可控性。 最重要的优点是可在开发和运营之间提供隔离。
(3)仓库(Registry)
Docker Registry是一个集中存储、分发镜像的服务。
一个Registry可以包含多个仓库(Repository),每个仓库只包含一种软件,但可以包含多个标签(tag,也就是版本),每个标签对应一个镜像。
3、docker持续开发工作流
二、Docker安装、卸载
环境:Centos7
1、安装
1、先更新yum安装包sudo yum update
2、sudo yum install -y yum-utils
3. sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
3、安装之后查看docker版本,也可以用docker infodocker version
4、如果出现Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
启动docker service docker start
5、配置开机启动sudo systemctl enable docker
阿里云获取镜像加速器地址https://cr.console.aliyun.com/undefined/instances/mirrors
脚本安裝方法:
使用脚本自动安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:
若你想安装测试版的 Docker, 请从 test.docker.com 获取脚本
curl -fsSL test.docker.com -o get-docker.sh
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun
sudo sh get-docker.sh --mirror AzureChinaCloud
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。
启动 Docker
$ sudo systemctl enable docker
$ sudo systemctl start docker
2、卸载
(1)首先查看安装的Docker yum包
yum list installed | grep docker
(2)依次卸载yum包
yum -y remove 包名
(3)卸载掉之后,依次删除目录
rm -rf /etc/dockerrm -rf /run/dockerrm -rf /var/lib/dockershimrm -rf /var/lib/docker
如果出现如下错误:
rm: cannot remove ‘/var/lib/docker/containers’: Device or resource busy
执行如下命令:
cat /proc/mounts|grep containersumount /var/lib/docker/containers/
评论区