DevOps/Docker

[Docker] Docker Tutorial (1) : 기본적인 사용법

ooeunz 2019. 12. 8. 22:31
반응형

Docker 설치하기

---

Ubuntu

sudo apt-get update
sudo apt-get install docker.io

# /usr/bin/docker.io 실행 파일을 /usr/local/bin/docker로 링크하여 사용
sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker

 

MAC & WINDOW

※ Mac OS 기준으로 설명이 포스팅이 진행되지만 Window 운영체제라고 하여 크게 다르지 않습니다.

 

1. 이제 본격적으로 도커를 사용해보도록 하겠다. 아래 URI 접속해서 Please Login To Download 버튼을 클릭한다.

https://hub.docker.com/editions/community/docker-ce-desktop-mac

 

Docker Desktop for Mac - Docker Hub

Docker Desktop for Mac Docker Desktop for Mac is an easy-to-install desktop app for building, debugging, and testing Dockerized apps on a Mac. Docker Desktop for Mac is a complete development environment deeply integrated with the Mac OS Hypervisor framewo

hub.docker.com

 

 

2. 그럼 로그인을 하라는 화면이 나타난다. 아이디가 있다면 로그인을, 없다면 sign up 버튼을 눌러 회원가입을 해준다. 회원가입은 이메일 인증 외에는 특별한 절차가 없기 때문에 생략하도록 하겠다. 이후 로그인을 한 후에 도커를 설치해주면 된다.

 

 

3. 도커 파일이 다운로드하여지면 애플리케이션 폴더에 드래그해서 설치를 완료한다. 그리고 도커를 실행하면 오른쪽 이미지와 같은 창이 뜨게 되고 조금 전 가입했거나 또는 로그인했던 아이디로 로그인해준다.

 

Docker Desktop is starting.. 문구가 Docker Desktop is running로 바뀌면 정상적으로 실행되었음을 알 수 있다.

 

 

이제 도커가 설치되었으므로 터미널에서도 도커 버전을 확인할 수 있다.

 


Docker 명령어

도커의 명령은 docker <명령> 형식으로 이루어져 있다. 항상 root 권한으로 실행해야하므로 sudo를 붙이거나, 혹은 root에서 명령어를 실행해야 한다.

 


Search 명령어로 이미지 검색하기

도커는 Docker Hub(https://hub.docker.com/) 통해 이미지 생태계를 구축해두었는데 docker search 명령어로 이미지를 검색할 수 있다. search를 하게되면 엄청나게 많은 수의 이미지들이 나타나는데 OFFICLIAL에 [OK]가 있는 이미지들이 공식 이미지이고, 그 외의 것들은 사용자가 만든 이미지이다.

 


pull

>> docker pull

명령어를 이용해 이미지를 다운받는다. 필자는 root에서 명령어를 입력하였기 때문에 sudo를 붙이지 않았다.

sudo docker pull ubuntu:latest	# 최신 버전 ubuntu 이미지를 다운받는다.

sudo docker pull ubuntu:14.04	# 14.04 버전 ubuntu 이미지를 다운받는다.

sudo docker pull <사용자 이름>/ubuntu	# 특정 사용자의 이미지를 다운받는다.

 


images

>> docker images

명령어를 입력하면 방금 받은 ubuntu 이미지를 확인할 수 있다.

 


Container 라이프사이클

이번에는 다운 받은 이미지를 이용하여 컨테이너를 생성해보도록 하겠다. 컨테이너에는 아래와 같은 라이프 사이클이 있다.

 

  1. docker create : 이미지를 사용해서 컨테이너를 생성한다.
  2. docker run : 이미지를 사용해서 컨테이너를 생성하고 바로 실행까지 한다.
  3. docker start : 중지 상태인 컨테이너를 실행한다.
  4. docker stop : 실행 상태인 컨테이너를 중지한다.
  5. docker rm : 컨테이너를 삭제한다. 단, 이미지는 삭제되지 않는다.

run

그렇다면 docker hup에서 받은 이미지를 기반으로 컨테이너를 생성 및 실행 (docker run)을 해보도록 하겠다. 명령어는 아래와 같다.

docker run -it --name "test" ubuntu /bin/bash
  • -it : 현재 실행중인 터미널에 결과를 출력한다. (-i (interactive),  -t (pseudo-tty) 따로 사용해도 됨.)
  • --rm : 실행 후 컨테이너를 바로 삭제한다.
  • --name <컨테이너 이름> : 컨테이너 이름을 지정한다.
  • ubuntu : 사용할 이미지 이름을 선택한다.
  • /bin/bash : 컨테이너에서 실행하는 커맨드이다. 

 

컨테이너를 실행한 후에는 터미널에서 처럼 cd, ls 명령으로 컨테이너 내부를 이동할 수 있다. 내부를 둘러본 다음 exit 명령어를 입력하면 bash 쉘에서 빠져나올 수 있다.

 

※ ubuntu image에서 /bin/bash 실행 파일을 실행했기 때문에 여기서 exit 하면 컨테이너가 정지된다.

 


ps

>> docker ps 

명령어를 이용해서 실행 중인 컨테이너 목록을 출력할 수 있다. 필자는 방금 exit 명령어로 test 컨테이너를 중지시켰기 때문에 아무 컨테이너 목록이 나타나지 않는다.

 

>> docker ps -al 

명령어를 입력하면 정지된 컨테이너를 포함한 모든 컨테이너 리스트가 출력된다.

 


start

>> docker start <컨테이너 이름>

명령어를 사용해서 조금 전에 정지했던 컨테이너를 다시 시작해보도록 하겠다. (컨테이너 이름 대신 ID 값을 이용해도 됨.)

docker start test 명령어로 test 컨테이너를 실행시킨 후 docker ps명령을 입력하면 test 컨테이너가 실행되고 있는 것을 알고 있다.

 

restart

>> docker restart <컨테이너 이름>

명령으로 컨테이너를 다시 시작할 수 있다.

 


attach

>> docker attach <컨테이너 이름>

명령어를 이용해 방금 시작한 컨테이너에 접속할 수 있다. 여기서는 /bin/bash를 실행했기 때문에 명령어를 자유롭게 입력할 수 있다. 단, 서버나 db를 실행하면 입력은 할 수 없고 출력만 할 수 있다.

 

  • crtl + d 를 입력하면 컨테이너가 정지된다.
  • crtl + p, crtl  + q를 차례대로 입력하면 컨테이너를 정지하지 않고 빠져나올 수 있다.

다음 예시를 위해 정지하지 않고 빠져나오자.

 


exec

>> docker exec <컨테이너 이름> <명령> <매개 변수>

컨테이너가 실행된 상태에서 exec 명령어를 이용해서 컨테이너 안에 명령을 실행할 수 있다. 아래 이미지에서는 echo 명령어를 실행하고 매개변수로 "hello world"를 넣어줬기 때문에 hello world가 출력됐다. 보통 exec 명령어는 apt-get이나 yum을 이용해서 패키지나 각종 데몬을 실행할 때 사용한다.

 


stop

>> docker stop test

명령어로 컨테이너를 중지시킬 수 있다. stop 이후 ps 명령어로 실행 중인 컨테이너를 리스트를 출력해보면 test 컨테이너가 중지된 것을 알 수 있다.

 


rm

>> docker rm <컨테이너 이름>

명령어를 이용해 생성된 컨테이너를 삭제할 수 있다. 삭제 이후 ps -al 명령어로 모든 컨테이너 명력을 출력해보면 test 컨테이너가 삭제된 것을 확인할 수 있다.

 

 


rmi

>> docker rmi <이미지 이름>:<태그>

명령어를 이용해서 이미지를 삭제할 수 있다. 만약 태그를 지정하지 않으면 해당 이미지 이름을 가진 모든 이미지가 삭제된다. imges 명령어를 통해 이미지가 삭제된 것을 확인할 수 있다.

 

이번 포스팅에서는 docker hub에서 받아온 ubuntu 이미지를 이용해서 도커를 어떤 식으로 사용하는지에 관하여 이야기해보았다. 다음 포스팅에서는 실질적으로 도커 이미지를 직접 만들고 실행하는 것에 대해 살펴보겠다.

반응형