Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [docker] Przypisanie różnych IP dla kontenerów
Forum PHP.pl > Forum > Kontrola i zarządzanie projektami
lukasz91
Zapoznaję się z dockerem i mam jeden problem. Dla każdego kontenera chcę mieć inne IP. Różne IP potrzebne mi do przypisania domeny w pliku hosts (win 10). Da się to jakoś rozwiązać? W sieci nic nie znalazłem. Docker zainstalowany na win10.
nospor
czemu nie przypiszesz hosta do localhost?
127.0.0.1 twojhost

Przeciez doker wystawia kontenery dostepne na localhost
lukasz91
Chodzi o to, że mam dodane 3 przykładowe kontenery. Adres w przeglądarce wygląda tak:
http://192.168.99.100:12/

Problem w tym, ze każdy kontener ma takie samo IP. Różne są tylko porty.

Chcę podpiąć różne domeny pod kontenery, np. projekt1.dev, projekt2.dev itd. Żeby zrobić to w pliku hosts kontenery nie mogą mieć takiego samego IP.
nospor
Jesli twoje projekty sie w zaden sposob nie komunikuja ze soba to zrob jak mowilem. Startujac kontener mowisz ze ma sie mapowac na port 80 localhost i po sprawie. Pracujac nad jednym projektem startujesz jeden stopujesz drugie . Przerzucasz sie na drugi to stopujesz pierwszy i startujesz drugi.

Jesli zas projekty maja sie widziec nawzajem to polecam docker-compose. Choc nawet i bez tego mozesz przeciez odpalac jeden kontener na dwa rozne projekty. Przeciez konter sluzy tylko i wylacznie do odpalenia nginx/apache. Kod moze miec z roznych zrodel.

Chyba poprostu przekombinowales wink.gif
lukasz91
Jeżeli nie ma żadnego prostego rozwiązania, zrobię jak piszesz. W sumie komunikacja będzie tylko pomiędzy 2 kontenerami (mysql + konkretny projekt). W takim wypadku dla kontenera z mysql ustawię inny port smile.gif
nospor
Ciesze sie, ze choc troche udalo mi sie ciebie przekonac smile.gif

Nadal jednak wydaje sie, ze cos nie do konca robisz jak trzeba.
Z twojego opisu wynika, ze masz jeden mysql na dwa projekty - ok. moze tak byc. Po co w takim razie masz zmieniac port dla mysql?

Opisz moze dokladnie jak wyglada twoja sytuacja kontenerowo-projektowa bo odnosze wrazenie ze mozna by to poprawic smile.gif
lukasz91
Bardzo możliwe, że da się zrobić lepiej. Docker dopiero poznaję tongue.gif Wcześniej używałem xamp.

Na co dzień będę mieć kilka projektów. Dwie aplikacje napisane w PHP + aktualnie wdrażane strony pod WP. Wydaje mi się, że najbardziej sensownie będzie stworzyć jeden kontener z mysql/phpmyadmin. A dla każdego projektu osobny kontener z apache/php.
nospor
Nie.

Idea docker jest prosta: jeden proces - jeden kontener.
mysql - jeden kontener
php - jeden kontener
apache(proponuje przesiasc sie na nginx) - jeden kontener.

By moc tym wszystkim ladnie zarzadzac polecam
docker-compose
to naprawde zajebiscie ulatwia wszystko.

Dla kazdego projektu tworzysz konfiguracje z 3 kontenerow (wersja podstawowa rzecz jasna. Jak dojda inne rzeczy to kontenerow bedzie wiecej)
Pracujac nad danym projektem poprostu piszesz
docker-compose up
i wstaja ci wszystkie niezbedne kontenery dla tego projektu.

Tutaj opisalem wstepnie jak sie pracuje z docker-compose
http://nospor.pl/docker-zaprzegamy-kontenery-do-pracy.html
pisalem to gdy sam zaczynalem, teraz juz stosuje troche inna konfiguracje, nie mniej jednak artykul w miare dobrze wyjasnia podstawy docker-compose.

Dzieki temu masz porzadek w konfiguracji i w systemie i wszystko lezy gdzie ma lezec i latwo mozesz podmieniac klocki.
lukasz91
Czyli powinienem stworzyć:
* 1 kontener z serwerem apache - jedna aplikacja stoi na apache i na ten moment nie mam możliwości zmiany tego. Nginx sobie postawię osobno do nauki/testowania
* 1 kontener z mysql
* 1 kontener z phpmyadmin
* 1 obraz dla każdej wersji PHP

I teraz dla każdego projektu odpalam kontener z obrazu odpowiedniej wersji PHP. Kontener łączę z 3 kontenerami wymienionymi wyżej. Jeżeli w przyszłości będę czegoś potrzebował dodatkowo, stawiam osobny kontener.

Dobrze teraz rozumiem? smile.gif Mając obrazy jestem w stanie szybko postawić sobie środowisko pracy na dowolnym systemie.
nospor
phpmyadmin - po co sie uzerac z tym badziedziem, skoro masz cala mase darmowych GUI?

Cytat
I teraz dla każdego projektu odpalam kontener z obrazu odpowiedniej wersji PHP. Kontener łączę z 3 kontenerami wymienionymi wyżej. Jeżeli w przyszłości będę czegoś potrzebował dodatkowo, stawiam osobny kontener.
Mozesz, ale to nadal nie to wink.gif
Kazdy projekt powinien miec swoj wlasny zestaw kontenerow. Ty zas probujesz stworzyc uniwersalne kontenery ktore beda wykorzystywane przez kazdy z projektow. No mozna i tak, ale czyz nie lepiej od razu zaczac pisac porzadnie skoro jestes wlasnie na etapie nauki? smile.gif
by_ikar
Docker działa w taki sposób że każdy kontener ma swoje osobne IP i jest to fundamentalna zasada działania dockera. Jeżeli każde ma takie samo IP tylko różne porty, to albo:

- masz jeden kontener a w nim wszystko (aka naleciałość vagranta)
- windows ma taki sam problem jak maki z dockerem (jedyny dostęp do kontenera to bindowanie go do localhosta, bo nie ma dostępu do sieci docker0)
- używasz virtualboxa w którym masz tylko jedną maszynę i tylko jeden IP
- połączenie kilku/wszystkich powyższych

Jeżeli którykolwiek z powyższych ciebie dotyczy, to zrób tak jak pisze @nospor. Może początkowo ciężko zrozumieć dlaczego tak się robi a nie inaczej, tak później bardzo wiele rzeczy się klaruje i każde inne sposoby są zwyczajnie złe.
lukasz91
@nospor
Utworzę sobie obrazy odpowiednie i na ich bazie będę tworzyć kontenery dla projektu

@by_ikar
Mam testowo 3 kontenery, więc to odpada. Punkty 2 i 3 prawdopodobne smile.gif

Zrobię tak jak mospor radził. Dzięki za pomoc.

Mam taki DockerFile:
Kod
# A basic apache server. To use either add or bind mount content under /var/www
FROM phusion/baseimage

MAINTAINER Lukasz <kontakt@lukasz-socha.pl> version: 0.1

RUN apt-get update && \
    apt-get install -y apache2 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_LOG_DIR /var/log/apache2

RUN mkdir -p /var/run /var/lock/apache2 /var/log

EXPOSE 80

CMD ["apache2","-D","FOREGROUND"]


W PowerSHell ciągle mam:

Kod
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Program Files\Docker Toolbox> cd Z:\Projekty\dev
PS Z:\Projekty\dev> docker build -t apache2 images/apache2
Sending build context to Docker daemon  2.56 kB
Step 1 : FROM phusion/baseimage
latest: Pulling from phusion/baseimage

f069f1d21059: Already exists
ecbeec5633cf: Already exists
ea6f18256d63: Already exists
54bde7b02897: Already exists
a3ed95caeb02: Already exists
ce9e695a6234: Waiting


Ile taki obraz powinien się tworzyć?
nospor
Na linux calkiem szybko wink.gif Ale tobie teraz poki co to wisi na sciaganiu obrazow a nie na ich budowaniu
lukasz91
W podglądzie sieci nie widzę by coś się pobierało. Już grubo ponad godzinę czekam, a internetu nie mam najwolniejszego... ~8 Mb/s
nospor
Moze cos u nich na linii. Poprostu przerwij i spobuj ponownie. Nie ma sensu czekac godzine smile.gif Pobieranie obrazow to moment (no, w zaleznosci od neta, ale zawsze jest procent pokazany, przynajmniej na linux wink.gif )


A wlasnie, wywal tego windowsa i zainstaluj linux. Ze tez sie tak chlopie meczysz na swieta wink.gif
lukasz91
Obraz już się ładnie pobiera. Kolejnym problemem jest brak możliwości montowania folderów spoza c:\Users... Docker nie lubi się zbytnio z Windowsem tongue.gif

@nospor
Tylko na linuksie znowu nie odpalę Photoshopa i często miałem problemy np. z Skype. Mam Mint jako 2 system, ale nie uśmiecha mi się skakanie z systemu na system podczas pracy.
nospor
Moj "szef" tez uzywa windy. Ale gdy pracuje z naszymi projektami odpala linux na virtualbox i tam uzywa docker dla naszych projektow. Jakos zyje wink.gif

ps: nie mam problemow ze skype. Ale ja jade na kubuntu. Co do photoshop: a co ty, grafik?
kapslokk
Cytat
Tylko na linuksie znowu nie odpalę Photoshopa

Zależy którego, u mnie CS6 działa bez problemu ;]
vokiel
Jeśli działasz na Windows i natywny Docker nie działa za dobrze to możesz skorzystać z docker-machine. W skrócie jest to Docker w obrazie maszyny wirtualnej (domyślnie VirtualBox). Czyli odpalasz VM, na niej Dockera, nazwy hostów mapujesz do IP VMki zamiast do swojego lokalnego IP jak w przypadku natywnego Dockera.
Pyton_000
@vokiel Docker natywnie działa tylko na linuksie wink.gif
vokiel
@Pyton_000 nie jesteś na bieżąco

Cytat
Docker for Windows is our newest offering for PCs. It runs as a native Windows application and uses Hyper-V to virtualize the Docker Engine environment and Linux kernel-specific features for the Docker daemon.

https://docs.docker.com/engine/installation/windows/

Cytat
Docker for Mac is our newest offering for the Mac. It runs as a native Mac application and uses xhyve to virtualize the Docker Engine environment and Linux kernel-specific features for the Docker daemon.

https://docs.docker.com/engine/installation/mac/
Pyton_000
Taaa... Faktycznie ale co z tego:
Cytat
Requirements

64bit Windows 10 Pro, Enterprise and Education (1511 November update, Build 10586 or later). In the future we will support more versions of Windows 10.
The Hyper-V package must be enabled. The Docker for Windows installer will enable it for you, if needed. (This requires a reboot).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.