相关推荐recommended
Docker随笔
作者:mmseoamin日期:2024-01-19

OverView

为什么需要Docker

Docker随笔,第1张

如果我需要部署一个服务,那么我需要提前部署其他应用栈,不同的应用栈会依赖于不用的操作系统和环境。这样做会产生一些负面影响:

  • 不同版本依赖
  • 较长的部署时间
  • 不同的Dev/Test/Prod环境

    这时我们需要一个工具去解决这样的问题,Docker出现了。

    Docker随笔,image.png,第2张

    Getting Started

    安装:https://docs.docker.com/engine/install/

    Docker随笔,第3张

    常见的操作系统如Suse,Ubuntu,Fedora,CentOS,它们都包含两种事物,OS内核和软件集合。OS内核负责与底层硬件进行交互,软件让这些操作系统产生差异,软件可能包含了不同的用户界面驱动。

    NetWorking

    网络类型

    当我们安装Docker时,它会自动创建三种网络:Bridege,None,Host

    Docker随笔,第4张

    Bridge Network是私有内部网络,所有容器被默认绑定这个网络,并且得到一个内部IP地址,容器可以相互之间进入使用内部IP,为了从外部世界进入这些容器,在Dockers Host映射这些容器的端口。

    另一种外部进入容器方法就是将容器绑定到Host Network上,但这样就意味着你不能运行多个相同端口的容器在相同的Docker Host上。

    Docker随笔,第5张

    None Network,容器没有绑定在任何网络上,不能进入如何外部网络,其他容器也无法访问。它们运行在一个孤立的网络中。

    Docker随笔,第6张

    查看当前系统存在的网络数量

    $ docker network ls
    NETWORK ID     NAME      DRIVER    SCOPE
    6a34bc9fc8e0   bridge    bridge    local
    e1bd4eeb89ea   host      host      local
    cc017d20d8c9   none      null      local
    

    用户自定义网络

    Docker随笔,第7张

    $ docker network create \
    > --driver bridge \
    > --subnet 182.18.0.0/16 custom-isolated-network
    34c7ef396c52c8cd86c7f927f56d2aabe2384e1fbd42c018056d124ff8138312
    $ docker network ls
    NETWORK ID     NAME                      DRIVER    SCOPE
    6a34bc9fc8e0   bridge                    bridge    local
    34c7ef396c52   custom-isolated-network   bridge    local
    e1bd4eeb89ea   host                      host      local
    cc017d20d8c9   none                      null      local
    

    Embedded DNS

    容器也可以相互到达使用它们的名字,举个例子,目前拥有一个App服务和一个mysql数据库容器运行,我们可以使用Mysql服务的内部IP进行数据库访问,但这个方法不推荐,因为当系统重启时,服务的内部IP不一定一直不变,所以可以使用 DNS Server

    Docker随笔,第8张