Docker 系列(三):Docker 基础

一. DockerFile

Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

举一个简单的定制例子,我们创建一个文件 DockerFile,写入如下

FROM nginx
RUN echo '

Hello, Docker!

'
> /usr/share/nginx/html/index.html

这样我们就完成了对一个nginx镜像的定制,这样我么启动定制的镜像,访问该镜像的 nginx 服务应该得到 Hello, Docker! 的输出。


使用DockerFile 定制镜像


二. Docker 网络 !!!

Docker 网络是一个非常重要的概念,我们深入学习 Docker 的话会发现以后的 CI/CD、集群部署等操作都离不开 Docker 之间的网络通信,所以说学好 Docker的网络基础和原理是非常重要的。


当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。

同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1,掩码为 255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。


Docker 网络原理与 Docker 的高级网络配置

1. 基础:从外部访问 Docker 容器

  • 在使用 docker run 命令的时候,可以使用两个参数,将宿主机的端口与 docker 开放的端口绑定,分别是 -p-P

  • 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。

  • 当使用-p 则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器。

  • 绑定的时候可以指定 IP 地址,也可以指定 端口,不指定宿主机端口的话 Docker 会随机分配。

[root@undi]# docker run -p 8080:80 nginx          
#将宿主机的 8080 端口绑定到容器的 80 端口上,这样访问宿主机的 8080 端口时,就会转发到容器的 80 端口上
[root@undi]# docker run -p 127.0.0.1::80 nginx
#将宿主机的 127.0.0.1:随机一个端口 绑定到容器的80端口上

2. 查看容器绑定的端口

  1. 使用 docker ps -a 列出所有容器,在这里能看到容器所绑定的端口。
  2. 使用 docker post 容器名 可以查看该容器绑定的 IP。
  3. 使用 docker inspect 容器名 可以看到所有变量。
[root@undi]# docker port bloomfilter
6379/tcp -> 0.0.0.0:6379

3. 容器之间的互联

第一种方式是使用 --link 参数,但是现在并不推荐使用这种方式进行连接,他的原理是在容器内的 host 文件中加入映射关系,不仅移植性差,反过来还不行了,墙裂推荐大家加入自定义网络来链接多个容器,就像我们玩虚拟机时候的虚拟网卡一样。


新建网络

下面命令新建一个 新的 Docker 网络

$ docker network create -d bridge my-net

-d 参数指定 Docker 网络类型,有 bridge overlay。其中 overlay 网络类型用于 Swarm mode,在这里可以忽略它。


连接容器

运行一个容器并连接到新建的 my-net 网络

$ docker run -it --rm --name busybox1 --network my-net busybox sh

打开新的终端,再运行一个容器并加入到 my-net 网络

$ docker run -it --rm --name busybox2 --network my-net busybox sh

此时我们有两个容器 busybox1busybox2,随便进入一个容器,ping 另一个容器测试成功,反过来测试也是没问题的

# ping busybox2
PING busybox2 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms

三. Intellij Idea 整合Docker

狂老师的免费视频,2020-05-16 13:37:32发布的视频,还是挺新的

因为视频是录播,没有剪辑,所以狂哥打错字或者纠结的时间有点多,建议倍速,干货是有的。


欢迎指正,转载请注明出处
首次发布时间 2020-06-03
最后更新时间 2020-06-03

基于Halo 搭建的个人博客:https://undivided.top
不太想用但是流量很 HI 多的 CSDN
我的简书

你可能感兴趣的:(Docker,docker)