• Docker自2013年爆红以来,一直独领风骚,以下是我整理的一些Docker基础理论,个人感觉这些是以后玩Docker,K8S等的敲门砖,很基础,很重要!

什么是Docker

在这里插入图片描述

  • Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件

  • 是一个开源的应用容器引擎,让开发者可以打包大门的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

  • 沙箱(Sandbox):在计算机安全领域,沙箱是一种程序的隔离运行机制

  • Docker在2013年一炮而红,直到现在,已经成为容器技术的代名词

  • Docker从一开始就以提供标准化的运行时环境为目标,真正做到“build once, run anywhere”,可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出了CaaS(容器即服务)技术

1.Docker的使用场景

  • 打包应用程序简化部署

  • 可脱离底层硬件任意迁移

  • 比如服务器从腾讯云迁移到阿里云

2.容器与虚拟机的区别

在这里插入图片描述

不同点containerVM
启动速度秒级分钟级
运行性能接近原生(直接在内核中运行)5%左右损失
磁盘占用MBGB
数量成百上千一般几十台
隔离性进程级别系统级别(更彻底)
操作系统主要支持Linux几乎所有
封装程度只打包项目代码和依赖关系,共享宿主机内核完整的操作系统,与宿主机隔离

往往你会发现你要使用虚拟机,需要先安装虚拟化软件,然后安装系统,最后在系统上安装应用软件
而容器不需要,容器你只需要做三步就可以了,创建镜像,基于镜像创建容器,开启容器即可

Docker的核心概念及安装方式

  • 镜像:
    一个面向docker容器引擎的只读模板

  • 容器:
    从镜像创建的运行实列

  • 仓库:
    集中保存镜像的地方

在这里插入图片描述
docker-ce是跨平台引擎,有了它就可以实现跨平台操作

Docker的安装方式

##这里我用的是阿里线网源,所以需要先搭建yum线网源仓库##
[root@localhost ~]# hostnamectl set-hostname docker
[root@localhost ~]# su

[root@docker ~]# cd /etc/yum.repos.d/
[root@docker yum.repos.d]# ls
backup  local.repo
[root@docker yum.repos.d]# ls
backup  local.repo
[root@docker yum.repos.d]# rm -rf local.repo 
[root@docker yum.repos.d]# mv backup/* /etc/yum.repos.d/
[root@docker yum.repos.d]# ll
total 28
drwxr-xr-x. 2 root root    6 Nov 10 06:38 backup
-rw-r--r--. 1 root root 1664 Aug 30  2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 30  2017 CentOS-CR.repo
-rw-r--r--. 1 root root  649 Aug 30  2017 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root  314 Aug 30  2017 CentOS-fasttrack.repo
-rw-r--r--. 1 root root  630 Aug 30  2017 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 30  2017 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 30  2017 CentOS-Vault.repo

[root@docker yum.repos.d]# yum clean all
[root@docker yum.repos.d]# yum makecache
##添加阿里docker线网源##

[root@docker yum.repos.d]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

##添加完成后会有一个docker-ce.repo##
[root@docker yum.repos.d]# ls
docker-ce.repo

[root@docker yum.repos.d]# yum install -y docker-ce
[root@docker yum.repos.d]# systemctl start docker.service 
[root@docker yum.repos.d]# systemctl enable docker.service 

镜像加速

为什么做镜像加速,不加速的话很卡很卡很卡!!!

##在阿里官网中,每个人都有自己的加速网址,可以去阿里云控制台查看##
[root@docker yum.repos.d]# cd ~
[root@docker ~]# mkdir -p /etc/docker
[root@docker ~]# tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://ga12ck6j.mirror.aliyuncs.com"]
> }
> EOF
{
  "registry-mirrors": ["https://ga1ock6j.mirror.aliyuncs.com"]
}
[root@docker ~]# cd /etc/docker/
[root@docker docker]# ls
daemon.json  key.json
[root@docker docker]# systemctl daemon-reload
[root@docker docker]# systemctl restart docker

网络优化

[root@docker docker]# vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1


[root@docker docker]# sysctl -p
net.ipv4.ip_forward = 1


[root@docker docker]# systemctl restart network
[root@docker docker]# systemctl restart docker
  • 安装完docker后,会自动分配一块网卡
[root@docker docker]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:f0:05:36:99  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  • 它的功能就像安装VM时自动给你分配的VM1与VM8,用于宿主机的物理网卡(比如ens33),与docker内部容器的网络连通
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐