도커를 실행하는 명령어는 다음과 같은 형태이다.
$ 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 이미지를 삭제하는 명령어이다.