Docker实战教程01—Docker介绍及Docker部署

什么是容器?

容器( container-based )虚拟化方案,充分利用了操作系统本身已有的机制和特性,以实现轻量级的虚拟化(每个容器安装的不是完整的虚拟机)。容器将我们配置完成、可以运行的应用封装到一个轻量化的操作系统中,容器可以快速部署环境重现,减轻了我们的工作量,提高工作效率。

虚拟机和容器

  • 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;虚拟机特点:构成繁重、但隔离好、安全高;如下图:

 

 

  • 容器内的应用进程是直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。容器特点:架构轻、启动快、运行快、构建快;如下图:

 

 

 

为什么要使用容器?

  • 传统架构业务上线流程繁琐:开发->测试->申请资源->审批->部署->测试等环节;
  • 服务器资源利用率低普遍低,为保证业务间的可用性,单个服务器通常部署单个应用,造成过多浪费;
  • 业务高峰期扩容流程繁琐,需要申请资源部署运行环境等,上线不及时;

Docker介绍

 

 

Docker 是一个开源的应用容器引擎,基于GO语言开发。Docker 的目标:Build,Ship and Run Any App,Anywhere,通过对应用组件的封装(Packaging),发布(Distribution),运行(runing)等生命周期的管理 , 达到应用组件级别的”一次封装 , 到处运行”。

Docker引用了集装箱的理念,将应用封装,就像是集装的货物可以开箱即用,海洋中鲸鱼的体型庞大像是船行驶在技术的海洋里运送货物到世界各地。

Docker版本区别

1. DockerEE:由公司支持,可在经过认证的操作系统和云提供商中使用,并可运行来自DockerStore的、经过认证的容器和插件。Docker EE提供三个服务层次:

  • Basic包含用于认证基础设施的Docker平台,Docker公司的支持,经过认证的、来自Docker Store的容器与插件
  • Standard添加高级镜像与容器管理,LDAP/AD用户集成,基于角色的访问控制(Docker Datacenter)
  • Advanced 添加Docker安全扫描,连续漏洞监控

2. Docker CE:是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开 发人员和运维团队构建容器APP。

Docker的安装

直接前往官方文档选择合适的平台安装即可,比如我们这里想要在Centos系统上安装Docker,这前往地址https://docs.docker.com/install/linux/docker-ce/centos/根据提示安装即可。

 

 

我在这里给大家分享的是docker二进制安装,通常我们在工作中都是用的二进制部署:

1.下载docker二进制包:https://download.docker.com/linux/static/stable/x86_64/,找到Releases选择要下载的Tag,以19.03.9为例:docker-19.03.9.tgz

解压提取:containerd containerd-shim ctr docker dockerd docker-init docker-proxy runc 这些二进制文件,一定要将下载的包传到Linux下解压

 

2.下载docker-compos二进制包:https://github.com/docker/compose ,找到Releases选择要下载的Tag:以1.28.2为例:

 

下载的文件就是二进制文件,执行:mv docker-compose-Linux-x86_64 docker-compose 重命名

3.将提取出来的所有二进制文件放到 /usr/local/bin/目录下,本文已将所有操作写成脚本,docker-app.tar.gz包为上述提取的所有二进制文件压缩包。然后执行"sh docker.sh"进行安装,删除docker执行"sh remov.sh"。如果更新docker版本,将新下载版本的二进制文件进行压缩为此包名即可。

 

4.docker.sh脚本解析:

#/bin/bash

tar zxvf docker-app.tar.gz -C /usr/local/bin/

mkdir -p /etc/docker

cat <<EOF>/etc/docker/daemon.json
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
    "max-size": "100m"
    },
    "storage-driver": "overlay2",
    "registry-mirrors":[
        "https://kfwkfulq.mirror.aliyuncs.com",
        "https://2lqq34jg.mirror.aliyuncs.com",
        "https://pee6w651.mirror.aliyuncs.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://registry.docker-cn.com"
    ]
}
EOF

cat <<EOF>/etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
Environment="PATH=/usr/local/bin:/bin:/sbin:/usr/bin:/usr/sbin"
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload && systemctl enable docker.service && systemctl start docker.service
docker -v
docker images
docker ps

5.remove.sh脚本解析(删除docker前要删除运行的docker和image):

#/bin/bash

systemctl disable docker.service && systemctl stop docker.service && systemctl daemon-reload

rm -rf /usr/local/bin/docker*
rm -rf /etc/docker
rm -rf /etc/systemd/system/docker.service

 

posted @ 2021-01-31 11:33  云在身边  阅读(208)  评论(0编辑  收藏  举报