Intro
Docker
가 보통은 Image를 이용해 소프트웨어를 배포할 때 많이 쓰이는 것 같긴 하지만, 본연 그대로를 다시 생각해보면 Docker
는 OS 를 가상화시켜주는 소프트웨어이기 때문에, 어떤 독립적인 작업공간이 필요할 때 Docker
를 이용하는 것도 의외로 간편하고 재미있어요.
예를 들어 내가 단순히 Python
프로그램을 새로운 방식으로 시도하고 있다면 그냥 한 프로젝트 디렉토리를 만들어서 이용하거나 Virtual Environment를 이용하면 되겠지만, Nginx
나 Apache
, Vim
설정 등 얕은 깊이에서 노는 것이 아니라, 사용자나 OS와 관련된 작업을 한다면. 내 원래의 환경에서 작업하기 조금 부담스럽죠.
혹은 강의 영상을 찍거나 블로그에 글을 올리기 위한 Demo 를 위해서도 초기환경부터 시작하는 모습을 보여주기 위해 Docker
로 간단하게 초기와 같은 환경을 구축할 수 있어요.
Super Simple Dockerfile
우선은 Dockerfile
을 대충은 어떻게 쓰는 지 알아야합니다. 모른다면 찾아보고 오시거나 그냥 '아 그렇구나' 정도로만 보시면 될 듯 합니다.
FROM ubuntu:18.04
ENTRYPOINT ["/bin/sh", "-c", "/bin/bash"]
# ENTRYPOINT "/bin/bash"
ENTRYPOINT
두 줄 중 아무거나 사용하셔도 되고, 위의 단 두 줄을 이용해, ubuntu:18.04
의 작업환경을 만들어 줄 수 있는 Image를 build 할 수 있습니다.
How to Use and Commands
docker build . -t myubuntu
Image를 빌드합니다.
docker run -it --name=ubuntu_container myubuntu
build된 Image를 이용해 Container를 만들고 Run 합니다. 컨테이너의 이름은 ubuntu_container
로 하겠습니다.
docker ps
새로운 터미널 창을 켜서 입력해보면, 해당하는 컨테이너가 목록에 존재합니다.
docker ps -a
만약 작업 중이면 컨테이너의 bash
창을 나가면 컨테이너는 종료됩니다. 그럼 docker ps -a
에서 종료된 컨테이너를 포함한 리스트를 볼 수 있습니다.
docker start -i {{container_name}}
컨테이너 이름을 인자로 주어 종료된 컨테이너를 다시 시작할 수 있습니다. Interactive하게 컨테이너와 Input Ouput을 공유하므로 -i 인자를 줍니다.
Examples #1 Ubuntu
제 환경이 ubuntu
환경이긴하지만 ubuntu
Image로 한 번 작업을 해보겠습니다.
가상환경이 잘 구축되었고, 그 곳의 Bash Shell
을 사진처럼 이용할 수 있습니다.
실행중인 컨테이너의 terminal 창이 아닌, 새로운 terminal 창에서 docker ps
를 쳐보면, 아까 그 container가 run 중임을 알 수 있습니다.
컨테이너가 종료되었다면 다시 start
를 통해 running status로 만들 수 있고, 컨테이너의 terminal
창을 이용할 거니까 -i
인자를 줬습니다.
Examples #2 CentOS
방금 Build 한 Image를 이용해 Run 하여 Bash shell
창에 들어와 보면 CentOS
로 작업 중인 것처럼 작업할 수 있습니다.
Outro
Docker 를 이용해 아주 간단하게 독립 가상 공간을 구축하는 것을 알아보았습니다.
저 같은 경우는 Nginx를 처음 배울 때 몇 번 사용해보기도 했고, Python 개발환경을 구축할 때에도 자주 써봤던 것 같아요.
원래 Docker는 Container가 전달받은 하나의 작업을 하고 바로 종료되어버리는데, ENTRYPOINT
에 bash
를 줌으로써 터미널 자체를 이용하는 식으로 하면 터미널창을 나가지 않는 이상 계속해서 Container를 살려둘 수 있어서 좋은 것 같아요
'Linux > Docker' 카테고리의 다른 글
Docker가 REST API를 이용함을 확인해보자 (0) | 2020.03.09 |
---|---|
docker daemon 설정을 이용해 원격으로 docker 이용하기 (0) | 2020.03.08 |
Dockerfile의 CMD와 ENTRYPOINT 차이. docker-compose.yml의 command (0) | 2019.08.26 |
[Docker] Docker 시작하기. 예제를 하나 만들고 실행해보자 (0) | 2019.03.16 |
[Docker] Docker 시작하기. Docker란? Docker와 Container의 개념에 대하여 (0) | 2019.03.16 |