这里写目录标题

  • 一,Docker概述
  • 1,Docker是什么?
  • 2,Docker与虚拟机的区别
  • 虚拟机:
  • 容器:
  • 3,Docker的使用场景
  • 4,Docker的特点
  • 二,安装Docker
  • 1,Docker的核心概念及安装方式
  • Docker核心概念
  • centos安装docker的两种方式
  • 2,安装Docker(19版本)
  • 2,1 安装最新版Docker依赖环境(依赖包)
  • 2.2 设置镜像源
  • 2,3安装Docker引擎并设置为开机自动启动
  • 2,3 检查Docker版本查看Docker服务
  • 2.4关于docker的网桥桥接网口
  • 2.5 镜像加速
  • 2.6 网络优化
  • 三, Docker镜像创建与操作
  • 1,Docker镜像操作
  • (1)搜索镜像/查看镜像
  • (2)下载/上传镜像
  • (3)查看镜像
  • (4)删除镜像
  • (5)如何给镜像设置一个标签
  • (6)镜像导出/导入
  • (7) 上传镜像到仓库的具体操作方法
  • (9)删除容器
  • (10)容器的导出与导入
  • (11)停止容器
  • 补充端口映射:


一,Docker概述

1,Docker是什么?

  • 是一种轻量级“虚拟机”
  • 使用go语言开发的
  • 在linux容器里运行应用的开源工具
  • 容器 桌面镜像 容器镜像导出_经验分享

  • 为什么docker容器能跨平台实现?
    因为docker引擎,docker-ce的安装引领
  • Docker三要素:容器,镜像,仓库

2,Docker与虚拟机的区别

虚拟机:启动时间1-3分钟,占用的磁盘空间大,安全方面相对安全
容器:启动时间毫秒,占用的磁盘空间小,安全方面相对不安全(属主系统共享内核资源)

虚拟机:

工作基本原理如下图所示

基本上就是进程及程序通过虚拟机VMM平台调用win10系统最底层的硬件环境来运行的一种方式。

容器 桌面镜像 容器镜像导出_经验分享_02

容器:

工作基本原理如下:

是在操作系统的基础通过docker引擎的支持来实现不同平台的交互,并在容器上可以直接进行仓库镜像的上传与载入。

容器 桌面镜像 容器镜像导出_程序人生_03

3,Docker的使用场景

  • 打包应用程序简化部署
  • 可脱离底层硬件任意迁移
  • 例如:服务器从腾讯云迁移到阿里云

4,Docker的特点

  • 服务彼此间相互独立
  • 服务可以灵活迁移

二,安装Docker

1,Docker的核心概念及安装方式

Docker核心概念
  • 镜像:一个面向Docker容器引擎的只读模板
  • 容器:从镜像创建的运行实例
  • 仓库:集中保存镜像的地方
centos安装docker的两种方式
  • 使用curl获得docker的安装脚本进行安装
  • 使用yum仓库来安装docker

2,安装Docker(19版本)

以下安装方式已经为优化过程:

2,1 安装最新版Docker依赖环境(依赖包)
yum -y install yum-utils device-mapper-persistent-data lvm2


# yum-utils 提供了yum-config-manager
# device mapper 存储驱动程序需要device-mapper-persistent-data 和 lvm2
# Device Mapper是linux2.6内核中支持逻辑卷管理的通用设备映射机制,他为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构
2.2 设置镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   //阿里云镜像源

yum install http://ftp.riken.jp/Linux/cern/centos/7/extras/x86_64/Packages/container-selinux-2.74-1.el7.noarch.rpm  //此镜像源下载速度比较快并且不会缺失一些包
2,3安装Docker引擎并设置为开机自动启动
yum install -y docker-ce 
systemctl start docker
systemctl enable docker
2,3 检查Docker版本查看Docker服务
docker version
2.4关于docker的网桥桥接网口

首先所有的虚拟机之间需要通过ens33来建立交互,而在容器内部,所有的镜像都有各自的地址,与容器之间形成了一个小型的局域网,此时局域网想要与ens33 建立连接,所以就有了docker0的出现,docker0与ens33之间进行地址转换,形成一个映射,这样就能成功的建立起连接了
如下图所示:

容器 桌面镜像 容器镜像导出_经验分享_04

2.5 镜像加速
tee /etc/docker/daemon.json <<-'EOF'
> {
>   "registry-mirrors": ["https://pl01jex2.mirror.aliyuncs.com"]
> }
> EOF
systemctl daemon-reload 重新加载配置文件
systemctl restart docker  启动
2.6 网络优化

方便以后配置环境中出现一些棘手难处理的问题进行网络优化:

vim /etc/sysctl.conf
sysctl -p
net.ipv4.ip_forward = 1
ervice network restart
systemctl restart docker

三, Docker镜像创建与操作

1,Docker镜像操作

(1)搜索镜像/查看镜像
docker search  镜像名
(2)下载/上传镜像
docker pull  镜像名   //下载
docker push 镜像名   //上传

注:此时就开始使用aliyun的加速功能了

(3)查看镜像
docker images  镜像名
docker inspect 镜像ID号
(4)删除镜像
docker rmi  镜像id (只有一个镜像,没有其他标签)
docker rmmi  镜像名称  (有多个镜像,并且有标签名)
(5)如何给镜像设置一个标签
docker tag nginx:latest nginx:123  //设置
docker images | grep nginx  //查看
docker rmi nginx:123   //删除创建的标签镜像
(6)镜像导出/导入
docker save -o /opt/nginx nginx:latest   //将镜像Nginx导出到opt下并命名为nginx
此时镜像导出之后就可以考到u盘或者在其他平台上上传发送了

docker load < /opt/nginx     //从opt下上传镜像到容器
(7) 上传镜像到仓库的具体操作方法
docker login     //登录
docker tag nginx:latest abner/nginx:web   //用户名/仓库名:镜像
docker push abner/nginx:web   //上传
(9)删除容器
docker rm  容器id       //删除容器之前必须先stop容器,不然的话删除不了

 docker ps -a | awk '{print "docker rm "$1}' | bash   //批量删除字段1 的虚拟机,删除之前要先关闭容器
(10)容器的导出与导入
docker export 容器导出 > /opt/nginx_c   //将容器导出到opt下面的并命名为nginx_c
cat nginx_c | docker import - nginx:web  //容器导入实际上只是生成镜像,而不会创建容器  ,此时导入之后应该去镜像里面查看
(11)停止容器
docker  stop  容器id   //这条指令为停止容器,当执行此命令之后返回状态码是不为0的,此时属于异常退出,强行停止
补充端口映射:

在容器中需要进行跨平台交互,此时就需要容器的端口映射将容器端口与虚拟机端口连接起来并通过虚拟机端口与其他容器间进行交互,单个交换机映射原理如下图所示:

容器 桌面镜像 容器镜像导出_容器 桌面镜像_05