[일단 시작해 - 도커] 2. 도커로 우분투 실행시키기

2021. 4. 14. 19:0003. Resources/Docker, Kubernetes

728x90
반응형

요약

  1. 도커를 실행시킨다.
  2. 터미널을 켜고 "docker run -it --name ubuntu_18_04 ubuntu:18.04" 명령어를 입력한다.
  3. 아래와 같이 우분투 커맨드 창으로 접근할 수 있다.

docker run -it --name ubuntu_18_04 ubuntu:18.04

관련 커맨드 정리 된 깃허브 : github.com/SunandBean/Let_it_start-Docker/tree/main/02_Start_Ubuntu_with_Docker


앞선 포스팅에서는 내 PC에 도커 설치까지 마무리했다. 포스팅에 넣지 않고 추가로 한 작업이 있다면 로그인 정도..?

 

이번 포스팅에서는 여태 이런저런 개발을 해오면서 제일 애먹었던 우분투 환경을 도커로 어떻게 꾸밀 수 있는지 정리해보겠다.

 

 

먼저, 도커에서 무언가를 하기 위해서는 두 단어의 개념을 알고 있어야 한다.

 

두 단어는 "이미지", "컨테이너" 이다.

 

각 단어가 기술적으로 어떻게 구현되어 있는지, 어떤 코드로 구현되어 있는지도 물론 중요하지만, 

사실 쓰는 데에는 각 단어가 어떤 느낌인지 아는게 더 중요한 것 같다.

 

오피셜한 설명은 아마 공식 문서에 찾아보면 잘 나올 것이니,  그거 말고 내가 이해한 바 대로 설명해보겠다.

 

이미지는 붕어빵 틀이고, 컨테이너는 붕어빵이다.

 

붕어빵을 만들려면 붕어빵 틀이 있어야 한다
붕어빵 틀이 있으면, 붕어빵은 얼마든지 만들 수 있다.

우분투 환경을 만들려면 우분투 이미지가 있어야 한다.
우분투 이미지가 있으면, 우분투 환경은 얼마든지 만들 수 있다.

 

 

물론 작업하다 보면, 우리가 직접 붕어빵 틀을 만들어야 할 일도 생기겠지만, 일단 우리는 누가 만들어둔 붕어빵 틀을 이용할 것이다.

 

이미 만들어진 붕어빵 틀을 가져오는 명령어는 "docker pull (원하는 이미지 이름):(태그)" 이다.

 

우린 우분투 이미지를 가져올 것이기 때문에, 터미널을 켜고 아래의 명령어를 입력할 것이다.

 

> docker pull ubuntu:18.04

 

docker pull ubuntu:18.04

 

난 테스트한다고 이미 몇 번 pull을 했기 때문에 Already exists라는 말이 나오지만, 새로 받는 다면 다른 말이 나오면서 pull 이 될 것이다.

 

원하는 이미지가 제대로 pull이 됐는지는 Docker gui로 돌아가서 확인해볼 수 있다.

 

Docker GUI 에서 이미지 설치된 것 확인하기

 

위의 사진처럼 ubuntu 이미지가 local에 들어왔고, 해당 이미지의 태그는 18.04이다. 태그가 버전과 완전히 동일한 것은 아니라는 것은 명심하자.

 

이렇게 되면 붕어빵(우분투 환경)을 만들 붕어빵 틀(우분투 이미지)은 준비가 됐다.

 

 

그럼 이제 붕어빵을 만들어보자.

 

붕어빵 틀로 붕어빵을 만드는 명령어는 "docker create (옵션) --name (원하는 컨테이너 이름) (원하는 이미지 이름)" 이다.

--name도 옵션이긴 한데, 맨날 쓰긴 하니까 따로 뺐다.

 

그래서 우리가 원하는 이미지를 이용해서 우분투 환경을 만들려면 터미널에 아래와 같이 입력하면 된다.

 

> docker create -i -t --name ubuntu_18_04 ubuntu:18.04

 

docker create -i -t --name ubuntu_18_04 ubuntu:18.04

 

-it : 옵션은 상호 입출력을 가능하게 하는 옵션이라고 한다. (참고 -  "시작하세요! 도커/쿠버네티스")

 

해당 명령어를 터미널에 입력하면 위와 같이 이상한 숫자와 영어의 조합이 뜨는데, 이것만으로는 컨테이너가 생성되었는지 확인하기 어렵다.

 

이미지를 확인했던 것처럼 GUI 가서 확인해보자.

 

Docker GUI에서 만든 컨테이너 확인하기

 

위의 사진에서처럼, 우리가 만든 붕어빵이 "CREATED" 상태로 존재하게 된다.

 

이제 붕어빵의 비유는 그만하고, 만들어진 컨테이너를 우리가 실제로 이용하기 위한 명령어는 아래와 같다.

 

컨테이너를 일단 실행을 시켜야하는데, 이 때에는 "docker start (컨테이너 이름)" 을 이용한다.

 

따라서 우리가 만든 컨테이너를 시작시키려면 아래의 명령어를 입력해야 한다.

 

> docker start ubuntu_18_04

 

docker start ubuntu_18_04

 

명령어를 실행시키면 우리가 입력한 컨테이너의 이름이 터미널 창에 출력이 된다.

 

변한 상태는 GUI 에서 다시 확인할 있다.

컨테이너의 상태가 CREATED -> RUNNING

아까 빨간색이고, CREATED 상태였던 컨테이너가 초록색에 RUNNING으로 변경된 것을 볼 수 있다.

 

컨테이너를 실행까지 시켰는데, 우분투 환경을 만든 이유는 운영체제로 들어가서 작업을 하기 위해서이다.

 

현재 실행 중인 컨테이너에 들어가기 위해서는 "docker attach (컨테이너 이름)"을 이용한다.

 

> docker attach ubuntu_18_04

 

docker attach ubuntu_18_04

 

위의 명령어를 실행시키면 우분투 shell로 들어가게 된 것을 볼 수 있다.

 

여기까지 하면 우분투 18.04 환경을 도커를 이용해서 구축한 것이다.

 

그런데, 위의 몇 단계를 한 번에 할 수 있는 명령어가 존재한다.

 

바로 "docker run" 명령어이다.

 

위의 일련의 과정은 아래의 명령어를 통해 한 번에 진행할 수 있다.

 

> docker run -it --name ubuntu_18_04 ubuntu:18.04

 

docker run -it --name ubuntu_18_04 ubuntu:18.04

 

보여드리기 위해서 기존에 존재하는 컨테이너를 지우고, 이미지도 지운 다음 해당 명령어를 실행한 결과이다.

 

로컬에 우분투 이미지가 존재하지 않아서 pull 을 해왔고, 맨 마지막에 attach 명령어를 이용해서 컨테이너에 접근한 결과와 동일한 화면으로 접근한 것을 볼 수 있다.

 

대신 docker run을 이용한 명령어는, 최초에 컨테이너가 존재하지 않는 경우에 저렇게 동작한다.

 

동일한 이름의 컨테이너가 있는 경우에는 해당 컨테이너로 자동으로 들어가는 것이 아닌 아래와 같이 이미 동일한 이름의 컨테이너가 있다고 에러를 띄운다.

 

docker run 에러

 

따라서, 기존에 있는 컨테이너를 이용하기 위해서라도 "docker start" 명령어와 "docker attach" 명령어를 알아야 한다.

 

그럼 여기까지 도커로 우분투 실행시켜보는 포스팅을 마무리하겠다.

 

사실 지금처럼 단순한 하나의 이미지를 가져오기만 하면 이런 과정이 부담스럽지 않다.

 

하지만 추가적으로 이런저런 세팅을 같이 해야된다면 굉장히 귀찮아진다.

 

그런 세팅 과정을 거쳐서 이미지를 만들기 위해서 DockerFile 이라는 스크립트가 있는데, 이에 대해서 다음 포스팅에 다뤄보겠다.

 

위의 코드들은 아래 깃허브에 쉘스크립트 파일 형태로 올려두었다!

 

깃허브 : github.com/SunandBean/Let_it_start-Docker/tree/main/02_Start_Ubuntu_with_Docker

반응형