是否可以在 localhost 以外的其他主机上运行docker镜像?
端口80
和443
总是被其他应用程序占用,所以我想知道是否可以运行它,例如192.168.0.100
,然后设置/etc/hosts
文件以指定该IP地址的名称。
我试图设置extra_hosts
选项,但我不确定它是否适用于此。无论哪种方式,我都没有成功设置它,因为Value should be a mapping, not an array
存在一些问题。
我想值得一提的是,我使用docker-compose
来运行macOS。提前谢谢。
搬运工-compose.yaml
version: "2"
services:
php:
build: ./php
volumes:
- ../develog.org:/usr/share/nginx/html
depends_on:
- memcached
nginx:
build: ./nginx
ports:
- 4001:80
- 4002:443
volumes_from:
- php:ro
depends_on:
- php
memcached:
image: memcached:alpine
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.1.0.0/16
nginx配置
map $scheme $ssl_request {
https "https";
}
server {
# support http and ipv6
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
# support https and ipv6
listen 443 default_server ssl;
listen [::]:443 ipv6only=on default_server ssl;
# path to web directory
root /web/;
index index.html index.htm;
# domain or subdomain
server_name localhost;
include self-signed.conf;
include ssl-params.conf;
}
答案 0 :(得分:0)
为什么不在运行图像时使用其他端口? (除非你 使用端口80/443)
因此,例如,如果您正在运行像Apache httpd这样的Web服务器映像,它通常在端口80上运行,请使用:
docker run -p 127.0.0.1:8080:80/tcp httpd
然后你可以在localhost上使用端口8080。
对于docker-compose,将一个ports部分添加到docker-compose.yaml文件中。 E.g。
image: <image>
ports:
- "8080:80"
实际的端口/图像取决于您使用的图像。
有关详细信息,请参阅https://docs.docker.com/compose/compose-file/#ports。