网站被黑应该怎么做,注册域名网站备案,dede网站仿站经典工具,免费封面设计在线制作生成docker网络
docker是以镜像一层一层构建的#xff0c;而基础镜像是linux内核#xff0c;因此docker之间也需要通讯#xff0c;那么就需要有自己的网络。就像windows都有自己的内网地址一样#xff0c;每个docker容器也是有自己的私有地址的。 docker inspect [docker_ID]…docker网络
docker是以镜像一层一层构建的而基础镜像是linux内核因此docker之间也需要通讯那么就需要有自己的网络。就像windows都有自己的内网地址一样每个docker容器也是有自己的私有地址的。 docker inspect [docker_ID] Docker内地址是B类地址比192开头的数量多。 docker有三种网络模式bridge是桥接模式是在docker引擎虚拟一个网卡为每个docker容器分配一个ipdocker默认就是这种模式host相当于NAT模式就是共享主机ipdocekr服务没有自己的ip公用主机的ip地址然后通过分配端口来区分不同的服务进而通讯在该模式下服务是docker容器私有的端口是公开的。例如主机ip是192.168.42.128那么docker1服务占用了80端接口主机就不能在使用80端口。启动容器docker run不需要端接口映射端口公共公开的。第三种none用户自己DIY 。 参考Docker四种网络模式
网络服务
拉取一个nginx镜像 启动容器 对于nginx服务首先是要能够在本机上访问的对于回溯地址127.0.0.1和本机内网ip192.168.42.128都能访问才对如下所示 网络一般通过套接字访问私网和公网通过NAT转接。
内网和外网之间的通信端口映射原理
当内部网络服务设置端口后外部需要访问该服务也需要通过该端口完成。那么对于docker来说其自己桥接分配的ip如172.17.0.2也应该可以访问如下 因此docker服务就可以通过桥接分配的自己的IP实现访问docker内部的ip是由docek0网卡分配所以docker的ip是可能发生变化的那么在访问是就无法确定ip和容器的对应关系在构建容器时无法确定具体的ip只能创建成功后查看所以不能仅仅通过ip确定容器。
容器名称一般是规定的容器ip是docker0自动分配的那么可以通过容器名的映射来获取服务即使容器宕机重构容器容器名不变也还是访问原来的服务。
docker通过docker --link自定义网络就可以实现通过容器名访问容器服务无需将ip固定。https://docs.docker.com/network/links/ 官方文档上显示要移除了有兴趣可以去官网查看。
容器编排
docker compose介绍
主机的docker引擎上可以启动若干个容器而每个容器之间是相互独立的那么就在运维时就需要对这些若干个容器独立管理。这显然是个棘手的事情。Docker Compose是一个单机容器的管理工具管理主机上的所有容器提供相应命令包括整个集群容器的启动运行和停止。Docker Swarm和Kubernetes是跨主机的容器容器管理平台。 学过spring的肯定都知道IOC容器compose就是类似的功能能管理各个容器又能保证容器的独立性。 Compose 使用的三个步骤 使用 Dockerfile 定义应用程序的环境。 使用 docker-compose.yml 定义构成应用程序的服务这样它们可以在隔离环境中一起运行。 最后执行 docker-compose up 命令来启动并运行整个应用程序。
下载和安装
参考文档
官方文档
github下载docker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composev2.17.2是版本可以更换compose和docker引擎对应的版本。 # 授予目录权限sudo chmod x /usr/local/bin/docker-composesudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-composedocker-compose --version如果上面命令拒绝访问切换超级用户。 显示docker-compse版本后就表示安装成功了。 高版本的docker会自动下载docker compose如 下载的dokcer24.0.4版本中就自动安装了docekr compose。 docker compose最终要的就是docker-compose.yml和Dockerfile前者定义所有容器的编排后者定义单个容器的服务。
Dockerfile就不再介绍了直接上docker-compose.yml其是一种yml配置文件对容器编排配置然后通过docker-compose up启动服务群。 配置文件
官方语法
Docker Compose 的 YAML 文件包含 4 个一级 key是version、services、networks、volumes。
version是必须指定的而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是 API)的版本。注意version 并非定义 Docker Compose 或 Docker 引擎的版本号。
services用于定义不同的应用服务。Docker Compose 会将每个服务部署在各自的容器中。
networks用于指引 Docker 创建新的网络。默认情况下Docker Compose 会创建 bridge 网络。 这是一种单主机网络只能够实现同一主机上容器的连接。当然也可以使用 driver 属性来指定不 同的网络类型。
volumes用于指引 Docker 来创建新的卷。
第二级参数如下 Docker和Docker Compose关系及应用
菜鸟教程
如下所示通过docker-compose.yml启动两个容器redis服务并部署一个·基于go的web项目实现对redis的操作yml文件如下
version: 3
services:go-web:image: go-web:1.0container_name: gowebports: - 8000:8000depends_on: - redisredis:image: redisports:- 6379:6379command: redis-server /etc/redis/redis.conf
基于go项目构建的dcoker镜像的Dokcerfile文件
FROM ubuntuEXPOSE 8000
RUN sed -i s#http://archive.ubuntu.com/#http://mirrors.tuna.tsinghua.edu.cn/# /etc/apt/sources.list
RUN apt updateWORKDIR /usr/local/goCOPY main index.html .ENTRYPOINT [./main] go项目打包后就是二进制文件不需要配置go环境。 Dockerfile构建完镜像后通过docker compose up -d启动两个容器如下图 两个服务启动 微软官方教程
k8s
k8s系列文章第五篇docker-compose
kubernetes容器技术系列