쏴아리의 딥러닝 스터디

Docker 컨테이너 생성하기, docker run & docker create 본문

Docker

Docker 컨테이너 생성하기, docker run & docker create

말해보시개 2021. 6. 20. 15:16

Docker 컨테이너 생성하기, docker run & docker create

안녕하세요. 쏴아리입니다. 

오늘은 docker에서 컨테이너를 생성하는 명령어인 docker run & docker create의 예제와 그 차이점을 포스팅 하였습니다. 

 

 

 docker run 예제 

  도커 엔진의 버젼을 확인합니다.

$docker -v

 

docker run 명렁어를 통해 컨테이너를 생성하고 실행합니다. 

  • ubuntu:14.04 컨데이너를 생성하기 위한 이미지 이름
  • -i -t: 컨테이너와 상호 입출력하는 옵션

$docker run -i -t ubuntu:14.04

 

$docker run 명령어를 실행결과, /var/run/docker.sock의 permission denied 에러가 발생합니다. 

 

 

 

다음과 같이 /var/run/docker.sock 파일의 권한을 666으로 변경하여 그룹 내 다른 사용자도 접근 가능하게 변경합니다. 

$sudo chmod 666 /var/run/docker.sock

 

권한 변경 후 다시 docker run을 실행합니다.

$docker run -i -t ubuntu:14.04

ubuntu:14.04 이미지가 local 도커 엔진에 존재 하지 않기 때문에, 도커 허브에서 이미지를 내려받습니다. 

컨테이너에서 기본 사용자는 root이고, 호스트 이름은 컨테이너의 고유한 ID입니다.(root@3ca0e2c157ba)

 

 

ls 명령어로 파일 시스템을 확인해보면, 아무것도 설치되지 않은 상태입니다. 

$ls

즉, 컨테이너와 호스트OS의 파일시스템은 서로 독립인것을 확인할 수 있습니다. 

 

exit을 통해, 컨테이버 내부에서 빠져나오고, 컨테이너를 정지시킵니다. 

$exit

 

 docker create 예제 

  docker pull 명령어를 통해 도커 공식 이미지 저장소로부터 centos:7 이미지를 내려받겠습니다. 

$docker pull centos:7

 

docker images 명령어를 통해 도커 엔진에 존재하는 이미지의 목록을 확인합니다. 

$docker images

centos:7 이미지와 docker create를 통해 내려받은 ubuntu:14.04 이미지가 존재함을 확인할 수 있습니다.

 

 

docker create 명령어를 통해 centos:7 이미지로 컨테이너를 생성합니다. (이전 예제에서는 docker run을 통해 컨테이너를 생성했습니다.)

  • --name: 컨테이너의 이름을 설정하는 옵션 
$docker create -i -t --name mycentos centos:7

docker run 명령어와 다르게, docker create 명령어는 컨테이너를 생성하기만 하고, 컨테이너 내부로 들어가지 않습니다.(docker run 명령어는 컨테이너를 생성 한 뒤, 컨테이너에 들어갑니다)

 

docker start, docker attach 명령어를 통해 컨테이너를 시작한 뒤, 내부로 들어가겠습니다. 

$docker start mycentos 
$docker attach mycentos

 

docker를 종료하기 위해서 Cntl+P,Q를 입력합니다. 

exit과 다르게, 컨테이너를 정지시키지 않고 컨테이너를 빠져나옵니다. 

 

 

 docker 컨테이너 생성: docker run vs docker create

  docker run 명령어와 docker create 명령어의 차이점을 정리해 보겠습니다.

▷ docker run 명령어

  • pull create start 명령어를 실행 한 후, attach가 가능한 컨테이너일 경우 컨테이너 내부로 들어갑니다. 

▷ docker create 명령어

  • pull create만 실행합니다. 즉, 도커 이미지를 pull하고 컨테이너를 생성 하기만 하고, start와 attach를 실행 하지 않습니다. 

 

 

 

 

 

같이 보시면 좋아요.

 

포스팅 내용이 도움이 되었나요? 공감과 댓글은 큰 힘이 됩니다!

 

Comments