Запустите образ Docker на другом хосте
Можно ли запустить образ докера на другом хосте, кроме localhost?
Порты 80
а также 443
всегда заняты другими приложениями, поэтому мне было интересно, возможно ли запустить его, например, 192.168.0.100
, а затем настроить /etc/hosts
файл, чтобы назначить имя для этого IP-адреса.
Я пытался настроить extra_hosts
вариант, но я не уверен, предназначен ли он для этого. В любом случае, мне не удалось его настроить, так как возникла проблема с Value should be a mapping, not an array
,
Я думаю, стоит упомянуть, что я использую macOS docker-compose
запустить все. Заранее спасибо.
докер-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 ответ
Почему бы не использовать другой порт при запуске вашего образа? (если только вы не используете порт 80/443)
Так, например, если вы используете образ веб-сервера, такой как Apache httpd, который обычно работает на порту 80, используйте:
docker run -p 127.0.0.1:8080:80/tcp httpd
Тогда вы можете просто использовать порт 8080 на локальном хосте.
Для docker-compose добавьте раздел портов в файл docker-compose.yaml. Например
image: <image>
ports:
- "8080:80"
Фактические порты / образы будут зависеть от того, какое изображение вы используете.
См. https://docs.docker.com/compose/compose-file/ для получения подробной информации.