Docker

컨테이너 생성 / 실행하기

KimMinJun 2025. 7. 31. 07:17

컨테이너 생성하기

컨테이너는 이미지를 바탕으로 생성하게 된다.

다음 명령어로 이미지를 이용해서 컨테이너를 생성할 수 있다.

docker create <이미지명>

지난 포스팅에서 nginx 이미지를 삭제했었는데,

알아서 최신 버전으로 pull해서 설치까지 해준다.

 

컨테이너를 만들었으니 확인해보자.

다음 명령어로 로컬 시스템에 있는 모든 Docker 컨테이너 목록을 볼 수 있다.

docker ps -a

여기에 STATUS 부분에 'Created' 라는 상태가 보일 것이다.

'Created'는 생성은 했지만, 실행중인 컨테이너가 아닌 상태이다.

 

컨테이너 실행하기

다음 명령어로 nginx 컨테이너를 실행해주자.

docker start <CONTAINER ID>

실행해준 뒤, 다시 리스트를 보면 STATUS가 'Up'으로 된 것을 볼 수 있다.

'Up'은 실행중인 컨테이너라는 의미이다.

 

생성과 동시에 실행하기

지금은 create로 컨테이너를 만들고, start로 컨테이너를 실행시켜주었다.

그런데, run이라는 명령어로 한 번에 컨테이너를 만들고, 바로 실행시킬 수 있다.

이 run 명령어는 이전 포스팅에서 잠깐 보였던 적이 있다.

2025.07.30 - [Docker] - Docker를 활용해서 Nginx 설치 및 실행하기

 

Docker를 활용해서 Nginx 설치 및 실행하기

Nginx란?Nginx는 웹 서버, 리버스 프록시, 로드 밸런서, HTTP 캐시 등 다양한 역할을 하는 서버 중 하나이다.여기서 웹 서버는 HTML 웹 페이지를 렌더링 시키는 역할을 한다.나머지는 차차 알아보자. Ngi

jun-coding.tistory.com

 

일단, 설치되어 있는 이미지와 컨테이너를 모두 지워주었다.

지우는 명령어는 지난 포스팅에 언급해두었다!

2025.07.31 - [Docker] - 도커 이미지 조회 / 삭제하기

 

도커 이미지 조회 / 삭제하기

2025.07.30 - [Docker] - 도커 이미지 다운로드 하기 도커 이미지 다운로드 하기컨테이너를 실행하려면 도커 이미지가 필요하다.이미지를 다운받기 위해서는 다음과 같은 명령어를 입력하면 된다.docke

jun-coding.tistory.com

 

그리고 다음 명령어로 nginx 이미지를 설치하고, 실행해주면 된다.

docker run nginx

이미지가 없으니, 자동으로 이미지를 다운로드 하고,

실행까지 시켜주는 것을 볼 수 있다.

다만, foreground에서 실행되기 때문에 로그들이 터미널에 보이게 된다.

터미널에서는 실시간 로그들이 보이기 때문에,

만약 종료하고 싶으면 윈도우는 Ctrl + C,

Mac은 Command + C를 누르면 된다.

 

background에서 실행시키고 싶으면,

이전에 언급한 `-d` 플래그로 실행시켜주면 된다.

docker run -d nginx

컨테이너 목록까지 확인해보면 잘 실행되고 있는 것을 볼 수 있다.

 

컨테이너에 이름 붙이기

nginx 컨테이너에 이름을 붙이고 싶으면 다음과 같이 입력하면 된다.

docker run -d --name my-web-server nginx

확인해보면, NAMES에 'my-web-server'로 잘 지정된것을 볼 수 있다.

 

포트 연결하기

컨테이너를 보면 PORTS 부분에 '80/tcp'라고 적힌것을 볼 수 있다.

 

그러면 브라우저에서 80번 포트로 접속할 수 있을까?

웹 HTTP의 기본 포트가 80번이니 브라우저에서 localhost로 접속해보자.

위와 같이 nginx 페이지가 잘 보이는 것을 확인할 수 있다.

하지만, 이것은 캐싱된 페이지일 수 있으니 '시크릿 모드'로 접속해보자.

 

이처럼, 접속할 수 없는 것을 볼 수 있다.

무슨 이유일까?

 

컨테이너는 '독립된 공간' 이라고 했다.

이 말은, 호스트 컴퓨터와 컨테이너는 서로 다른 네트워크를 사용한다는 것이다.

따라서 우리의 컴퓨터에서는 '호스트 컴퓨터'에만 접근이 가능하고,

'컨테이너'로 접근할 수는 없는것이다.

 

따라서 이 '독립된 컨테이너'에 접근하려면,

포트를 연결해주어야 한다.

 

기존의 컨테이너는 지우고,

다음 명령어로 새로 만들어주자.

# docker run -d -p [호스트 포트]:[컨테이너 포트] 이미지명[:태그명]
docker run -d -p 4000:80 nginx

 

 

이렇게 생성한 뒤, PORTS를 보면 아까와는 다르게 표시되고 있다.

4000번 포트로 '호스트 컴퓨터'에 접근하면,

호스트 컴퓨터가 80번 포트로 '컨테이너'에 접근할 수 있게되는것이다.

 

그럼 브라우저에서 `localhost:4000`으로 접속해보자.

이와 같이, 4000번 포트로 접속하면 nginx 페이지가 잘 뜨는 것을 볼 수 있다.

 

브라우저(HTTP)의 기본 포트가 80이라고 했으니,

80:80으로 설정하면 그냥 localhost로 접속해도 되지 않을까?

 

기존 컨테이너를 지운 뒤, 다음과 같이 입력해보자.

# docker run -d -p [호스트 포트]:[컨테이너 포트] 이미지명[:태그명]
docker run -d -p 80:80 nginx

 

그리고 나서, 브라우저에는 캐싱된 페이지가 남을 수 있기 때문에,

브라우저 전체를 끄고 다시 시크릿 모드로 들어가주자.

기존에 4000번 포트로 다시 들어가보면 연결이 되지 않는 것을 볼 수 있다.

 

하지만 이제 80번 포트, 즉 그냥 localhost로 접속해보면 다음과 같이 정상적으로 보인다.