[Docker] 3. 이미지 받아서 실행하기 (ft. 컨테이너 명령어, sudo 입력하지 않기)

tip. sudo 입력하지 않기

docker를 쓰다보면 sudo를 항상 붙여줘야 하는데 이는 docker 명령을 root 권한으로 실행해야 하기 때문에 일반 계정에서는 sudo가 항상 붙는 것이다. 매번 입력하기 귀찮고 빠뜨릴 때도 많다. sudo를 입력하지 않는 방법은 2가지이다.

1. 처음부터 root 계정으로 로그인하거나 root 계정으로 전환

1
sudo su #root 계정으로 전환
cs

2. 현재 계정을 docker 그룹에 포함

1
2
sudo usermod -aG docker ${USER}
sudo service docker restart
cs


도커 이미지 다운로드 받아서 실행하기

도커는 이미지를 만들거나 받아서 호스트에 저장한 후 컨테이너로 run해서 프로세스로 만든다. 무언가 실행하려면 이미지가 필요한 셈이다.

이미지를 직접 만드는 방법도 있고, docker hub를 이용해서 공식 이미지나 다른 사용자들이 만들어놓은 이미지를 다운로드받는 방법도 있다.

우선 Docker Hub에서 이미지를 받는 방법이다. 우분투 리눅스 이미지를 받아보겠다.

1
docker pull ubuntu:latest
cs

docker pull <이미지 이름>:<태그> 형식이다. latest를 설정하면 최신 버전을 받는다. latest 대신 16.04, 18.04를 입력해서 태그를 지정해 줄 수도 있다.
이미지 이름에서 username/imagename:tagname 형식을 사용하면 공식 이미지가 아닌 사용자 이미지를 받는다.


1
2
docker images
docker run -it --name hello ubuntu /bin/bash
cs

이제 docker images 명령어를 통해 이미지를 출력하여 도커 이미지가 잘 받아졌는지 확인하고 ubuntu 이미지를 컨테이너로 실행해보자.
docker run <옵션> <이미지 이름> <실행할 파일> 형식이다.
위의 코드는 ubuntu 이미지를 컨테이너로 생성 후 이미지 안의 /bin/bash를 실행한다. 이미지 이름 대신 이미지 ID를 사용해도 좋다.
-it 옵션을 사용하면 실행된 Bash 쉘에 입출력을 할 수 있다.
--name 옵션을 사용하면 컨테이너 이름을 지정해줄 수 있고, 지정하지 않으면 자동으로 이름을 부여한다.

이제 Host OS와 완전 격리된 공간이 생성되었다. cd, ls 명령으로 확인해보면 완전 분리된 공간임을 알 수 있다. exit를 입력하면 Bash 쉘에서 빠져나온다. (도커 -> HostOS)

저기서 만든 컨테이너에서 exit를 입력하면 /bin/bash 파일을 직접 실행했기 때문에 컨테이너가 정지상태로 바뀐다.

여기서 컨테이너의 상태가 나왔는데, 컨테이너의 상태나 시작, 종료 등은 어떻게 해야할까?


컨테이너 관련 명령어

1
2
3
4
5
6
7
8
9
docker ps -#모든 컨테이너 출력(정지 컨테이너 포함)
docker ps #실행 중인 컨테이너만 출력
docker start hello #hello 이름의 컨테이너 시작
docker restart hello #hello 이름의 컨테이너 재시작(재부팅)
docker attach hello #컨테이너에 접속(bash 쉘 접속)
docker stop hello #hello 이름의 컨테이너 종료
docker rm hello #hello 이름의 컨테이너 삭제
docker rm -f hello #hello 이름의 컨테이너 강제삭제
cs

여기서 컨테이너를 삭제하는 명령어는 rm이고, 이미지를 삭제하는 명령어는 rmi를 쓰면 된다.

우분투 공식 이미지를 받아서 컨테이너화 시키고 그 컨테이너를 시작, 종료하는 명령어도 알게 되었다. 다음에는 나만의 Docker 이미지를 생성해보도록 하겠다.

댓글 없음:

Powered by Blogger.