본문 바로가기

DevOps/Docker

도커 사용하기(1)- 설치와 컨테이너 실행 :: DANIDANI

도커 설치

스크립트를 사용해서 설치해도 되고, 패키지를 이용해서 설치해도 됩니다.

다음은 AWS Linux에 yum 패키지를 이용해 설치하는 방법입니다.

sudo yum install docker

for mac

Docker Desktop for Mac - Docker Hub

설치 확인

docker version

 

sudo 없이 사용하는 방법

도커는 기본적으로 root 권한이 필요해서 sudo를 붙여줘야 됩니다.

이건 도커 그룹에 사용자 추가하는 명령어로 앞으로의 명령에서 sudo를 생략해도 됩니다.

sudo usermod -aG docker (사용자 이름 ex. ec2-user)

반영이 안 됐을 때는 서버 재시작!

docker 서비스 실행

sudo service docker start

부팅 시 자동으로 실행

sudo chkconfig docker on

 


이미지 가져오기 - pull

docker pull (이미지명):(태그명)
docker pull ubuntu:latest

도커 저장소에서 이미지를 가져와서 사용할 수 있습니다.

컨테이너 실행시키기

docker run -it (이미지이름:태그) (명령어)

 

docker run -d -p 3306:3306 \\ -e MYSQL_ALLOW_EMPTY_PASSWORD=true \\ --name mysql \\ mysql:5.7

 

docker run -it ubuntu:16.04 /bin/bash

-i: interactive 사용자가 입출력이 가능한 상태

-t: 가상 터미널 환경 사용

—name: 컨테이너의 이름을 설정. 설정하지 않을 시 랜덤으로 들어감

-d: 컨테이너를 detach 모드로 사용.

-p: 컨테이너 포트를 호스트 포트로 연결(포트 포워딩)

/bin/bash: 도커는 메인 실행 파일을 지정해 줘야 컨테이너가 유지됩니다.

                 bash가 종료되면 컨테이너도 종료됩니다.

 

run 명령어를 실행하면 사용할 이미지가 저장되어 있는지 확인하고 없으면 pull을 한 후 컨테이너 생성(create)하고 시작(start)합니다.

이미지 태그에는 버전을 입력하게 되고, 입력하지 않으면 디폴트로 latest가 들어갑니다.

 

성공적으로 실행이 되면 해당하는 ubuntu환경에 접속하게 됩니다.

다음 명령어로 버전을 확인해보면 기존 서버에서는 Amazon Linux AMI release 2018.03이 나왔지만

접속한 환경에서는 ubuntu 16.04.7가 나온 걸 확인할 수 있습니다.

cat /etc/issue

 

컨테이너 셸 종료하기

exit

컨테이너는 ssh 서버가 아니라 bash shell process 이기 때문에 셸을 종료하면 컨테이너도 종료됩니다.

셸은 나오지만 종료는 하지 않음

컨테이너 종료하기는 싫고 셸만 나오고 싶으면 컨트롤 + p, 컨트롤 + q 차례로 입력하면 됩니다.

컨테이너 관련 명령어 정리

  • docker run - 컨테이너를 생성하고 실행합니다.
  • docker stop (컨테이너 이름) - 실행 중인 컨테이너를 종료합니다.
  • docker start (컨테이너 이름) - 생성 혹인 중지된 컨테이너를 실행합니다.
  • docker attach (컨테이너 이름) - 실행 중인 컨테이너에 접속합니다.

실행 중인 컨테이너 목록 확인

docker ps

종료된 컨테이너까지 확인하고 싶으면 -a 옵션을 붙이면 됩니다.

컨테이너 로그 보기

docker log (컨테이너이름)

실시간 로그를 확인하고 싶으면 -f 옵션을,

마지막 10줄만 확인하고 싶으면 —tail 옵션을 사용하면 됩니다.

이미지 확인

docker images

 

컨테이너 삭제

docker rm (컨테이너ID)

컨테이너는 삭제되지만 이미지는 삭제되지 않습니다.

이미지 삭제

docker rmi (이미지명)

i는 Image의 줄임말!

exec

docker exec (컨테이너이름) (커맨드)

 

docker exec test ls

컨테이너 외부에서 exec 명령을 사용하여 내부에 커맨드 라인을 수행하게끔 합니다.

ubuntu 컨테이너 이름이 test이라면 저 ls 명령어는 현재 Host OS인 linux에서 실행되는 게 아니라

ubuntu에서 실행이 되는 겁니다. 참고로, 위 명령어를 입력한 곳은 Linux 환경입니다.(컨테이너 외부)

 

728x90