摘要:
示例:创建一个点到点连接 默认情况下,Docker 会将所有容器连接到由 docker0 提供的虚拟子网中。 用户有时候需要两个容器之间可以直连通信,而不用通过主机网桥进行桥接。 解决办法很简单:创建一对 peer 接口,分别放到两个容器中,配置成点到点链路类型即可。 首先启动 2 个容器: 找到进 阅读全文
摘要:
自定义网桥 除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器。 在启动 Docker 服务的时候,使用 -b BRIDGE或--bridge=BRIDGE 来指定使用的网桥。 如果服务已经运行,那需要先停止服务,并删除旧的网桥。 然后创建一个网桥 bridge0。 查看确认网桥创建 阅读全文
摘要:
配置 docker0 网桥 Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。 Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间 阅读全文
摘要:
映射容器端口到宿主主机的实现 默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。 容器访问外部实现 容器所有到外部网络的连接,源地址都会被 NAT 成本地系统的 IP 地址。这是使用 iptables 的源地址伪装操作实现的。 查看主机的 NAT 规则。 其中,上述规则将所有 阅读全文
摘要:
快速配置指南 下面是一个跟 Docker 网络相关的命令列表。 其中有些命令选项只有在 Docker 服务启动的时候才能配置,而且不能马上生效。 -b BRIDGE 或 --bridge=BRIDGE 指定容器挂载的网桥 --bip=CIDR 定制 docker0 的掩码 -H SOCKET... 阅读全文
摘要:
配置 DNS 如何自定义配置容器的主机名和 DNS 呢?秘诀就是 Docker 利用虚拟文件来挂载容器的 3 个相关配置文件。 在容器中使用 mount 命令可以看到挂载信息: 这种机制可以让宿主主机 DNS 信息发生更新后,所有 Docker 容器的 DNS 配置通过 /etc/resolv.co 阅读全文
摘要:
如果你之前有 Docker 使用经验,你可能已经习惯了使用 --link 参数来使容器互联。 随着 Docker 网络的完善,强烈建议大家将容器加入自定义的 Docker 网络来连接多个容器,而不是使用 --link 参数。 新建网络 下面先创建一个新的 Docker 网络。 -d 参数指定 Doc 阅读全文
摘要:
外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。 使用 docker container ls 可以看到,本地主机的 49 阅读全文
摘要:
后台运行 更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。 下面举两个例子来说明一下。 如果不使用 -d 参数运行容器。 容器会把输出的结果 (STDOUT) 打印到宿主机上面 如果使用了 -d 参数运行容器。 此时容器 阅读全文
摘要:
USER 指定当前用户 格式:USER <用户名>[:<用户组>] USER 指令和 WORKDIR 相似,都是改变环境状态并影响以后的层。WORKDIR 是改变工作目录,USER 则是改变之后层的执行 RUN, CMD 以及 ENTRYPOINT 这类命令的身份。 当然,和 WORKDIR 一样, 阅读全文
摘要:
WORKDIR 指定工作目录 格式为 WORKDIR <工作目录路径>。 使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会帮你建立目录。 之前提到一些初学者常犯的错误是把 Dockerfile 等同于 Shel 阅读全文
摘要:
EXPOSE 声明端口 格式为 EXPOSE <端口1> [<端口2>...]。 EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。在 Dockerfile 中写入这样的声明有两个好处,一个是帮助镜像使用者理解这个镜像服务的守护端口 阅读全文
摘要:
ARG 构建参数 Dockerfle文件的重用 格式:ARG <参数名>[=<默认值>] 构建参数和 ENV 的效果一样,都是设置环境变量。 所不同的是,ARG 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。 但是不要因此就使用 ARG 保存密码之类的信息,因为 docker 阅读全文
摘要:
1、CMD 最终会被解析成:["cmd","arg1","arg2"] 可以在运行时被覆盖 2、ENTRYPOINT 最终解析成 ["cmd","arg1","arg2"] 联合CMD使用时,CMD后面的内容将作为参数传递给ENTRYPOINT后面的命令(可以在内部访问) 运行覆盖需要-entryp 阅读全文
摘要:
考虑的因素: 源代码 下载编译后 打包为镜像 发布到镜像库 利用K8S发布到物理机器运行,以服务的形式对外提供服务 目前的做法 0、建立一个执行远程命令的框架 1、每个应用建立一个部署文件脚本 A、指定元代码地址 B、下载源代码到本地 C、同步源代码到目标主机 D、接受脚本参数: appname=$ 阅读全文