nan + nan = 2nan

[Docker] Docker Container 실행하기 본문

Docker

[Docker] Docker Container 실행하기

2nan 2023. 4. 26. 20:22
728x90

Docker Desktop 설치 및 Image 생성은 저번 글을 참조하시기 바랍니다.
https://2nan.tistory.com/100

 

[Docker] Docker Desktop 설치 및 Image 생성

Docker란? Docker를 설치하기 전, Docker가 무엇인지와 이것을 왜 사용하는지에 대한 내용부터 정의를 하고 넘어가자. Docker를 접하게 된 이유는 리눅스 서버를 윈도우에서도 쉽게 돌릴 수 있는 환경이

2nan.tistory.com

 

Container 실행


Docker Image를 가져왔거나 만들었으면, 컨테이너로 실행을 해야 한다.

실행할 Image가 있는지는 2가지로 확인 가능하다.

1) Docker Desktop

Docker Desktop Images

Docker Desktop 프로그램에서 사이드 탭에 있는 Images에 현재 가지고 있는 Image들을 확인 가능하다.

2) Terminal

Windows는 cmd 창 (Windows + R 클릭 이후, cmd를 입력하면 Windows Command Prompt 창을 열 수 있다),

Mac에서는 Terminal 창을 연다.

그리고 'docker images' 라는 명령어를 입력하면 현재 가지고 있는 Image 이름과 ID를 확인 가능하다.

 

이제 가지고 있는 Image를 기반으로 Container를 실행시켜 보자.

이 때, 실행시키고자 하는 이미지의 이름이 필요하다.

실행 시, 여러 파라미터가 있지만 내가 사용했던 파라미터 기준으로만 설명을 하겠다.

docker run -it \ # 가상 터미널을 열어 키보드로 표준 입력을 전달할 수 있는 옵션 
	   -d \ # 백그라운드에서 실행
           -p 80:80 \ # 포트 설정
           -v D:\work_dir:/home/dev_workflow \ # bind_mount (호스트 OS 폴더 마운트)
           --name my_container \ # 컨테이너 이름
           my_image_name:tag \ # 사용할 이미지명(tag 없으면 latest로 처리)
           bash

Terminal에서 'docker run' 명령어를 사용하여 Image를 Container로 실행시킨다.

docker run -it -d -p 80:80 -v [Host OS Directroy]:[Container OS Directory] --name Container_name [Image_name]:tag /bin/bash (혹은 bash) 

아래는 상위의 파라미터들을 대략적으로 설명하는 내용이다.

  • -i, --interactive
    • 표준 입력(stdin)을 활성화하며, 컨테이너와 연결(attach)되어 있지 않더라도 표준 입력을 유지
    • 보통 이 옵션을 사용하여 Bash 에 명령을 입력
  • -t, --tty
    • TTY 모드(pseudo-TTY)를 사용합니다.
    • Bash를 사용하려면 이 옵션을 설정해야 합니다.
    • 이 옵션을 설정하지 않으면 명령을 입력할 수는 있지만, shell이 표시 되지 않음
  • 보통 컨테이너 연결 시 bash 창에 명령어를 입력할 수 있게 유지하기 위해 -it 파라미터를 사용한다.

 

  • -d, --detach
    • 컨테이너가 백그라운드로 실행됩니다.
  • 해당 모드를 실행하지 않으면 보통 실행이 유지가 되지 않는데, 이건 내가 아직 프로세스나 로직을 제대로 이해하지 못 해서 우선은 왠만하면 해당 파라미터를 사용한다.

 

  • -p, --publish
    • 호스트와 컨테이너의 포트를 연결합니다. (포트포워딩)
    • <호스트 포트>:<컨테이너 포트>
      • -p 80:80
      • 포트 번호의 경우, 본인 상황에 맞는 포트 번호를 입력한다.
      • 개인적으로만 개발용으로 사용하는 경우, 범용적인 포트는 대부분 사용해도 무관한 것으로 알고 있다.

 

  • -v, --volume
    • 데이터 볼륨을 설정합니다.
    • 호스트와 컨테이너의 디렉토리를 연결하여, 파일을 컨테이너에 저장하지 않고 호스트에 바로 저장합니다. (마운트)
  • 볼륨 파라미터 (-v)의 경우, 호스트 OS에 특정 디렉토리를 컨테이너 디렉토리에 마운트 시켜 사용할 수 있다.
    • 예를 들어, 내 로컬 컴퓨터에 있는 특정 디렉토리 폴더를 그대로 컨테이너 내에서도 사용할 수 있다는 의미로,
      Google Drive Desktop을 사용하면 로컬 파일처럼 쓸 수 있는 것과 동일하다.
  • Image를 생성할 때, 볼륨을 잡는 다른 방식도 있는데 그건 나중에 설명하기로 한다.

 

  • --name
    • 컨테이너 이름을 설정합니다.

  • my_image_name:tag
    • 실행할 Image의 이름을 입력한다. (ID가 아닌 이름)
    • tag의 경우, 버전을 따로 지정했거나 여러 버전이 있는 경우 버전을 특정해준다.
    • :tag를 입력하지 않으면, 자동으로 latest (최신 버전)을 가져온다.
  • bash
    •  해당 컨테이너를 연결시킬 곳이다.
    • Mac에서는 /bin/bash로 연결했던 것 같은데, bash 혹은 /bin/bash 등으로 연결을 해보길 바란다.

 

해당 명령어를 사용한 후, Docker Desktop 혹은 Termainal에서 생성된 컨테이너를 확인한다.

1) Docker Desktop

Docker Desktop에서 Container 탭에 들어가면 내가 만든 컨테이너를 확인할 수 있다.

생성된 컨테이너

2) Terminal

docker ps -a 명령어를 이용해 생성된, 혹은 실행 중인 컨테이너 리스트를 확인할 수 있다.

이 때 둘 다 Container ID를 미리 복사해둔다.

 

마지막으로 실행 명령어를 통해 Container를 실행한다.

실행하고자 하는 컨테이너의 ID를 하위 명령어 안에 함께 입력 후 실행하면 끝이다.

docker exec -it [Container ID] /bin/bash

Container 실행

'Docker' 카테고리의 다른 글

[Docker] Docker Desktop 설치 및 Image 생성  (2) 2023.03.07
Comments