BDKK SI Engineer

Docker를 만져보자

2019-02-14

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

​ 오 클라이언트 서버 둘다 떳다. 성공인가?


Comments

Content