侧边栏壁纸
博主头像
再见理想博主等级

只争朝夕,不负韶华

  • 累计撰写 112 篇文章
  • 累计创建 64 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Docker 从这里开始

再见理想
2022-05-26 / 0 评论 / 0 点赞 / 319 阅读 / 1,050 字

一,Docker 概述

Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案, 用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。 Docker 的基础是 Linux 容器(LXC)等技术。

二,关键技术点

1,镜像创建

可以通过docker commit;更重要掌握编写 Dockerfile 文件,通过Dockerfile 创建镜像,运行镜像,并上传到阿里云;

2,容器目录的挂载

命令:-v。有以下几种挂载方式:匿名挂载、具名挂载和 具体路径挂载。挂载后,宿主机和容器挂载目录下的所有文件会进行双向同步
常用场景:

  • 挂载配置文件,方便在运行时,可以动态的修改默认配置;
  • 将日志文件挂载到宿主机指定目录,方便查看与操作;

3,Docker 网络

只要安装了 docker,就会分配到一个 docker0 的网络,启动容器时如果不指定网络,默认使用docker0 的网络。
docker0 使用的是 evth-pair 桥接的技术,evth-pair 相当于一个桥梁,docker0 网络下的不同容器间可以通过容器 ip 相互连接!但不能通过容器名连接,容器如果重启,ip更新后会导致容器连接不上,要重新配置,局限较大。
如果想要通过容器名,我们可以不使用 docker0 网络,选择自定义网络!
这是,如果 docker0 网络下的容器想要连通自定义网络下的容器,可以使用 docker network connect 命令将容器加入到自定义网络中,同时拥有 docker0 网络和自定义网络。

4,Docker-Compose

Docker-Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排,通过docker-compose.yml 配置文件快速启动一组容器;每个Docker-Compose 项目都会创建一个对应默认的网络!
需要注意的是,Docker-Compose 适用于单机模式,不适应于集群部署。

5,Docker Swarm

docker swarm 可以让 n 台机器组成一个集群,在这个集群中部署的服务 service,可以相互连接(overlay技术)、动态更新、动态扩缩容,灰度发布等!

三,docker 大纲:

  • VOLUME 数据卷
    • 匿名挂载
    • 具名挂载
    • 具体路径挂载
  • Dockerfile
    • 命令
      • From
      • MAINTAINER
      • ENV
      • ADD
      • COPY
      • RUN
      • VOLUME
      • EXPOSE
      • ONBUILD
      • CMD
      • ENTRYPOINT
    • 构建镜像:
      • 编写一个 Dockerfile 文件;
      • docker build 命令构建镜像;
      • docker run 命令运行镜像;
      • docker push 发布镜像到阿里云;
  • Docker 网络
    • docker 0
      • docker 使用的是 linux 的桥接,宿主机中是一个 Docker 容器的网桥 docker0;
      • docker 中所有的网络接口都是虚拟的,转发效率高;
      • docker 容器一删除,对应的网桥也被删除;
    • 网络模式
      • bridge(默认)
      • none
      • host
      • container
      • 自定义网络
    • 自定义网络
      • 好处
        • 功能比 docker0 更完善,也可以通过容器名连接;
        • 不同的集群可使用不同的网络,保证集群的安全和健康;
      • 实现步骤
        • 创建自定义网络 docker network create
        • 指定网络启动容器 docker run --net mynet
    • 不同网络间容器连通
      • 原理:将不同网络的容器A加入到自定义网络下。此时,容器A同时拥有2个ip。
      • 命令:docker network connect

四,疑问点

1,Dockerfile 创建java 服务镜像时,想要将日志文件输出至指定容器内文件夹并挂载到宿主机,这种方式没找到如何实现。

0

评论区