docker 配置环境变量怎么配置nginx工作环境

ylw6006 的BLOG
用户名:ylw6006
文章数:233
评论数:724
访问量:1585435
注册日期:
阅读量:5863
阅读量:12276
阅读量:331268
阅读量:1037839
51CTO推荐博文
Docker是时下相当火热的技术,关于docker的介绍此处就不多说,本文主要介绍下如何在centos6.6环境下配置docker的本地仓库,对于想在局域网内大规模运用docker来说,频繁的从官网仓库下载镜像文件,无论从管理还是在效率上都无法接受。一:以容器的方式运行服务初次运行,本地不存在的,会自动从官方网站上下载一份,速度较慢#&docker&run&-idt&-p&&--name&registry&-v&/data/registry:/tmp/registry&registry二:配置#&/usr/local/nginx/sbin/nginx&-V#&cat&/usr/local/nginx/conf/extra/docker.conf&
#&For&versions&of&Nginx&&&1.3.9&that&include&chunked&transfer&encoding&support
#&Replace&with&appropriate&values&where&necessary
upstream&docker-registry&{
&server&127.0.0.1:5000;
&listen&&443;
&server_name&&;&&
&ssl_certificate&&&&&/etc/ssl/certs/nginx.
&ssl_certificate_key&/etc/ssl/private/nginx.
&proxy_set_header&Host&&&&&&&$http_&&&#&required&for&Docker&client&sake
&proxy_set_header&X-Real-IP&&$remote_&#&pass&on&real&client&IP
&client_max_body_size&0;&#&disable&any&limits&to&avoid&HTTP&413&for&large&image&uploads
&#&required&to&avoid&HTTP&411:&see&Issue&#1486&(/dotcloud/docker/issues/1486)
&chunked_transfer_encoding&
&location&/&{
&&&&&#&let&Nginx&know&about&our&auth&file
&&&&&auth_basic&&&&&&&&&&&&&&"Restricted";
&&&&&auth_basic_user_file&&&&docker-registry.
&&&&&proxy_pass&http://docker-
&location&/_ping&{
&&&&&auth_basic&
&&&&&proxy_pass&http://docker-
&location&/v1/_ping&{
&&&&&auth_basic&
&&&&&proxy_pass&http://docker-
}三:配置证书和密码文件1:生成根密钥#&cd&/etc/pki/CA/
#&touch&./{serial,index.txt}
#&echo&"00"&&&serial
#&openssl&&genrsa&-out&private/cakey.pem&20482:生成根证书#&openssl&&req&-new&-x509&-key&private/cakey.pem&-days&3650&-out&cacert.pem3:生成的和证书请求文件#&cd&/etc/ssl/
#&openssl&genrsa&-out&nginx.key&2048
#&openssl&&req&-new&-key&nginx.key&-out&nginx.csr4:私有根据请求来签发证书#&openssl&ca&-in&nginx.csr&-days&3650&-out&nginx.crt#&cp&/etc/pki/tls/certs/ca-bundle.crt{,.bak}&
#&cat&/etc/pki/CA/cacert.pem&&&&/etc/pki/tls/certs/ca-bundle.crt&&#因为是自签的证书,此步骤的意义在于让系统接受该证书5:复制生成的证书文件到相应位置#&cp&nginx.crt&&certs/
#&cp&nginx.key&&private/6:使用工具创建密码文件#&yum&-y&install&httpd-tools
#&htpasswd&-c&/usr/local/nginx/conf/docker-registry.htpasswd&yang
New&password:&
Re-type&new&password:&
Adding&password&for&user&yang
#&htpasswd&/usr/local/nginx/conf/docker-registry.htpasswd&lin
New&password:&
Re-type&new&password:&
Adding&password&for&user&lin四:启动#&/usr/local/nginx/sbin/nginx&&-t
#&/usr/local/nginx/sbin/nginx&
#&netstat&-ntpl&|grep&nginx五:测试1:本地测试push#&docker&login&-u&yang&-p&123&-e&&
#&docker&images
#&docker&tag&registry&/registry:v2
#&docker&push&/registry:v22:其他客户端测试和#&tail&-1&/etc/hosts
192.168.1.12&&&&
#&scp&/etc/pki/CA/cacert.pem&root@192.168.1.227:/root
#&cp&/etc/pki/tls/certs/ca-bundle.crt{,.bak}
#&cat&cacert.pem&&&&/etc/pki/tls/certs/ca-bundle.crt
#&curl&-u&yang:123&&/v1/search
#&service&docker&restart
#&docker&&login&-u&yang&-p&123&-e&&&
Login&Succeeded
#&docker&&images
#&docker&tag&centos6&/centos6
#&docker&push&/centos6#&docker&&pull&/registry:v2异常处理:#&scp&&/etc/pki/CA/cacert.pem&root@192.168.2.227:/root
#&cat&cacert.pem&&&&/etc/ssl/certs/ca-bundle.crt参考:本文出自 “” 博客,谢绝转载!
了这篇文章
类别:┆阅读(0)┆评论(0)
11:40:25 09:06:58 16:51:03 17:28:40 17:29:50酷勤网 C 程序员的那点事!
当前位置: >
浏览次数:次
5月份的时候,当我还是一个大学生的时候,有个网友问我,你有研究Docker吗?当时我连Docker是什么都不知道。谷歌之后,对Docker产生兴趣,但是一直没有时间去学习。这个周终于将这个学习计划列入了Todolist。所以我花了3天时间,认真地把这看完并实践了一遍,收获颇丰。虽然我的导师以及我自己还是觉得我在瞎转,而且我觉得没有方向的日子很痛苦。所以只好自己做计划,学习点新知识,打打基础了。本篇内容主要介绍什么是Docker、Docker简单入门以及如何使用Docker部署SDN环境,以及docker的网络配置等内容。What is Docker和Why Docker部分摘自《Docker从入门到实践》。
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。Redhat 已经在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 产品中广泛应用。
Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技术。
下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。
图1:Docker和虚拟机对比
首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
具体说来,Docker 在如下几个方面具有较大的优势。
更快速的交付和部署
对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。
更高效的虚拟化
Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
更轻松的迁移和扩展
Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。
更简单的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
Docker简单入门
谷歌出来的教程实在太多了。所以我也不打算太多介绍,只讲一些我觉得对于网络研究人员而言比较有用的命令。
镜像(Image):镜像是一个只读模板。用户上传制作好的镜像供其他人下载使用。用户可以基于镜像去创建Container。 容器(Container):容器可以理解为一个隔离起来的linux环境,用于运行应用,Namespace可以帮助你理解。 仓库(Repository):如果你会使用Git/Github的话,不难理解,就是用于存放镜像的场所。
Docker安装
本文的实验环境是Ubuntu14.04-amd64。非常需要注意的一点是,目前Docker只支持64位机器。Ubuntu14.04安装方式有两种:1)通过系统自带包安装和2)通过Docker源安装。推荐第二种方式,能安装比较新的版本。
sudo apt-get install apt-transport-https
sudo apt-key adv --keyserver hkp://:80 --recv-keys 36A1D0F966E92DD21E9
sudo bash -c &echo deb https://get.docker.io/ubuntu docker main & /etc/apt/sources.list.d/docker.list&
sudo apt-get update
sudo apt-get install lxc-docker
首先,推荐到注册帐号,这样可以向使用Git/Github那样使用Docker/Dockerhub。注册和登陆可通过如下命令完成:
docker login
注册之后,可以通过如下命令进行搜索,如搜索ryu:
docker search ryu
可以从搜索结果中的Star来确定资源的好坏,从而找到合适的images,如muzixing/ryu。然后使用如下命令,将其拉到本地:
docker pull
muzixing/ryu
下载完成后,可以通过如下命令查看已存在的images
docker images
图2:images
创建容器使用示例如下,-t=tty, -i=interactive, -d=debug, -p=port, --name可以用于命名container。 其他的命令可以通过--help来查看。
docker run -i -t --name &name& muzixing/ryu:SDN
如果你需要对端口映射,或者网络配置方面的设置,还需要仔细去查看手册。举例如下:
docker run -i -t -p
&ip&:&host port&:&container port&
--name &name& muzixing/ryu:SDN
以上命令创建并运行了一个名字叫的container,并且将容器内部的端口port映射到主机的某个port,完成了端口映射,允许外网访问容器。这是容器与外界通信的方式之一。如果希望永久绑定到某个固定的 IP 地址,可以在 Docker 配置文件 /etc/default/docker 中指定 DOCKER_OPTS=&--ip=IP_ADDRESS&,之后重启 Docker 服务即可生效。设置网络访问的参数默认是 --icc=ture,如果--icc=false,则禁止网络访问。
查看容器:
docker ps [-opt]
-a为全部容器。
查看打印信息可以通过:
dokcer logs &name&
暂停容器:
docker stop &name&
开启暂停的容器:
docker start &name&
重启容器:
docker restart &name&
有时候我们开启了容器,但是没有开窗口,在后台运行,可以通过一下命令进入容器:
docker attach &name&
部署SDN控制器RYU
首先获取镜像:
docker pull
muzixing/ryu
然后创建容器,并将容器的6633端口绑定到主机的6633端口。
docker run -i -t -p
--name ryu3.15 muzixing/ryu:SDN
进入容器之后,运行ryu.
在另一个能ping通运行容器主机的机器上运行mininet.
图3:mininet运行图
从上图可以看出控制器IP是172.16.192.128。这个IP地址的主机网卡信息如下:
图4:Host地址信息
从图上可以看出,与mininet通信的是主机(实际情况下会是某台服务器)eth0的地址。但是从下面的图中看出运行的RYU地址是172.17.0.5。为什么可以通信呢?
图5:容器信息
因为做了端口映射,将主机的所有接口的6633端口的地址都转发到容器172.17.0.5的6633端口,从而完成数据通信。其实现的原理是:Docker在启动之后,会创建一个docker0的网桥,从图4可以看到。然后还会创建veth pair。其中一端挂载在网桥上,如图4的vethba5f9f3,另一端是容器的网卡eth0,此案例中是172.17.0.5的网卡。其实这相当与一个link。原理图如下:
图6:Docker网络通信原理
在运行容器的主机上使用iptables命令查看nat规则:
图7:iptables查看NAT。
同理mininet,或者其他的应用程序也可以使用容器部署,不再赘述,读者可自行尝试。
首先需要将部署了应用的容器导出为tar文件。可以使用docker export container & file 命令。举例如下:
docker export ryu3.15 & ryu.tar
然后使用docker import命令将其导入为镜像:
cat ryu.tar | sudo docker import - muzixing/ryu:sdn
以上命令为读取ryu.tar 将其导入成muzixing/ryu:sdn的image。完成之后可通过docker images查看。
确保无误之后,可将其推送到Dockerhub。
docker push muzixing/ryu
读者也可以尝试更好的自动创建方式。
我们完全可以将Docker理解成一个独立的主机,可以对其网络进行配置,如配置DNS,iptables等。可以通过启动时配置,也可以通过修改文件的方式配置。
-b BRIDGE or --bridge=BRIDGE --指定容器挂载的网桥
--bip=CIDR --定制 docker0 的掩码
-H SOCKET... or --host=SOCKET... --Docker 服务端接收命令的通道
--icc=true|false --是否支持容器之间进行通信
--ip-forward=true|false --请看下文容器之间的通信
--iptables=true|false --禁止 Docker 添加 iptables 规则
--mtu=BYTES --容器网络中的 MTU
文件配置则如同正常的主机配置,进入到/etc/目录下,修改制定文件即可。同样的,Dokcer可以配置网络链接的网桥,可以不选择docker0网桥,而选择其他网桥,如使用brctl创建的网桥,或者使用OpenvSwitch创建的网桥,具体操作不再赘述。
工欲善其事,必先利其器。Docker可以允许我们更灵活地使用资源,并且可以很方便地迁移环境。比如以后需要安装RYU的同学就不需要再去关注,为什么six版本不够?为什么gcc报错这些问题了。只需要有一台64位的机器,然后安装docker,理论上是不会有错的。然后将镜像下载下来,创建并运行容易,就可以得到ryu控制器运行的环境。同理Nginx,Tornado和MySQL等软件也可以直接获取,而不需要自己安装配置环境。这大大加快了生产环境的部署,也显著提高了资源的利用率,个人认为将在未来对虚拟机产生强烈的冲击。
& 相关主题:使用Docker在生产环境部署应用 - 推酷
使用Docker在生产环境部署应用
本文来自DockerOne,阅读原文请点击文末的阅读原文链接。
Docker是现在开发应用程序的不错选择;因为对于一个研发组来说,部署一个应用再也不用像以前那样繁琐的修改、设置配置文件了;因为对于Docker来说它“屏蔽”了应用程序的运行环境,不管你使用Mac、Linux还是Windows都能用相同的方式运行。
但是,当你使用Docker将应用部署到生产环境时,你会觉得Docker还是有些“弱”,至少从Ruby On Rails(ROR)的角度出发是这样的。当我查找与测试了很多不同的部署方法与Docker镜像后发现
:确实没有一个确切而且标准的部署方案。在这篇文章中我会分享一种生产环境部署ROR应用的最佳实践。
在实际操作之前,我们列举生产环境部署应用的标准:
:部署应用本身应该十分简单,不然部署新程序的过程会变得十分“恐怖”。
零服务中断
:让我们面对它——零服务中断部署ROR应用程序已经成为当今的标准。
自动化部署
:我更习惯把代码推送到代码仓库,然后使用Codeship这样的工具自动测试,测试通过后自动将代码部署到生产环境的服务器。我希望Docker能完成相同的工作。
就像之前我说过的,我希望部署过程越简单越好。如果你看过Docker:Part4这个视频,可能对以下命令有所熟悉,它启动了一个叫db的容器(跑postgres数据库),之后又启动了一个叫web的容器,最后将容器“web”跟容器“db”连接起来。
$ docker run -d –name db training/postgres
$ docker run -i -t –name web –link db:db -p 45000:80
当然如果你照着这么做来部署程序,当你敲了很多次这样的命令后,而且保证不遗漏的敲了很多次这种命令后,你会发现这是个“坑爹的”噩梦。这就是为什么会有Fig的原因。
如 果你用Dockerfile来定义如何生成你的容器,那么Fig则可以帮你定义整个容器的运行框架。Fig将“添加数据卷(add volumes)”、“连接容器”(link container)与“映射端口”等操作都封装到一个YAML的描述文件中;如同前面提到的CodeTV中描述的那个操作在Fig中简化成如下形式:
- “80:80″
image: postgres
- “5432″
- /etc/postgresql
- /var/log/postgresql
- /var/lib/postgresql
我 在YAML中定义了两个容器:web与db;容器web生成自当前文件夹下的Dockerfile,向外暴露了80号端口,同时链接到了容器db。容器 db生成自DockerHub的postgreSQL镜像,向外暴露5432号端口。使用此YAML配置文件,fig可以用以下命令生成容器,然后依照配 置文件的意图启动它们。
$ fig build
$ fig up -d
Fig会先启动被链接的容器db,这样容器web就不至于连不上数据库。-d参数表示以后台运行的方式启动容器,这样可以保证用户登出操作系统后,容器任然在运行。您可以登录Fig的官方网站获取更多的配置信息。
现在我们可以很容易的启动一个Docker容器,但是怎么在生产环境下部署Docker容器呢?如果在生产环境下安装了Fig与Docker,我们所有要做的就是克隆之前的容器镜像,然后用相同的fig命令来启动容器。但是,现在的问题是如何更新线上运行的容器。
不幸的是,Fig可以非常优雅的启动一个容器,但是它并不擅长更新并重启服务。
当然,你可以在代码仓库拉取程序的更新,然后重新运行以上的fig命令来达到这个目的;但是,在容器在更新代码,重新启动的过程中,就不能对外提供服务了。为了应对这种情况,我们使用原生的Docker命令,并引入Nginx做反向代理(注:软负载)来解决这个问题。
我们首先把容器监听的端口修改掉,因为Nginx需要监听80号端口。我们这么修改:
- “8080:80″
通过修改Fig的配置文件,我们的web容器修改成监听8080号端口。而Nginx要配置成端口的负载均衡;所以Nginx的配置如下:
upstream docker {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
listen 80;
location / {
proxy_pass http://
重启Nginx后,Nginx就开始在号端口之间做反向代理(软负载);当其中任何一个端口失效后,Nginx将请求自动转发到另一个,直到失效后的端口恢复。这样,
我们就能从Git中拉取更新,然后运行下面的命令将其启动
$ docker run -d –name web1 –link codetvjournal_db_1:db -p 8081:80 codetvjournal_web:latest
当我们确定8081号端口的web1容器启动并服务正常后,我们就可以停止8080号端口的服务并开始为8080号端口服务进行更新了。
我推荐使用原生的docker命令而不使用Fig来完成这个工作,因为这样可以避免干扰到正在运行的db容器(注:作者可能指的是之前写好的YAML,里面包含了启动db容器的配置)。
我们可以用上述方法创建很多个web容器,只要保证它们占用的端口与容器名不同即可;同时使用Nginx在它们前端做负载即可实现不掉线的程序升级。
那么问题又来了,怎么将上述的更新流程自动化运行呢?有两个方式可以达到:
将容器更新、启停、切换等操作封装到一个单一的脚本中
,这个脚本可以加入到传统的上线流程(注:新代码拉取,自动测试,自动部署的流程,作者称之为deployment pipeline)之后执行;
另一种方式是
,使用类似Consul或者etcd等的发现服务来管理容器的更新,启停,与发现;这会更加“高大上”。
所以,使用Docker在生产环境中部署服务不像你想象中那么容易。我推荐大家试试上面所说的方法;同时分享你自己的实践经验给大家,这会帮助大家一同使用Docker。Docker还是个很年轻的产品,同时又是个非常热门的产品,它肯定会在未来不断的演化升级。
================================================
对本微信的支持。
Coding.net
是一个面向开发者的云端开发平台,目前提供代码托管、运行空间、质量控制、项目管理等功能。
是国内领先的云服务提供商,专注于提供静态文件的云存储、云处理和CDN加速服务。现在注册,即可免费体验!
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致Docker提供了多个容器直接访问的方法,最简单的方式是直接使用端口映射-p参数指定映射的端口或者-P映射所有端口,多个容器直接通过网络端口进行访问。
但网络端口映射方式并不是Docker中连接多个容器的唯一方式,还可以使用Docker的连接系统(--link)连接多个容器,当容器连接到一起时,接受者容器就可以看到源容器的信息。
建立容器之间的连接 - 以Nginx+PHP为例
在容器直接建立连接要使用--link选项
--link &name or id&:alias
这里我们通过建立一个
的服务,示例一下如何在两个或者多个容器之间建立连接。
要建立容器连接的话,就要依赖容器的名字了,使用--name指定源容器的名字为phpfpm
docker run --name phpfpm -d -v /Users/mylxsw/codes/php:/app php:5.6-fpm
接下来创建nginx容器,并且连接到phpfpm容器上去
docker run --name nginx_server -d -p 80:80 --link phpfpm:phpfpm -v /Users/mylxsw/Dockers/php/nginx.conf:/etc/nginx/nginx.conf --volumes-from phpfpm
这里通过--link选项指定了要连接的容器是phpfpm,并且使用--volumes-from phpfpm将phpfpm容器挂载的卷也挂载到了nginx容器上,另外,这里使用自定义的nginx配置文件(nginx.conf)覆盖了原先的配置,新的
内容如下:
/ # 这里设置了项目挂载的容器的根目录
location ~ \.php$ {
fastcgi_pass
phpfpm:9000;# phpfpm访问地址
需要注意的是,在该配置文件中设置了服务器的根目录(root)为/app目录,也就是我们挂载的目录,另外是phpfpm的配置,我们将fastcgi_pass的值从127.0.0.1:9000改为了phpfpm:9000,这里的phpfpm是域名,在nginx容器的/etc/hosts文件中自动配置为phpfpm容器的访问IP。
容器互通信息
建立两个容器之间的连接之后,在接收容器(Recipient)中必然会需要访问源容器(Source)的资源,我们在为容器建立连接时,源容器在创建时并没有使用-p/-P指定要暴露出来的端口,因此如何访问源容器的信息呢?
为了可以让接收容器能够访问源容器的信息,Docker提供了两种方式:
/etc/hosts文件
Docker在连接容器的时候,会根据--link提供的参数自动的在接收者容器中创建一些环境变量,包括源容器的Dockerfile中使用ENV命令设置的环境变量和源容器启动时(docker run),使用-e或者--env, --env-file参数指定的环境变量。
主要包含以下环境变量,这里假设alias=webdb。
&alias&_NAME
&name&_PORT_&port&_&protocol&
&prefix&_ADDR
&prefix&_PORT
&prefix&_PROTO
$ docker run
-i -t --rm --link phpfpm:php php:5.6-fpm env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=ef
TERM=xterm
PHP_PORT=tcp://172.17.0.74:9000
PHP_PORT_9000_TCP=tcp://172.17.0.74:9000
PHP_PORT_9000_TCP_ADDR=172.17.0.74
PHP_PORT_9000_TCP_PORT=9000
PHP_PORT_9000_TCP_PROTO=tcp
PHP_NAME=/tender_banach/php
PHP_ENV_PHP_INI_DIR=/usr/local/etc/php
PHP_ENV_GPG_KEYS=6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3 0BD78B5FF95DFE857D9A90D90EC1
PHP_ENV_PHP_VERSION=5.6.9
PHP_INI_DIR=/usr/local/etc/php
PHP_EXTRA_CONFIGURE_ARGS=--enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data
GPG_KEYS=6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3 0BD78B5FF95DFE857D9A90D90EC1
PHP_VERSION=5.6.9
HOME=/root
上述例子中,指定了容器的别名为php,因此所有环境变量都是以PHP_开头。
注意的是,如果源容器重启,接收容器中的环境变量信息并不会自动更新,因此,如果要使用源容器的IP地址,请使用/etc/hosts中配置的主机信息。
/etc/hosts文件
除了环境变量之外,Docker也在接收容器的/etc/hosts文件中更新了hosts信息。
$ docker run
-i -t --rm --link phpfpm:php php:5.6-fpm /bin/bash
root@4678acd72dca:/var/www/html#
root@4678acd72dca:/var/www/html# cat /etc/hosts
172.17.0.77
4678acd72dca
172.17.0.74
php f81b phpfpm
从上可以看出,在接收容器的hosts文件中增加了两条额外的信息,本机IP和别名以及源容器的IP和别名(php)。
与环境变量不同的是,如果源容器重启了,接收容器中/etc/hosts中的信息会自动更新。
本文目前还没有评论……如何将nginx配置文件写入docker的环境变量中上次我听一哥们说他们是吧nginx.conf写入了dockerfile中,直接用环境变量就可以做了上次我听一哥们说他们是吧nginx.conf写入了dockerfile中,直接用环境变量就可以做了关注问题10回答撰写回答系统工程师, 世纪佳缘关注发布9回答4请稍候...}

我要回帖

更多关于 mac配置nginx php环境 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信