Informuje że kontener nasłuchuje na określonych portach sieciowych – docker zezwala na przychodzący ruch sieciowy do kontenera z innych kontenerów tego hosta. Nie udostępnia automatycznie hostowi portów kontenera.
EXPOSE 80 EXPOSE 443 docker run --expose 80 ... docker run --expose 443 ...
Przykład
# Uzyskanie podstawowego obrazu. FROM ubuntu:14.04 # Instalowanie serwera Nginx. RUN \ add-apt-repository -y ppa:nginx/stable && \ apt-get update && apt-get install -y nginx && \ rm -rf /var/lib/apt/lists/* && \ echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \ chown -R www-data:www-data /var/lib/nginx # Definiowanie katalogów do podłączenia. VOLUME ["/etc/nginx/sites-enabled", "/etc/nginx/certs", "/etc/nginx/conf.d", "/var/log/nginx", "/var/www/html"] # Definiowanie katalogu roboczego. WORKDIR /etc/nginx # Definiowanie polecenia domyślnego. CMD ["nginx"] # Udostępnianie portów. EXPOSE 80 EXPOSE 443
// Udostępnienie portu na zewnątrz # docker run nginx -p 80 // Automatycznie opublikuje (na zewnątrz) wszystkie udostępnione porty (EXPOSE) # docker run nginx -P
RUN – tworzy nową warstwę – uruchomi wszystkie polecenia w nowej warstwie nad bazowym obrazem i zatwierdzi wyniki w celu utworzenia obrazu (kolejnej warstwy). CMD uruchamia polecenia w czasie wykonania RUN w czasie budowania.
RUN <polecenie> - forma powłokowa - polecenie i jego argumenty zostaną przekazane do /bin/sh -c (jako argumenty) - długie instrukcje można rozbić na wiele wierszy za pomocą \ - domyślna powłoka (sh) może zostać zmieniona za pomocą SHELL - każda instrukcja tworzy nową warstwę w obrazie RUN ["plik wykonywalny", "parametr1", "parametr2"] - forma wykonywalna
- get-update i get-install zawsze powinny być w jednej instrukcji RUN (jednej warstwie) aby aktualizacja była świeża / nie z bufora RUN apt-get update \ && apt-get install -y mongodb-server \ && apt-get install -y nodejs - unieważnienie bufora w czasie budowania # docker build --no-cache
USER – ustawia nazwę użytkownika lub id który zostanie użyty w czasie uruchamiania obrazu – wpływa na instrukcje RUN, CMD, ENTRYPOINT, które po niej następują
USER www-data - utworzenie usera i grupy RUN groupadd -r tomcat && useradd -r -g tomcat tomcat