Docker

도커 시작하기

Debin 2022. 8. 16.
반응형

도커 환경을 구축하는 방법은 크게 3가지가 있다.

 

  1. 리눅스 컴퓨터에서 도커 사용하기
  2. 가상 머신이나 렌탈 환경에 도커를 설치하고 윈도우나 맥을 통해 사용하기
  3. 윈도우용/맥용 도커 사용하기

실습은 3번 방식으로 진행한다.

아래 링크에서 도커를 다운로드 받으면 된다.

https://www.docker.com/

 

Home - Docker

Learn how Atomist will help Docker meet the challenge of securing secure software supply chains for development teams.

www.docker.com

필자의 실습환경은 애플 맥 M1이므로 Apple Chip을 다운로드 받았다.

실행을 시키면 다음과 같이 창이 뜬다.

도커 기초 실습 시작

바로 실습을 진행해보겠다.

컨테이너를 생성하고, 실행, 상태를 확인 후, 컨테이너를 종료 및 삭제해 보겠다.

실습 대상은 아파치 컨테이너다. 먼저 컨테이너를 생성하겠다.

docker run --name apa000ex1 -d httpd

위 구문을 분석해보겠다.

 

  • docker: 컨테이너를 다루는 명령은 모두 docker로 시작한다.
  • run: 사실 상위 container run (상위 커맨드 + 하위 커맨드)다. container를 생략 가능해서 생략한 것이다.
    run의 역할은 도커 이미지를 내려받고 컨테이너를 생성해 실행한다.(다운로드는 필요한 경우에)
    docker image pull, docker container create, docker container start라는 세 명령어를 합친 것과 같다.
  • --name apa000ex1: 해당 이름으로 컨테이너를 생성한다.
  • -d: 백그라운드로 실행한다는 의미다.
  • httpd: 아파치의 이미지 이름. 버전을 적지 않았으므로 제일 최신 버전을 사용한다.

해당 명령어를 사용했다면 이제 바로 컨테이너가 실행중인지 확인해보자.

docker ps

ps 커맨드를 사용해 실행중인 도커 컨테이너들을 확인할 수 있다. 뭔가 리눅스 ls 커맨드랑 비슷한 것 같기도..?

그럼 아래와 같이 컨테이너가 실행 중인 것을 확인할 수 있다.

컨테이너가 실행 중

이제 컨테이너를 종료해보겠다. 아래 커맨드를 작성해 엔터를 누르면 정상적으로 종료가 된다.

docker stop apa000ex1

이제 다시 docker ps 명령어를 치면 아무런 컨테이너도 보이지 않는다.

참고로 아래와 같은 명령어를 입력하면 종료된 컨테이너도 확인할 수 있다.

docker ps -a

STATUS 항목에 Exited라고 나오면서 컨테이너가 종료된 상태라는 것을 알려준다.

이제 마지막으로 컨테이너를 삭제해보자. 명령어는 다음과 같다.

docker rm apa000ex1

참고로 여기서도 container rm인데 이를 생략한 것이다. 이제 컨테이너 삭제까지 완료했다.

컨테이너의 통신

방금 실습에서는 아파치 이미지를 사용해 컨테이너를 만들었다.

아파치는 정적인 파일을 제공할 수 있는 웹 서버이다. 고로 정적파일을 통해 웹 사이트 형태로 볼 수 있다.

이번에는 웹 브라우저를 통해 컨테이너에 접근해 웹 사이트가 동작하는지 확인해보자.

 

웹 브라우저를 통해 컨테이너에 접근하려면 컨테이너를 실행할 때 설정이 필요하다고 한다. 한 번 진행해보겠다.

명령어는 다음과 같다.

docker run --name apa000ex2 -d -p 8080:80 httpd

위에서 확인한 명령어와 다른 부분이 있다.

바로 -p 8080:80이다. ( -p 호스트 포트 번호 : 컨테이너 포트 번호)

이 커맨드의 내용은 호스트의 포트 8080을 컨테이너 포트 80으로 포워딩한다는 것이다.

참고로 아파치가 80번 포트를 지켜보는 이유는 컨테이너에 그렇게 설정돼 있기 때문이다.

 

명령어를 입력하면 이미 httpd 이미지를 내려받았으므로 pull에 관련된 정보는 출력되지 않고,

무작위 문자열이 뜬다. 이 문자열은 컨테이너 ID인데 실행할때마다 달라진다고 한다.

이제 그럼 한번 웹 브라우저를 통해 컨테이너에 접근해보자.

정상적으로 접근

정상적으로 접근할 수 있었다. 실습을 정상적으로 마무리했으므로 이번에 생성한 컨테이너도 위 과정을 따라 삭제하도록 하자.

이밖에도 많은 컨테이너를 생성해 실행하고 삭제하고 nginx도 사용해봤다.

MySQL 컨테이너 실행하기

이번에는 MySQL 컨테이너를 만들어보겠다. 이전 실습보다는 좀 더 까다롭다. 제대로 동작하게 하려면 인자를 반드시 지정해야 한다!

터미널에 입력할 명령어는 다음과 같다.

docker run --name mysql000ex1 -dit -e MYSQL_ROOT_PASSWORD=myrootpass mysql

생소한 커맨드에 대해 간단히 살펴보겠다.

 

  • -dit: 백그라운드에서 실행 및 키보드를 통해 컨테이너 내부의 파일 시스템을 조작.
  • -e MYSQL_ROOT_PASSWORD=myrootpass: MySQL의 루트 패스워드를 myrootpass로 지정한다.
  • mysql: MySQL의 이미지 이름이다. 역시나 버전을 적지 않았으므로 최신 버전으로 사용된다.

이렇게 MySQL 컨테이너도 생성해보았다. MySQL에 관해서는 차후에 더 다루어보겠다.

이미지 삭제

마지막으로 이미지를 삭제하는 법을 알아보고 마무리하겠다.

컨테이너를 지워도 이미지는 삭제되지 않는다. 이미지를 삭제할 때는 이미지 ID 또는 이미지 이름으로 지정한다.

이제 본격적으로 알아보자. 우리는 httpd (아파치) 이미지를 삭제할 것이다.

docker image rm httpd

이미지가 삭제된 것을 확인할 수 있다.

이미지 목록의 정보를 가져오는 명령어는 아래와 같다.

docker image ls

 

이렇게 기초적인 도커 실습을 마쳤습니다! 이상으로 포스팅을 마치겠습니다. 감사합니다.

 

참고 자료

그림과 실습으로 배우는 도커 & 쿠버네티스(4단원)

반응형

댓글