Docker 컨테이너 연습
이 포스팅은 Docker 컨테이너를 실행해보는 개인적인 과정을 담고 있습니다.
https://subicura.com/2017/01/19/docker-guide-for-beginners-2.html 에 있는 내용을 기반으로 따라한 과정과 정리 내용입니다.
도커에 대해 자세하게 알고 싶다면, 위 블로그를 참조하시면 됩니다.
Docker 설치 확인
이전 포스팅에서 도커 설치를 진행 했었는데, 잘 설치되었는지 확인해 봅니다.
터미널에서, docker version
명령어를 실행해 봅니다.
1 | docker version |
정상적인 설치가 완료 된것으로 보입니다.
버전 정보는 Client 와 서버로 나누어져 있습니다.
이는, 클라이언트와 서버 역할을 할수 있다는것을 의미 합니다.
컨테이너 실행 하기
도커를 실행하는 명령어의 구조는 아래와 같습니다.
1 | docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...] |
자주 사용하는 옵션들은, 아래와 같습니다.
옵션 | 설명 |
---|---|
-d | detached mode 흔히 말하는 백그라운드 모드 |
-p | 호스트와 컨테이너의 포트를 연결 (포워딩) |
-v | 호스트와 컨테이너의 디렉토리를 연결 (마운트) |
-e | 컨터이너 내에서 사용할 환경변수 설정 |
-name | 컨테이너 이름 설정 |
-rm | 프로세스 종료시 컨테이너 자동 제거 |
-it | -i 와 -t 를 동시에 사용한 것으로 터미널 입력을 위한 옵션 |
-link | 컨터이너 연결 [컨테이너명:별칭] |
컨테이너 생성하기
터미널에서 아래 명령어를 실행하여, 컨테이너를 생성해 봅니다
1 | docker run ubuntu:18.04 |
docker run ubuntu:18.04
를 실행하면,
ubuntu:18.04 를 로컬에서 찾을수가 없으니, 다운로드를 한 뒤에 컨테이너를 생성하고 시작합니다.
중요한점은, 컨테이너는 생성되었지만, 바로 종료가 된다는 점인데.
컨테이너는 잘 생성되어 실행 되었지만, 명령어가 전달되지 않았기 때문에,
생성되자마자 바로 종료가 됩니다. 컨테이너는 프로세스이기 때문에, 실행중인 프로세스가 없으면 컨테이너는 종료됩니다.
컨테이너 생성후 bin/bash/ 실행
위와 같은 명령어지만, 몇가지 옵션을 추가하여 컨테이너를 실행 해 볼수 있습니다.
1 | docker run --rm -it ubuntu:18.04 /bin/bash |
--rm
프로세스가 종료되면, 컨테이너가 자동으로 삭제되도록 하는 옵션
--it
컨테이너 내부에 들어가기 위한 bash 쉘을 실행하고, 키보드 입력을 할수 있게 해줌
bash 쉘을
exit
명령어를 사용하여 종료하면, 컨테이너도 같이 종료가 됩니다 (--rm
옵션으로 인해서..)
Redis Container
redis 는 메모리기반의 다양한 기능을 가진 스토리지로,
6379 포트로 통신하여, telnet 명령어로 테스트해볼수 있습니다
일단 아래 명령어를 실행하여, detached mode 로 redis 컨테이너를 실행해줍니다
1 | docker runi -d -p 1234:6379 redis |
-d 와 -p 옵션을 추가하여, 컨테이너의 포트를 호스트 포트로 연결해 줍니다.
-d 가 없으면, 프로세스가 foreground 로 실행되어, 아무키도 입력할수 없습니다.
redis 에 접속하여 새로운 키를 저장하고 불러와 보았습니다.
호스트의 포트만 다르게 하며느 하나의 서버에 여러개의 redis 서버를 띄우는것도 간단합니다.
MySQL 5.7 Container 생성
MySQL 서버 컨테이너를 생성 후 실행해봅니다.
여기에 들어가는 옵션들이 중요한데.
옵션 | 설명 |
---|---|
-d | detached mode 흔히 말하는 백그라운드 모드 |
-p | 호스트와 컨테이너의 포트를 연결 (포워딩) |
-e | 환경변수 설정 |
–name | 읽기 어려운 ID 대신, 쉬운 이름을 부여 |
1 | docker run -d -p 3306:3306 \ |
해당 시스템에는, mysql이 설치가 되질 않아서, mysql에는 접속이 되지 않습니다;;;
tensorflow 컨테이너
머신러닝을 할수 있는 툴, tensorflow 를 만들어 실행해 봅니다
1 | docker run -d -p 8888:8888 -p 6006:6006 teamlab/pydata-tensorflow:0.1 |
도커 기본 명령어 - 컨테이너 목록 확인
ps
는 실행중인 컨테이너 목록을 보여줍니다.
1 | # 컨테이너 목록 확인 |
혹은, -a
옵션을 주어도 됩니다
1 | docker ps -a |
도커 기본 명령어 - 컨테이너 중지
1 | docker stop [options] CONTAINER [CONTAINER...] |
생성되어 있던 tensorflow 를 중지해봅니다
1 | docker ps # get container ID |
도커 기본 명령어 - 컨테이너 제거
종료된 컨테이너를 완전하게 제거하는 명령어는 아래와 같습니다.
1 | docker rm [options] CONTAINER [CONTAINER..] |
종료된 ubuntu 컨테이너와 tensorflow 컨테이너를 삭제해봅니다
1 | docker ps -a # get container ID |
도커 기본 명령어 - 이미지 제거
이미지 목록 확인 하기 (images)
1 | docker images |
컨테이너가 실행중인 이미지는 삭제되지 않지만, 아래 명령어를 사용해서, tensorflow 를 제거해봅니다
1 | hello-world latest fce289e99eb9 16 months ago 1.84kB |
이미지가 삭제 됩니다