Docker 만져보자
docker run [OPTIONS] IMAGE[:TAG | @DIGEST][COMMAND] [ARG…]이게 도커를 실행하는 명렁어라 한다. |
자주 사용하는 명령어 옵션
이게 자주사용하는 옵션이라 한다.
명령어(옵션) | 내 용 |
---|---|
-d | detached mode 흔히 말하는 백그라운드 모드 |
-p | 호스트와 컨테이너의 포트를 연결 (포워딩) |
-v | 호스트와 컨테이너의 디렉토리를 연결 (마운트) |
-e | 컨테이너 내에서 사용할 환경변수 설정 |
-name | 컨테이너 이름 설정 |
-rm | 프로세스 종료시 컨테이너 자동 제거 |
-it | -i와 -t를 동시에 사용한 것으로 터미널 입력을 위한 옵션 |
-link | 컨테이너 연결 [컨테이너명:별칭] |
명령어를 쳐보자
$ docker run ubuntu:16.04
-이것은 run을 상요할 이미지가 저장되어 있는지 확인하고 없다면 다운로드를 한후 컨테이너를 생성하고 시작한다라는 말이다. pull 다운로드, create 컨테이너를 생성 시작 start
-위 이미지를 다운받은 적이 없기 떄문에 이미지를 다운로드 한 후 컨테이너가 실행되었습니다. 컨테이너는 정상적으로 실행됐지만 무엇을 해라 명령어가 없었기 때문에 생성하자마자 바로 종료된다.
※ 컨테이너는 프로세스이기 때문에 실행중인 프로세스가 없으면 바로 종료된다
-이제 파일을 열어서 확인해보자.
$ docker run --rm -it ubuntu:16.04 /bin/bash
-치면 ubuntu:16/04 안을 바슈셀을 이용하여 열어보는 것이다.
-여기서 -it는 키는 바슈셀에서 키보드 입력을 위해 옵션이 주는것이다.
- –rm 옵션은 프로세스가 종료되면
그러면 ubuntu:16.04의 root계정으로 들어가게 된다.
$ cat /etc/issue
-cat 명령어는 다시한번 확인해보자.
$ ls
-를 치면 그안에 폴더를 본다
$exit
-바슈셀을 종료하면 컨테이너도 같이 종료됩니다.
redis container 를 이용하여 다루어보자
$ docker run -d -p 1234:6379 redis
# redis test
$ telnet localhost 1234
-안으로 들어오게 된다.
# redis test
$ telnet localhost 1234
set mykey hello
+OK
get mykey
$5
hello
가 출력된다.
빠져나오기
quit
- 그냥 순서대로 쳐보자
-d 옵션을 주었기 떄문에 컨테이너를 실행하자마자 컨테이너ID(5dff91d2…)를 보여주고 바로 쉘로 돌아왔습니다. 컨테이너는 종료된 것이 아니라 백그라운드 모드로 동작하고 있고 컨테이너 ID를 이용하여 컨테이너를 제어할 수 있습니다.
-p 옵션을 이용하여 호스트의 1234포트를 컨테이너의 6379포트로 연결하였고, localhost의 1234포트로 접속하면 redis를 사용할 수 있습니다.
-테스트결과 redis에 접속하여 새로운 키를 저장하고 불러오는데 성공했습니다. 실행이 간단한건 물론이고 호스트의 포트만 다르게하면 하나의 서버에 여러개의 redis 서버를 띄우는 것도 매우 간단합니다.
그다음으로 실행할 것은
MySQL5.7 container입니다
-e 옵션 환경변수설정
-name dhqtus 컨테이너에 읽기
$ sudo gpasswd -a ${USER} docker
-지금 연결된 사용자를 도커그룹에 추가한다.
$ sudo service docker restart
-이제 도커데몬을 재시작하자. 꼭 재시작해야한다.
도커그룹에 대한 변경사항을 활성화해보자.
-이어서 해보자. 과연 서버가 둘다 떳을라나
$ newgrp docker
-로그인이 된다.
$ newgrp docker
-한번더 하면 로그아웃된다.
$ docker version
오 클라이언트 서버 둘다 떳다. 성공인가?