[2일차] docker 어플리케이션 구동

[2일차] docker 어플리케이션 구동

컨테이너는 가상 머신과 마찬가지로 가상 IP를 할당받는다. 대역대는 172.17.0.0/24이고 순차적으로 할당을 받는다.

컨테이너를 생성하고 ifconfig 명령어를 사용하면 할당받은 IP를 확인할 수 있다.

[root@localhost ~]# docker run -it --name network_test ubuntu:14.04 root@166ba94fe653:/# ifconfig eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02 inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:516 (516.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

위 IP는 가상 IP이므로 따로 설정을 하지 않으면 외부에서 접근할 수 없다. 외부에 노출하기 위해서는

eth0의 IP와포트를 호스트OS의 IP와 포트와 바인딩해야 한다.

# docker run -it -p $HOST_OS_PORT:$CONTAINER_PORT [root@localhost ~]# docker run -it --name web_server -p 80:80 ubuntu:14.04 #호스트 OS와 특정IP의 포트와 연결한 경우 및 여러 포트를 바인한 경우 [root@localhost ~]# docker run -it --name ftp_server -p 3306:3306 -p 192.168.0.10:7777:21 ubuntu:14.04

이제 우분투에 아파치 웹서버를 설치해보자

[root@localhost ~]# docker run -it --name mywebserver -p 192.168.23.143:80:80 ubuntu:14.04

root@fdedf23ffee3:/# apt-get update root@fdedf23ffee3:/# apt-get -y install apache2 root@fdedf23ffee3:/# service apache2 start

도커의 웹페이지로 접속된 화면

한 컨테이너에 프로세스 하나만 실행하는 것이 도커의 철학이다.

이번에는 DB와 워드프레스 웹 서버를 연동해 워드프레스 기반 블로그 서비스를 만들어보자.

이번엔 -d 옵션과 -e옵션을 사용한다.

-d 옵션은 컨테이너가 detached 모드에서 실행되며, 실행 결과로 컨테이너 ID만을 출력한다.

-e 옵션은 Docker 컨테이너의 환경변수를 설정한다.

[root@localhost ~]# docker run -d \ > --name wordpressdb \ > -e MYSQL_ROOT_PASSWORD=password \ > -e MYSQL_DATABASE=wordpress \ > -e MYSQL_USER=wordpress \ > -e MYSQL_PASSWORD=wordpress \ > mysql:5.7

[root@localhost ~]# docker run -d \ > --name wordpress \ > -e WORDPRESS_DB_USER=wordpress \ > -e WORDPRESS_DB_PASSWORD=wordpress \ > --link wordpressdb:mysql \ > -p 80 \ > wordpress

위 명령어에서는 -p 옵션으로 포트 바인딩을 따로 지정해서 해주지 않았다.

이러면 호스트 OS의 아무포트와 자동으로 연결되기 때문에 docker ps명령어로 확인해주거나 docker port $name으로 확인할 수 있다.

[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 44191c04452a wordpress "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:49153->80/tcp, :::49153->80/tcp wordpress 2470fb92a3ba mysql:5.7 "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 3306/tcp, 33060/tcp wordpressdb

[root@localhost ~]# docker port wordpress 80/tcp -> 0.0.0.0:49153 80/tcp -> :::49153

반응형

from http://yoonsu.tistory.com/18 by ccl(A) rewrite - 2021-06-22 18:25:04