본문 바로가기

Cloud/Doker

[docker] 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

 

'Cloud > Doker' 카테고리의 다른 글

[docker] docker 볼륨 사용법 3가지  (0) 2021.07.12
[docker] docker -it 와 -d 옵션의 차이점  (0) 2021.06.23
[docker] Docker 시작  (0) 2021.06.21