Docker是一个基于Go语言的,开源的应用容器引擎,是一个用于开发,交付和运行应用程序的开放平台。Docker使得应用程序与基础架构分开来,进而实现快速交付。
其作用包括:可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制(沙箱就是一个限制应用程序对系统资源的访问的运行环境,通常实现在虚拟机中),更重要的是容器性能开销极低。
Docker的优点:
1.快速、一致地交付应用程序。开发人员在本地写代码,使用Docker容器与同事共享工作;使用Docker将应用程序推送到测试环境中进行测试;当出现错误时,开发人员可以在开发环境中进行修复,然后重新部署到测试环境中;测试完成后将修补程序像更新的镜像一样推送给生产环境。
2.响应式部署和扩展。Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
3.同一硬件上可运行更多工作负载。Docker轻巧快速,为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案。因此Docker非常适合于高密度环境以及中小型部署。通俗来讲就是用更少的资源做更多的事情。
先简单介绍一下Docker的工作流程
1.Dockerfile是镜像的源代码。你可以简单理解为创建容器镜像(Images)的脚本,可以通过它创建容器的镜像。
2.获得容器的镜像后,我们可以通过镜像在本地Docker环境拉起(run)容器(Containers),也可以对其进行stop暂停、start开启、restart重启操作。容器也可以交付commit给镜像。
3.可对镜像进行备份backup.tar。
4.Docker registry 注册表就好像一个本地仓库,你可以推送(push,也可以理解为上传)和拉取(pull,也可以理解为下载)镜像。
目前的Docker主要分为社区版(CE)和企业版(EE),本章我们将使用CE版进行操作学习。
环境介绍:一台全新的rhel7.6虚拟机,火墙和selinux均处于关闭状态。
安装docker-ce,启动服务
yum repolist
yum install -y docker-ce
systemctl enable --now docker
查看docker信息,发现两条warning
docker info
sysctl -a | grep bridge-nf-call-iptables
vim /etc/sysctl.d/docker.conf
cat /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
docker服务开启自动添加docker ip
ip addr
docker服务开启会自动写入火墙策略
iptables -L
刷新内核文件,读取添加的文件
sysctl --system
再次查看发现警告已消除
docker info
测试:将2048游戏镜像添加到docker中
docker load -i game2048.tar
查看已经添加的镜像
docker images
运行容器 –name表示名称为demo 端口为真实主机的80映射到虚拟机的80端口,-d表示打入后台
docker run -d --name demo -p 80:80 game2048
docker images
docker rm