도커를 활용한 서비스 배포하기 (네트워크 설정 및 컨테이너 생성) #3

2022. 6. 16. 13:28Tech Note

728x90

앞서 도커를 설치하고 CentOS7 이미지까지 Pull 받아오는데 성공했다고 끝난게 아니다.

이제 받아온 이미지를 컨테이너로 올려야 한다.

 

도커 이미지는 언어로 치면 클래스라고 생각하면 된다.

재사용 할 수 있도록 만들어진 이미지 형태이며 실제로 구동을 위해서는

해당 이미지를 불러와서 컨테이너로 생성해주어야한다.

이미지와 컨테이너의 관계 흐름도

이미지와 컨테이너의 개념을 잘 알고넘어가야 후에 서술한 내용에 대해서도 이해하기 편하다.

 

이제 컨테이너를 생성해보도록 하자.

기존에 생성해둔 CentOS:7 이미지가 있으니 해당 이미지를 이용해서 생성 할 예정이다.

 

생성 전에 미리 도커 내의 네트워크 구성을 해두었기 때문에 짚고 넘어가자.

간략한 구성도는 아래와 같다.

네트워크 구성방안

웹 서비스(Container 1)와 데이터베이스(Container 2)를 구분지어 컨테이너를 생성한다. 

외부 사용자가 Container 1의 80 port로 접속 할 수 있도록 포트포워딩을 할 예정이다.

Container 1과 Container 2는 동일 네트워크(mynetwork)에 소속시켜 양방향 통신이 자유롭게 되도록 설정한다.

Container 2는 외부 관리자가 접속 할 수 있도록 3306 port를 open 해둔다.

 

구성도와 같이 진행하기 위해 네트워크를 생성해준다.

생성 후 아래와 같이 확인되며 컨테이너 생성 시 해당 네트워크에 연결해주면 된다.

>docker network create --driver=bridge --subnet=172.16.0.0/24 mynetwork

# 생성된 네트워크 목록
>docker network list
NETWORK ID     NAME        DRIVER    SCOPE
a11bee88d7cd   mynetwork   bridge    local

 

네트워크 생성을 완료하였으니, 컨테이너를 생성해준다.

>docker run --privileged -itd \   # docker docs 참조
--name container1 \		# container명
--net mynetwork \  		# 소속 network
--ip 172.16.0.100 \ 		# IP 설정
-p 80:80 \			# Port Fowarding
centos:7 \			# Image
/sbin/init			# Commang Line


# 생성된 컨테이너 목록
>docker container list
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS                NAMES
652d0883df23   centos:7   "/bin/bash"   13 seconds ago   Up 12 seconds   0.0.0.0:80->80/tcp   container1


# container 실행 시 CentOS 7의 경우 Failed D-BUS 이슈가 있으므로 아래와 동일하게 실행
>docker exec -it container1 /bin/bash

위와 같이 목록이 확인되면 컨테이너 생성까지 완료된다.

 

 

 

[참조링크]

https://docs.docker.com/engine/reference/commandline/

 

docker network create

docker network create: Creates a new network. The `DRIVER` accepts `bridge` or `overlay` which are the built-in network drivers. If you have installed a third party or your own custom...

docs.docker.com