Docker随笔

2024-01-07 18:33:10

OverView

为什么需要Docker


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

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

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

Getting Started

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

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

NetWorking

网络类型

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

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

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

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

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

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

用户自定义网络

$ 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

文章来源:https://blog.csdn.net/weixin_51882166/article/details/135389209
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。