什么是docker?
是的,图片没有骗你,docker是一个开源的应用容器引擎。
我们可以将LinuxOS(Linux操作系统)看作是一个多功能的豪华别墅,里面的很多项目和依赖环境就像是别墅里的各种东西一样。
而docker就像是帮别墅分区,加工整理的泥瓦匠,可以将我们的不同项目及依赖环境打包在不同的区域(容器),使不同项目环境相互隔离,共同运行在同一台Linux宿主机上。
接下来看看Docker的整个体系模型是什么样的。
Docker体系模型
整个docker应用主要是由Docker客户端、Docker引擎、容器守护进程、docker镜像仓库四部分组成,对照下图
- 第一步:你要通过客户端输入你的命令,客户端负责将你的命令传送给docker引擎。
- 第二步:docker引擎拿到命令后进去分析,去往镜像仓库查找数据科学镜像,如果在本地镜像仓库里找到了,就直接使用;找不到的话还要去DockerHub远端仓库去查找下载到本地仓库。
- 第三步:Docker引擎将镜像文件交给Docker容器管理守护进程。
- Docker容器管理守护进程根据拿到的镜像文件,启动shim容器管理进程,启动一个runC容器运行镜像文件。
那什么是镜像,什么是容器呢?
镜像:
简单来说,Docker镜像是一个不包含Linux内核的精简Linux操作系统,是基于UnionFS技术实现的一层一层的文件系统,是一个独立的、只读的、静态的模板文件。Docker镜像好比一本书,是静止的文本,你只可以阅读它。
Docker镜像文件是分层组建的,通过向基础镜像文件上堆叠多个不同的镜像层,可以搭建不同的运行环境,同时他们又共用同一个基础镜像文件或共用其他镜像文件。
* 任何一层镜像文件都是独立的,只读的,静态的文件模板。
容器:
容器是在镜像层的顶层加入可写层,是镜像运行时的实体。
容器记录着所有对文件系统的改动,文件系统的改动记录在容器层内,之下的镜像层都是只读的文件层,实际没有改动。
容器运行在怎样的镜像环境就等同于拥有这个镜像系统所具有的全部开发环境,容器记录着对镜像文件的修改,实际的镜像文件并没有真正的修改,一单删除容器,所有的文件修改记录也就随之丢失了。
安装Docker
-
查看环境中有无安装docker
docker version --查看docker版本
systemctl status docker --查看docker的状态
systemctl stop docker --停止docker
yum list installed |grep docker 查看yum安装的docker包
rpm -qa |grep docker 查看docker相关的ypm源文件
yum -y remove docker-cl.x86_64(根据本身版本进行删除)–删除所有安装的docker包
这里有个centos8的坑:
- - 可能在yum undate时,出现以下情况
[root@autocontroller ~]# yum update
CentOS-8 - AppStream 70 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'AppStream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
- /etc/yum.repos.d目录下这三个文件,看是否被重命名
CentOS-Base.repo
CentOS-AppStream.repo
CentOS-Extras.repo - 在当前目录下运行:
[root@autocontroller ~]# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
[root@autocontroller ~]# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
- 安装docker
-
sudo yum update
-
sudo yum install -y yum-utils
-
sudo yum install -y device-mapper-persistent-data lvm2
yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
-
设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r
- 安装docker
$ sudo yum install docker-ce //由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
- 启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
- 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
docker就安装完成啦!
启动docker
- 查看docker状态
systemctl status docker
- 启动docker
systemctl start docker
docker安装nginx
- docker search nginx
- docker pull nginx
- docker run -d -p 8055:80 nginx
- 访问,启动成功。