【Docker专题】centos搭建部署docker环境的详细步骤
1、Docker的存在解决的问题
1.1 统一标准
应用构建:我们写的应用可能使用了不同的编程语言,例如:Java、C++、JavaScript等,这些应用最终打成软件包,有的是压缩包、有的是文件夹、有的是源程序让自己编译,这就很麻烦;那么能否统一打成一个包?这就需要docker build,把我们的软件打成一个标准格式的包,这个包就叫做镜像!
应用分享:所有软件的镜像都放到一个指定地方 docker hub(就相当于安卓手机里的应用市场)。
应用运行:我们都打包成了统一标准的镜像(相当于Windows里的可执行程序.exe);直接docker run就可以启动应用。
Docker的存在开启了一个时代,一个容器化的时代!
区别于容器化,以前我们有一个虚拟化技术:假如有一个8核64G的应用,我们跑很多的应用,所有的应用都放到一个机器里面;如果一个软件造成内存泄漏,就可能把整个64G内存全部占完,造成其它应用就挤下去运行不了了!为了安全,所以我们要把这些应用进行隔离:
(1)第一种办法:虚拟化技术;装几个虚拟机,假如每个虚拟机占8个G,每个虚拟机里布置各自的应用,就算有一个应用造成了内存泄漏,也只会漏掉8个G,不会影响别人!但是虚拟化技术也有很多缺点:基础镜像都是GB级别、创建使用复杂、启动速度慢、移植与分享不方便;
(2)第二种办法:容器化技术;一个服务器装了操作系统,对于虚拟机化技术实际上每个虚拟机又是一个完整的操作系统;对于容器化技术,既然有操作系统了,docker就是搞一些差异化的东西保存起来,所以每个应用的环境只是区别于当前服务器的一个差异化环境;优点:基础镜像MB级别、创建简单、隔离性强、启动速度秒级、移植与分享方便;
1.2 资源隔离
(1)cpu、内存资源隔离与限制;
(2)访问设备隔离与限制;
(3)网络隔离与限制;
(4)用户、用户组隔离限制;容器里跑的应用的root用户,跟Linux主机里的root用户,可以不是同一个root用户
……………………
2、Docker的建构
1、Docker_Host:
想用Docker,每台主机必须安装Docker;安装Docker的主机,即为Docker_Host
2、Docker Daemon
安装好Docker就会在主机上启动,后台启动一个Docker的进程;运行在Docker主机上的Docker后台进程
3、Client
操作Docker主机的客户端(命令行、UI等)
4、Registry
镜像仓库:Docker Hub
5、Images
镜像,带环境打包好的程序,可以直接启动运行
6、Containers
容器,由镜像启动起来正在运行中的程序
总结
:想要用docker,先装好Docker;然后去 软件市场 (docker hub)寻找镜像,下载(docker pull)镜像并运行(docker run);
3、安装Docker
Docker官方部署Docker平台的底层Linux操作系统对应的Linux内核版本至少3.8+,在实际的企业生产环境中,推荐的Linux内核至少3.10+,对应的Linux操作系统发型版本:Centos7.x或者Ubuntu16.x;
cat /etc/centos-release # 查看当前Centos的版本
uname -a #查看当前内核的版本
Docker安装的官方文档:https://docs.docker.com/engine/install/centos/
1、卸载以前安装的docker
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 如果以前什么都没安装,直接yum remove docker*就可以
2、配置yun源
yum-config-manager \
–add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 添加docker安装源地址
3、安装docker
# docker-ce—docker社区版
# docker-ce-cli—操作docker服务器的命令行程序
# containerd.io—docker容器化的运行环境
# 如果想要安装其他版本
yum list | grep docker # 查看一下docker资源的安装列表
4、启动docker并设置为开机自启
systemctl enable docker
5、查看一下当前的docker运行状态
6、随便使用一个命令验证
7、配置镜像加速
tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://82m9ar63.mirror.aliyuncs.com”],
“exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”: {
“max-size”: “100m”
},
“storage-driver”: “overlay2”
}
EOF
systemctl daemon-reload
systemctl restart docker
然后输入:docker ps能打印出来内容就说明没问题!