Docker学习总结

一:容器介绍

1.1 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。

  • 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。
  • 容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。
  • 容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
    容器虚拟化的是操作系统而不是硬件,容器之间是共享同一套操作系统资源的。虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统。因此容器的隔离级别会稍低一些。

1.2Docker容器的特点

  • 轻量,在一台机器上运行的多个Docker容器可以共享这台机器的操作系统内核
  • 标准,Docker容器基于开放式标准,能够在所有主流Linux版本、Microsoft Windows以及包括VM、裸机服务器和云在内的任何基础设施上运行。
  • 安全,Docker赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施

1.3 为什么用docker

一致的运行环境、更快速的启动时间、弹性伸缩,快速扩展、迁移方便、持续交付和部署

  • Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现“这段代码在我机器上没问题啊”这类问题;——一致的运行环境
  • 可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。——更快速的启动时间
  • 避免公用的服务器,资源会容易受到其他用户的影响。——隔离性
  • 善于处理集中爆发的服务器使用压力;——弹性伸缩,快速扩展
  • 可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。——迁移方便
  • 使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。——持续交付和部署

容器 VS 虚拟机

简单来说: 容器和虚拟机具有相似的资源隔离和分配优势,但功能有所不同,因为

  • 容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高。
  • 虚拟机虚拟化的是硬件,将虚拟化出同等类型的操作系统
    在这里插入图片描述

二 docker的基本概念

Docker包括三个基本概念:

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

2.1 镜像

镜像(Image)——一个特殊的文件系统

  • 操作系统分为内核和用户空间。对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。
  • Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。

2.2 容器

容器(Container)——镜像运行时的实体

  • 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等 。
  • 容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。前面讲过镜像使用的是分层存储,容器也是如此。

2.3 仓库(Repository)——集中存放镜像文件的地方

  • 镜像构建完成后,可以很容易的在当前宿主上运行,但是, 如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。
  • 一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。##
  • docker hub 、阿里云、自己搭建的仓库

2.4 Docker 架构

在这里插入图片描述

三 Docker基本指令

  • 查看镜像 docker images

    如果本地没有镜像,可以去仓库拉取镜像

  • 拉取镜像 docker pull centos:
    在这里插入图片描述
    在docker拉取镜像时,慢,可以配置镜像加速器
    在这里插入图片描述

  • 在仓库中查看存在的镜像 docker search tomact

  • 删除已下载的镜像 docker rmi 镜像名称/镜像id。
    在这里插入图片描述

  • 创建容器 docker run -i -t --name cl centos /bin/bash
    或者 docker docker -it -name cl centos /bin/bash
    在这里插入图片描述

  • 创建守护式容器:在后台运行 docker run -itd --name c2 centos /bin/bash
    进入守护式容器:docker exec -it c2 /bin/bash
    在这里插入图片描述
    进入守护式容器后,执行exit,容器是不会关闭的,交互式容器会关闭。

  • 查看正在运行的容器 docker ps
    在这里插入图片描述

  • 查看运行过的容器 docker ps -a

  • 查看最后一次运行过的容器 docker ps -l

  • 停止正在运行的容器 docker stop c1

  • 启动一个容器 docker start c1

  • 查看容器中详细内容 docker inspect c1

  • 查看容器的ip地址 docker inspect -f=’{{.NetworkSettings.IPAddress}}’ c1
    在这里插入图片描述

  • 删除容器 docker rm c1,只能删除不在运行的容器,如果在运行则不能删除

  • 文件拷贝 将宿主机上文件拷贝到容器中
    docker cp /data/1.txt c1:/data/wps

  • 文件拷贝,将容器中的文件拷贝到宿主机
    docker cp c1:/data/2.txt /data/wps

  • 目录挂载
    我们可以在创建容器的时候,将宿主机的目录与容器的目录进行映射,这样我们可以通过修改宿主机某个目录的文件,从而影响容器
    创建容器添加-v参数,后面为 宿主机目录:容器目录
    docker run - itd --name c4 -v /opt/:/usr/local/myhtml centos /bin/bash
    在这里插入图片描述

四:docker(二)

课程目标

  • docker 镜像制作
  • docker仓库
  • docker网络管理
  • 搭建docker swarm集群
  • docker compose编排工具
  • docker的web可视化管理工具

4.1 docker镜像制作

docker官方和个人发布的静下心由于版本等各种原因,漏洞较多,另外网络原因也会造成docker pull下载镜像的速度较慢,基于这种情况,我们可以手动定制docker系统镜像,构建镜像的方式有两种

  • 使用docker commitmingl
  • 使用docker build 和Dockerfile文件
4.1.1docker commit

docker commit :提交一个正在运行的容器为一个新的镜像
本例:制作一个tomcat镜像。制作步骤

  • 拉取一个镜像作为基础镜像(基础镜像为centos)
    docker pull centos
  • 创建一个交互式容器
    docker run -it --name mycentos centos /bin/bash
  • 将tomcat和jdk拷贝到容器中
    docker cp /opt/jdk mycentos:/root
    docker cp /opt/tomcat mycentos:/root
    在容器中安装jdk和tomcat,修改jdk环境变量和tomcat配置
  • 将正在运行的容器提交为一个新的镜像
    docker commit mycentos mytomcat
    在这里插入图片描述
    经过上述,docker镜像制作完成
  • 使用方式。基于上述的镜像进行创建容器,并启动里面的tomact

docker run -itd --name=t1 -p 8888:8080 mytomcat /bin/bash
docker exec t1 /usr/loca/apache/tomcate/startip.sh

  • 镜像打包
    在这里插入图片描述
    将创建好的mytomcat跨主机使用
  • 镜像打包(在宿主机中运行)
    docker save -o /root/tomcat7.tar mytomcat
  • 将tar拷贝到其他服务器
    scp
  • 导入镜像
    docker load -i /root/tomcat7.tar
    导入后执行docker images会看到制作好的镜像
    容器打包
  • 容器打包
    docker export -o /root/t1.tar t1
  • 导入容器
    docker import t1.tar mytomcat /bin/bash
4.1.1docker builder

Dockerfiel使用的基本的基于DSL语法的指令来构建一个Docker镜像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
案例:
通过dockerfile构建镜像步骤
1:创建一个目录
2:在目录下创建Dockerfile文件以及其他文件
3:通过docker build构建镜像
4:通过构建的镜像启动容器
例子:

  • 创建文件夹
    mkdir rw_test
  • 创建文件 vim Dockerfile
    在这里插入图片描述
  • 在rw_test目录下构建镜像
    docker build -t rw_nginx --rm=true
    -t : 表示选择指定生成镜像的用户名,仓库名和tag
    –rm=true : 表示指定在生成镜像过程中删除中间产生的临时容器
    注意:上面构建命令中最后的,符号不要漏了,表示使用当前目录下的dockerfile构建镜像
  • 测试
    docker run -t1 -d --name test_nginx -p 8899:80 rw_test /bin/base
    docker exec test_nginx /bin/bash
    通过浏览器访问 http//ip:8099

4.2 Docke仓库

Docker仓库类似于代码仓库,是Docker集中存放镜像文件的地方

4.2.1 docker hub

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.2 阿里云

  • 创建账号
  • 创建命名空间
  • 新建仓库名
  • 在这里插入图片描述

在这里插入图片描述

4.2.3 搭建私有仓库

  • 构建私有仓库
    在这里插入图片描述
    1:
    在这里插入图片描述
    在这里插入图片描述
    2:重命名镜像
    在这里插入图片描述
    3:推送镜像
    在这里插入图片描述
    上述中在推送镜像没有用户名和密码,不安全
  • 配置私有仓库认证
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

5 Doceker网络管理

5.1 默认网络

  • 查看docker网络
    docker network ls
    在这里插入图片描述
    在这里插入图片描述
    docker0负责的是容器和宿主机之间网络通信

5.2 自定义网络

虽然Docker提供的默认网络的使用比较简单,大师为了保证容器中应用的安全性,在实际开发中更推荐使用自定义的网络进行容器管理,在Docker中,可以自定义bridge网络,overlay网络,也可以创建network plugin (网络产检)或者远程网络以实现容器网络的安全定制和控制

5.3.1 网络类型

在这里插入图片描述

5.3.2 自定义网络

在这里插入图片描述

1:创建一个自定义网路,并查看docker network ls
在这里插入图片描述
2:创建一个容器,并指定自定义的网络
在这里插入图片描述
3:docker ps 查看容器是否创建成功
在这里插入图片描述
4:查看容器使用的网络
docker inspect nwtest
5: 为容器添加一个新网络
在这里插入图片描述
在这里插入图片描述
6:移除容器下的网络网络
docker network disconnect isolated_nw nwtest

7:删除自定义网络
docker network rm isolated_nw

5.3 容器间网络通信

1:创建两个使用默认的bridge网络的容器
docker run -itd --name=c1 busybox
docker run -itd --name=c2 busybox
查看一个网络下的使用的容器
docker network inspect bridge
在这里插入图片描述

2:创建一个使用自定义的isolated_nw网络的容器
docker network create --driver bridge isolated_nw
dicker run --network=isolated_nw -itd --name=c3 busybox
3:为容器c2添加新的网络
docker network connect isolated_nw c2
测试

  • 查看容器所占用的ip地址
    docker inspect c1
    在这里插入图片描述
    docker inspect c2
    在这里插入图片描述
    docker inspect c3
    在这里插入图片描述
    经过上述设置,容器之间的网络图如下:
    在这里插入图片描述

在这里插入图片描述
经过上述测试,
c1----c2、c2------c3之间是可以通信的,因为有公用的网络
c1----c3之间是不能通信的

6 搭建docker swarm集群

6.1 swarm

在这里插入图片描述
Swarm 将一群Docker宿主机变成一个单一的,虚拟的主机,Swarm使用标准的Docker API接口作其前端访问入口;
Swarm是一套较为简单的工具,用以管理Docker 集群,使得Docker 集群暴露给用户时,相当于一个虚拟的整体。

在这里插入图片描述

6.2 swarm框架

在这里插入图片描述

7 docker compose编排工具

7.1 docker compose介绍

要想使用docker部署应用,就要现在应用中编写Dockerfile文件来构建镜像,同样,在微服务项目中,我们也需要为每一个服务编写dockerfile文件来构建镜像,构建完成u,就可以根据每一个镜像使用docker run或者docker service create命令创建并启动容器,这样就可以访问容器中的服务
微服务框架中:设计的服务数量众多
虽然上述的方式可以部署微服务项目,但考虑吧到微服务项目可能有多个子服务组成,并且每个服务启动过程中都需要配置额外的参数,这种情况下,每次更新微服务后,都要手动运行指令来重新启动容器。这就比较麻烦
针对这种服务部署的情况,、docker提供了docker compose编排工具来对多服务应用进行统一部署,compose是docker的服务编排工具,主要用来构建基于docker的复杂应用,compose通过一个配置文件来管理多个docker容器,非常适合组合使用多个容器进行开发的场景。
通过该编排工具,可以使用yml或者yaml文件来配置应用程序服务,然后只需要一条简单的服务部署命令就可以从配置中创建并启动所有的服务

7.2 docker compose安装与卸载

在这里插入图片描述

7.2.1 例子

分为三步

  • 编写dockerfile文件,为每个服务构建需要的镜像,方便迁移
  • 编写docker-compose.yml文件,编写部署服务相关指令
  • 运行docker-compose up,启动yml文件
    案例
    1:准备两个镜像
    docker pull mysql:5.7
    docker pull wordpress
    3:编写docker-compose.yml文件
    在这里插入图片描述

8 docker可视化工具

介绍
在这里插入图片描述
使用
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值