Docker

[Docker#4] 컨테이너(Container) 생성 및 실행

j.d 2025. 4. 29. 21:42

이번 글에서는 컨테이너를 생성만 하는 방법, 생성과 동시에 실행하는 방법, 그리고 포트 연결 방법까지 정리해보겠습니다.

출처: https://blog.packagecloud.io/3-methods-to-run-docker-in-docker-containers/

 

컨테이너 Only 생성 or 실행

컨테이너 생성만 하기

컨테이너를 생성할 때 사용하는 기본 명령어는 docker create입니다.

 

이 명령어는 이미지로부터 컨테이너를 생성만 하고 실행시키지는 않습니다.

# docker create 이미지명[:태그명]
$ docker create nginx

# 생성된 컨테이너 목록 확인
$ docker ps -a

STATUS가 Created로 "생성"만 됐다는 것을 알 수 있다.

 

생성된 컨테이너 실행하기

생성해두었지만 아직 실행되지 않은 컨테이너를 시작하려면 docker start 명령어를 사용합니다.

# docker start 컨테이너ID 또는 이름
$ docker start [Container ID or Name]

docker ps 결과를 통해 해당 컨테이너가 실행되고 있음을 알 수 있다.

 

 

 

 

컨테이너 생성 + 실행

실제 실무에서는 대부분 컨테이너를 생성하고 바로 실행하는 경우가 많습니다. 이때 사용하는 명령어는 docker run입니다.

# docker run 이미지명[:태그명]
$ docker run nginx

 

  • 로컬에 이미지가 없으면 자동으로 Dockerhub에서 다운로드합니다.
  • 기본적으로 포그라운드(Foreground) 모드로 실행되며, 실행 중에는 추가 명령어 입력이 어렵습니다.
  • 종료하려면 Ctrl + C를 누르면 됩니다.

 

포그라운드 vs 백그라운드 실행

구분  설명
포그라운드 실행 프로그램이 터미널에 직접 출력되며, 다른 명령어 입력 불가
백그라운드 실행 프로그램이 내부적으로 동작하며, 터미널을 자유롭게 사용 가능

 

컨테이너를 백그라운드에서 실행하기

컨테이너를 백그라운드 모드로 실행하고 싶다면 -d 옵션을 추가합니다.

# docker run -d 이미지명[:태그명]
$ docker run -d nginx

 

컨테이너에 이름 붙이기

컨테이너를 생성할 때 이름을 지정하면 나중에 관리하기가 편해집니다.

# docker run -d --name [컨테이너 이름] 이미지명[:태그명]
$ docker run -d --name my-web-server nginx

 

이름을 부여하면 Container ID 대신 이름으로 관리할 수 있습니다.

 

 

호스트 포트와 컨테이너 포트 연결하기

외부에서 컨테이너에 접근하려면 호스트 포트컨테이너 포트를 연결해야 합니다.

 

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

 

 

위 명령어는 호스트의 4000번 포트컨테이너의 80번 포트에 연결합니다.

 

이제 http://localhost:4000으로 접속하면 컨테이너 안에서 동작하는 Nginx 서버에 접근할 수 있습니다.

 

출처: https://medium.com/@ppran234/why-do-we-bind-ports-in-docker-4f2a62ea2e69 (해당 예시에서는 localhost:8089으로 접속해야 합니다.)