인프라/Docker

[Docker] 2. Docker 명령어 및 실습

jwKim96 2020. 1. 7. 01:22

도커를 실행하는 명령어는 다음과 같은 형태이다.

$ docker run [OPTIONS] IMAGE

docker run 옵션

옵션 설명
-d detached mode 흔히 말하는 백그라운드 모드
-p 호스트와 컨테이너의 포트를 연결 (포워딩)
-v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
-e 컨테이너 내에서 사용할 환경변수 설정
–name 컨테이너 이름 설정
–rm 프로세스 종료시 컨테이너 자동 제거
-it -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션
–link

컨테이너 연결 [컨테이너명:별칭] 

* 이제 거의 사용되지 않는다고 한다.

run명령어는 명시한 image로 컨테이너를 만들어 실행하는데, 

 

로컬에 명시한 image가 없으면 다운받아서 컨테이너를 만들고 실행한다.

 

 

 

1. Ubuntu16.04 container 실행하기

 

$ docker run ubuntu:16.04

 

위 문장 하나면 ubuntu16.04 컨테이너가 만들어진다...!

 

다만, 컨테이너는 하나의 프로세스기때문에 실행중인 프로세스가 없으면 종료된다.

 

그래서 /bin/bash를 입력하여 ubuntu를 다시 실행하면, 마치 새로운 ubuntu에 접속한것 처럼 사용할 수 있다.

 

$ docker run ubuntu:16.04 /bin/bash

 

2. MySQL 5.7서버 구동하기

 

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

-d 백그라운드에서 실행하겠다는 의미.

-p 3306:3306 호스트의 3306포트를 해당 컨테이너의 3306포트에 연결하겠다는 의미

--name mysql 은 해당 프로세스(컨테이너)의 이름을 mysql로 지정하겠다는 의미

mysql:5.7 는 앞서 작성한 옵션과 함께 mysql5.7 image로 컨테이너를 생성하여 실행하겠다는 의미이다.

 

이 컨테이너는 MySQL Server만 동작하고있기 때문에, 현재 linux에 MySQL 클라이언트가 설치되어있지 않으면

MySQL에 접속할 수 없다.

 

# 번외 exec

하지만 다음 명령어를 수행하면 MySQL에 접속할 수 있다.

 

 

$ docker exec -it mysql mysql -uroot

$ docker exec [OPTIONS] CONTAINER COMMAND

exec명령어는 현재 수행중인 컨테이너에 명령어를 전달(수행)하는 방법이다.

 

이전에 root계정을 password없이 생성하였기 때문에 바로 mysql로 접속이 된다.

 

 

3. 프로세스 명령어

 

3-1 프로세스 보기

 

$ docker ps

$ docker ps -a

 

ps 명령어는 현재 실행중인 컨테이너 목록을 보여준다.

그리고 -a 옵션을 추가하게 되면, 컨테이너 실행은 종료되었지만 삭제되지 않은 컨테이너를 보여준다.

 

3-2 컨테이너 중지하기

 

$ docker stop [OPTIONS] CONTAINER [CONTAINER . . . ]

 

위는 컨테이너를 중지하는 명령어이다.

 

3-3 컨테이너 삭제하기

 

$ docker rm [OPTIONS] CONTAINER [CONTAINER . . . ]

실행이 종료된 컨테이너를 완전히 제거하는 명령어이다.

 

실행이 종료된 컨테이너 모두를 삭제하는 명령어는 다음과 같다.

$ docker rm -v $(docker ps -a -q -f status=exited)

 

 

4. 이미지 명령어

 

4-1 이미지 목록 확인

 

다음 명령어를 실행하면 현재까지 다운로드한 이미지 목록을 볼 수 있다.

 

$ docker image

$ docker image [OPTIONS] [REPOSITORY[:TAG]]

 

4-2 이미지 다운로드

 

$ docker pull ubuntu:16.04

$ docker pull [OPTIONS] IMAGE[:TAG|@DIGEST]

 

ubuntu16.04 이미지를 다운받는 명령어이다.

 

4-3 이미지 삭제

 

$ docker rmi ubuntu:16.04

$ docker rmi [OPTIONS] IMAGE [IMAGE . . . ]

 

다운받은 ubuntu:16.04 이미지를 삭제하는 명령어이다.