背景最近使用了Mac系统的电脑作为了测试服务器,但是在Mac系统的电脑使用docker安装nginx进行反向代理,以前在centos7系统的电脑上无往不利的docker容器启动方式,反而出现了问题。启动方式:docker run -it --name nginx --net host -v /Users/mac-server/Desktop/project:/var/www/html -v /Users/mac-server/Desktop/nginx:/nginx_conf -d nginx
抛弃docker for mac自带的linux虚拟机(尽管轻量,但其与OSX通信采用socket文件的方式),使用docker-machine
安装virtualbox。virtualbox创建后,会添加一个虚拟网卡,可以通过ifconfig命令查看。我们实现的方式,就是利用这个虚拟网卡。
使用docker-machine创建默认linux虚拟机,命令docker-machine create
切换docker环境,使用eval $(docker-machine env)命令
查看创建的虚拟机的ip地址:docker-machine ip default或者直接docker-mac
简单的说Docker是一个构建在LXC之上的,基于进程容器(Processcontainer)的轻量级VM解决方案
拿现实世界中货物的运输作类比,为了解决各种型号规格尺寸的货物在各种运输工具上进行运输的问题,我们发明了集装箱
Docker的初衷也就是将各种应用程序和他们所依赖的运行环境打包成标准的container/image,进而发布到不同的平台上运行
nginx-proxy设置了一个运行nginx和的容器。 docker-gen为nginx生成反向代理配置,并在容器启动和停止时重新加载nginx。
请参阅了解为什么要使用它。
要运行它:
$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy
然后使用env var VIRTUAL_HOST=subdomain.youdomain.com启动要代理的任何容器
$ docker run -e VIRTUAL_HOST=foo.bar.com ...
被代理的容器必须要代理的端口,方法是在其Dockerfile使用EXPOSE指令,或者通过使用--expose标志使--expose docker run或--expose docker create并位于同一网络中。 默认情况下,如果在创建nginx-proxy容器时未传递--net标志,它将仅附加到默认的桥接网络。 这意味着它将无法连接到网桥以外的容器。
如果您的DNS设置为将foo.bar.com转发
--net=host:
(1).加了--net=host以后就不需要再做端口映射了.比如docker容器内在8080端口起了一个web server.不加的话需要把本机的某个port比如7979和docker内的8080做一个映射关系,访问的时候访问7979. 加了net=host则直接访问8080.
另外,加了net=host后会使得创建的容器进入命令行好名称显示为主机的名称而不是一串id.
root@box:/#
(2).容器中的app1无法访问到宿主机的app2,因为两者不在一个网络内。最简
docker中nginx无法代理转发到容器外部,且–net=host无效;
Host 模式只支持 Linux 系统,Windows 和 macOS 此参数无效。因此容器中nginx转发中的localhost是指向容器本身,所以要访问容器外的,需要明确指出宿主机的IP地址。
官网:https://docs.docker.com/network/host/
最近部署一套
系统,
使用nginx作反向代理,其中
nginx是
使用docker方式运行:
$
docker run -d --name
nginx $PWD:/etc/
nginx -p 80:80 -p 443:443
nginx:1.15
需要代理的API服务运行在
宿主机的 1234
端口,
nginx.conf 相关配置如下:
server {
location /api {
proxy_pass http://local
host:1234
结果访问的时候发现老是报 502 Bad Gateway 错误,错误日志显示
无法连接到upstream。
使用 docker 容器 aria2-pro 下载 m3u8 文件的步骤如下:
1. 首先,安装 docker。如果你还没有安装 docker,请参考官方文档或者网上教程进行安装。
2. 下载 aria2-pro 镜像。在命令行中输入以下命令:
docker pull aria2-pro
3. 启动 aria2-pro 容器。输入以下命令:
docker run -d --name aria2-pro -p 6800:6800 aria2-pro
4. 使用 aria2c 命令下载 m3u8 文件。输入以下命令:
aria2c -c -s10 -x10 -j10 -i <m3u8文件的URL>
其中,`-c` 参数表示继续下载,`-s10 -x10 -j10` 参数表示使用 10 个线程下载,`-i` 参数表示输入 m3u8 文件的 URL。
注意:在使用 aria2c 命令之前,需要先进入 aria2-pro 容器内。输入以下命令进入容器内:
docker exec -it aria2-pro /bin/bash