文章目录
Docker概述
Docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
沙箱(网络编程虚拟执行环境)
沙盘英文名sandbox(sandboxie),也叫沙箱,顾名思义可以看做是一种容器,里面所做的一切都可以推倒重来。
原理引用官方网站的一段话:电脑就像一张纸,程序的运行与改动,就像将字写在纸上。而Sandboxie就相当于在纸上放了块玻璃,程序的运行与改动就像写在了那块玻璃上,除去玻璃,纸上还是一点改变都没有的。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。其为一个独立的虚拟环境,可以用来测试不受信任的应用程序或上网行为。
Docker核心概念
- 镜像
- 一个面向Docker容器引擎的只读模板
- 打包起来的应用以及相关依赖包
- 容器
- 从镜像创建的运行实例
- 将镜像放到容器中去运行
- 仓库
- 集中保存镜像的地方
centos安装Docker有两种方式
- 使用CURL获得Docker的安装脚本进行安装
- 使用YUM仓库来安装
Docker应用场景
- 打包应用程序以简化部署(镜像)
- 可脱离底层硬件任意迁移(依赖引擎)
Docker与虚拟机
虚拟机就相当于我们的PC一样,依赖于操作系统,可以装载很多的服务,而docker依赖于docker-engine引擎,只能用来装载一个服务。
像在云上的弹性伸缩,要在短时间内部署好相应的服务以应对高并发,显然创建一台台的云主机,不如Docker来的快,因为云主机依赖操作系统得安装操作系统。
二者区别如下:
docker | 虚拟机 | |
---|---|---|
资源 | 资源少(很轻量级的,很多软件要在自己装) | 多 |
启动时间 | 十几毫秒 | 长(几分钟) |
安全 | 共享宿主机内核(会影响寄主机) | 系统隔离,安全(因为我们在创建时有创建内存,等) |
服务 | 一个docker跑一个服务 | 跑多个服务 |
cgroup | 实现docker安全 资源隔离 |
Docker基本操作
部署19版docker
1.安装依赖包
[root@docker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
#yum-utils提供了yum-config-manager
#device mapper存储驱动程序需要device-mapper-persistent-data和Ilvm2
#Device Mapper是Linux2.6内核中支持逻辑卷管理的通用设备映射机制,
它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
2.设置阿里云镜像源
[root@docker ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
..
repo saved to /etc/yum.repos.d/docker-ce.repo
[root@docker ~]# cd /etc/yum.repos.d/
可查看到yum仓库中有docker的镜像源docker-ce.repo
[root@docker yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo docker-ce.repo
3.安装Docker-CE
[root@docker ~]# yum -y install docker-ce
[root@docker ~]# iptables -F
[root@docker ~]# setenforce 0
[root@docker ~]# systemctl stop firewalld
[root@docker ~]# systemctl start docker
[root@docker ~]# systemctl enable docker
4.镜像加速
如果没有做镜像加速的话,下载镜像的速度是非常慢的
[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'
> { "registry-mirrors": ["https://r3tilm81.mirror.aliyuncs.com"] }
> EOF
以上这一段是在阿里云官网有的每个人都有自己的
[root@docker ~]# systemctl daemon-reload
[root@docker ~]# systemctl restart docker
5.网络优化
[root@docker ~]# vim /etc/sysctl.conf
在末尾添加
net.ipv4.ip_forward = 1
[root@docker ~]# sysctl -p
net.ipv4.ip_forward = 1
[root@docker ~]# service network restart
Restarting network (via systemctl): [ 确定 ]
[root@docker ~]# systemctl restart docker
镜像相关操作
查看docker版本
[root@docker ~]# docker version
搜索nginx镜像,这些镜像都是经过官网筛选的
[root@docker ~]# docker search nginx
NAME DESCRIPT