2021-11-15企业必会技能Docker容器、概念、安装篇超细详解

容器介绍

容器其实是一种沙盒技术。沙盒就是能够像一个集装箱一样,把你的应用"装"起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰;而被装进集装箱的应用,也可以被方便地搬来搬去。

Docker容器的优势

容器的有点
隔离性:容器之间互不影响
迁移性:一次构建,多次运行

问题:容器的本质到底是什么?

 **容器的本质是进程。容器镜像就是这个系统里的".exe"安装包.**

Docker介绍:

Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情况下提供资源隔离的应用运行环境。

Docker 是一个开源工具,它可以让创建和管理 docker 容器变得简单。容器就像是轻量级的虚拟机,并且可以以秒级的速度来启动或停止。

官网:

docker.com
docker.io  ---docker官方库也叫docker-hub

docker依赖于镜像
在这里插入图片描述

没有容器的时候:

开发 测试 运维

1.rd开发产品(需要配置开发环境)lamp

2.测试(需要配置测试环境)

3.op上线(需要线上环境)

有容器之后:开发 测试 运维

1. rd开发产品(需要在docker容器里配置开发环境)      

2. 把容器打包成镜像交给运维,运维上线 

Docker跟原有的工具区别:

传统的部署模式是:安装(包管理工具或者源码包编译)->配置->运行;
Docker的部署模式是:复制->运行。

Docker对服务器端开发/部署带来的变化:

方便快速部署
对于部署来说可以极大的减少部署的时间成本和人力成本
Docker支持将应用打包进一个可以移植的容器中,重新定义了应用开发,测试,部署上线的过程,核心理念
是 Build once, Run anywhere
1)标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
2)节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;
3)方便构建基于微服务架构的系统,通过服务编排,更好的松耦合;
4)节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;

微服务概念

在这里插入图片描述

Docker 优势细化分

1、交付物标准化
Docker的标准化交付物称为"镜像",它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。

2、应用隔离
Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。总之,容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本. 

3、一次构建,多次交付
类似于集装箱的"一次装箱,多次运输",Docker镜像可以做到"一次构建,多次交付"。

Docker的度量:

Docker是利用容器来实现的一种轻量级的虚拟技术,从而在保证隔离性的同时达到节省资源的目的。Docker的可移植性可以让它一次建立,到处运行。Docker的度量可以从以下四个方面进行:

1)隔离性

 通过内核的命名空间来实现的,将容器的进程、网络、消息、文件系统和主机名进行隔离。

2)可度量性

 Docker主要通过cgroups控制组来控制资源的度量和分配。

3)可移植性

 Docker利用AUFS来实现对容器的快速更新。

 AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。AUFS具有层的概念,每一次修改都是在已有的只写层进行增量修改,修改的内容将形成新的文件层,不影响原有的层。

4)安全性

 安全性可以分为容器内部之间的安全性;容器与托管主机之间的安全性。

 容器内部之间的安全性主要是通过命名空间和cgroups来保证的。

 容器与托管主机之间的安全性主要是通过内核能力机制的控制,可以防止Docker非法入侵托管主机。


Docker容器使用AUFS作为文件系统,有如下优势:

1)节省存储空间

 多个容器可以共享同一个基础镜像存储。

2)快速部署

3)升级方便

 升级一个基础镜像即可影响到所有基于它的容器。需要注意已经在运行的docker容器不受影响

容器和 VM 的主要区别

表面区别:
容器占用体积小,虚拟机占用体积大
隔离性:容器提供了基于进程的隔离,而虚拟机提供了资源的完全隔离。
启动速度:虚拟机可能需要一分钟来启动,而容器只需要一秒钟或更短。
容器使用宿主操作系统的内核,而虚拟机使用独立的内核。Docker 的局限性之一是,它只能用在64位的操作系统上。
本质区别:
容器是被隔离的进程

上面概念讲完,我们步入正题

Docker安装

第一种方法去国外的官网去下载安装
在这里插入图片描述
步骤二
在这里插入图片描述
步骤三
在这里插入图片描述
步骤四
在这里插入图片描述
步骤五
在这里插入图片描述

卸载旧版本

在这里插入图片描述

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装docker源

在这里插入图片描述
方法一

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

方法二

wges  https://download.docker.com/linux/centos/docker-ce.repo

去查看一下本地源
在这里插入图片描述

安装 Docker 引擎

安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:

yum install docker-ce docker-ce-cli containerd.io

启动 Docker 服务

CentOS 7    
# systemctl start docker.service
# systemctl enable docker.service 

确定docker服务在运行:

结果会显示服务端和客户端的版本,如果只显示客户端版本说明服务没有启动

docker --version

国内源安装新版Docker

使用aliyun docker yum源安装新版docker
删除已安装的Docker
百度搜阿里云镜像站
在这里插入图片描述
进入
在这里插入图片描述
步骤2 ctrl+f 搜索docker
在这里插入图片描述
找的这个安装步骤 一步一步来
在这里插入图片描述
步骤跟上面的外国源一样,产生这个源
在这里插入图片描述
更新下载 启动
在这里插入图片描述

安装 Docker 引擎

安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:

yum install docker-ce 

启动 Docker 服务:

CentOS 7    
# systemctl start docker.service
# systemctl enable docker.service 

确定docker服务在运行:

结果会显示服务端和客户端的版本,如果只显示客户端版本说明服务没有启动

docker --version

docker下载以往的版本

yum list docker-ce --showduplicates

在这里插入图片描述
运行docker需要镜像, docker hop官网 先去拉取运行的镜像,先用的国外的镜像
在这里说一下,等下后面会讲镜像,还有容器,不要着急,包看会

拉取运行的镜像

步骤一
在这里插入图片描述
步骤二
在这里插入图片描述
步骤三复制链接
在这里插入图片描述

docker pull nginx  #拉取镜像

运行容器 加名字 版本
在这里插入图片描述
运行

docker run -it nginx:latest   /bin/bash

退出

ctrl+p+q

docker基本指令

查看容器的子网ip

docker inspect + 名称或者 + id

在这里插入图片描述
在这里插入图片描述
停止运行的容器

docker stop + 名称或者 + id

在这里插入图片描述
删除容器

docker rm + 名称或者 + id

删除镜像

docker rm + 名称或者 + id

查看容器的状态

docker ps       #查看运行容器状态
docker ps -a    #查看所有容器的状态

在这里插入图片描述

查看docker运行状态

# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
...

可能会出现的报错、

报错1:
docker info的时候报如下错误

bridge-nf-call-iptables is disabled
解决1:
追加如下配置,然后重启系统

# vim /etc/sysctl.conf   

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.bridge.bridge-nf-call-arptables = 1

问题2:

虚拟机ping百度也能ping通,但是需要等好几秒才出结果,关键是下载镜像一直报错如下


 # docker pull daocloud.io/library/nginx

 Using default tag: latest

 Error response from daemon: Get https://daocloud.io/v2/: dial tcp: lookup daocloud.io on 192.168.1.2:53: read udp   192.168.1.189:41335->192.168.1.2:53: i/o timeout

解决2:

我的虚拟机用的网关和dns都是虚拟机自己的.1或者.2,把DNS改成8.8.8.8问题就解决了,ping百度也秒出结果

 # vim /etc/resolv.conf

 nameserver 8.8.8.8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值