为什么Docker?
引用官方定义:Docker是以Docker容器为资源分割和调度的基本单位,封住整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。他是一个跨平台、可移植并且简单易用的容器解决方案。Docker的源代码托管在GitHub上,基于Go语言开发并遵从Apache 2.0协议。Docker可在容器内部快速自动化地部署应用,并通过操作系统内核技术(namespaces,cgroups等)为容器提供资源隔离与安全保障。
简单的理解:Docker是一个新的容器化的技术,它轻巧,且易移植。
Docker解决了那些问题?
1、程序在我这跑得好好的,在你那怎么就不行呢???
程序在我这跑得好好的,去你那就不行了,这个问题显然是环境不一致导致的。而在Docker中,Docker image中包含了程序需要的所有的运行时依赖,比如java的程序,那么image中就必须包含jdk;比如Python的程序,肯定要在image中包含对应版本的Python解释器。Docker把整个运行时环境打包放到image中,所以搞定了环境依赖问题!
2、系统好卡,肯定是又有哪个哥们写死循环了!!!
如果一个服务器上面跑着多个项目,其中一个项目狂吃内存和CPU,占用了太多的系统资源,这就会影响到其他程序的运行。为了解决这种个问题,虚拟机出现了,做了资源的隔离,不同用户之间彼此老死不相往来,不会相互的影响。但是虚拟机有缺点:创建速度慢,迁移起来麻烦等等。为了避免使用这种重量级的虚拟化方案,Docker出现了,Docker利用Linxu内核级的一些隔离方案(Docker通过namespace实现了资源隔离,通过cgroups实现了资源限制)。让虚拟化变得轻量了起来,创建一个容器就是瞬间的,并且使性能损耗更加的少。
Centos7 Docker安装
Docker要求Centos系统的内核版本高于3.10,所以安装Docker之前先使用uname -r命令查看你当前内核的版本是否支持Docker
Linux内核版本
uname -a
使用yum安装Docker
sudo yum install docker
启动Docker
service docker start
设置开机启动docker
systemctl enable docker
查看docker是否安装成功
docker info
查看docker的配置信息
docker version
查看docker的版本信息
测试运行hello-world
sudo docker run hello-world
卸载Docker
1、卸载docker
sudo yum remove docker
2、删除残留文件
卸载Docker时,不会删除镜像,容器及数据卷,所以执行下面命令进行删除。
sudo rm -rf /var/lib/docker
Docker代理设置
1、在/etc/systemd/system/下创建docker.service.d文件夹
mkdir -p /etc/systemd/system/docker.service.d
2、在docker.service.d下创建http-proxy.conf文件
vim /etc/systemd/system/docker.service.d/http-proxy.conf
3、在http-proxy.conf添加环境变量:
[Service]
Environment="HTTP_PROXY=http://proxy1.bxx.xxx:8080/"
4、重启docker
sudo service docker restart