在另一台主机上运行Docker镜像

时间:2018-06-12 21:20:13

标签: docker docker-compose dockerfile docker-for-mac

是否可以在 localhost 以外的其他主机上运行docker镜像?

端口80443总是被其他应用程序占用,所以我想知道是否可以运行它,例如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;
}

1 个答案:

答案 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