Docker是一种开源的虚拟进程技术,基于GO语言进行开发的
Docker可以让开发者自己打包我们自己的应用或依赖包到一个轻量级的,可移植的容器(也就是一个虚拟的精简版的linux系统)中去。然后,再一发布,那么就可以在所有的Linux上进行运行,一次构建,到处使用
Docker容器技术,一定是依托Linux操作系统存在
镜像产生出来的程序,我们叫“容器”。容器的完成使用一种“沙箱”机制
Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像。
镜像是构建Docker的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。例如:添加一个文件;执行一个命令;打开一个窗口。也可以将镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。
Docker可以帮助你构建和部署容器,你只需要把自己的应用程序或者服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。
所以Docker容器就是:
一个镜像格式;
一些列标准操作;
一个执行环境。
Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。
和集装箱一样,Docker在执行上述操作时,并不关心容器中到底装了什么,它不管是web服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将内容“装载”进去。
Docker也不关心你要把容器运到何方:我们可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,在把容器部署到具体的主机中。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。
使用Docker,我们可以快速的构建一个应用程序服务器、一个消息总线、一套实用工具、一个持续集成(CI)测试环境或者任意一种应用程序、服务或工具。我们可以在本地构建一个完整的测试环境,也可以为生产或开发快速复制一套复杂的应用程序栈。
专门用于放置镜像的地方,镜像可以从网络上下载,也可以自己去产生。最大的公开仓库是 Docker Hub(https://hub.docker.com/)。
cat /etc/redhat-releas
uname -r
yum update
yum install -y yum-utils device-mapper-persistent-data lvm2
yum -config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum install docker
docker -v
systemctl enable docker
systemctl start|restart|stop docker
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
镜像:可以来自于自己构建,也可以来自于网络
Docker镜像原本来自国外,地址:https://hub.docker.com/
从国外服务器获取镜像时,由于跨国际,可能非常慢,此时就需要配置国内镜像加速源
创建配置目录
sudo mkdir -p /etc/docker
配置镜像
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
]
}
EOF
重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
到此,Docker容器使用之前的准备工作,就告一段落