도커 Docker는 리눅스 컨테이너(Linux Container) 기술을 이용한 서비스다. 도커를 사용해서 여러 애플리케이션 실행 환경을 설정할 수 있다. 저 정의로는 이해하기는 어려운 개념을 조금 풀어서 알아보자. 도커는 container과 image 라는 개념을 먼저 알아야 한다. image 와 container의 관계과 비슷한 관계가 프로그램과 프로세스의 관계다. 프로그램은 자체적으로는 실행되기 전에 필요한 파일들을 모아놓은 것이다. 프로세스는 이 프로그램을 실행시켜서 메모리에 올라가 있는 실행되어 있는 상태를 말한다. 이것과 비슷하다. image는 프로그램이고 container는 프로세스와 같다. image를 실행시켜서 container를 생성한다. image를 실행시킨다는 것이다. 실행된 image가 container이다. 여기서 docker의 특징은 여러 프로그램이 실행되서 여러 프로세스가 있듯이 여러 container이 생성될 수 있는데 각각은 독립적으로 작동한다.
docker를 공부하면서 처음에 개념은 이해가 되었다고 생각했는데 이걸 명령어로 사용하려니까 어떻게 사용해야할지 몰라서 한참을 헤매고 다녔다. 같이 공부했던 페어분이 가르쳐주셔서 조금씩 문제를 해결할 수 있었다. 명령어를 사용하면서 점점 개념들이 이런 의미였다는 알아가는게 느껴졌다. 이 docker가 git과 비슷한 느낌이 많이 났다. github, hub.docker이 비슷한 역할을 한다는것도 신기했다. 그리고 사용하면 사용할수록 이 시스템으로 할 수 있는게 정말 많겠다고 생각했고 정말 많이 편해졌겠다는 생각을 했다. 개발 환경을 만들고 이미지로 만들어서 그 이미지 파일을 토대로 서버 컴퓨터에서 이미지를 받아 컨테이너를 만들면 코드만 올려서 돌리면 되는 과정이 많은 불필요한 반복을 없애주다는 것과 비효율적인 트러블 슈팅을 막을 수 있는 이런 점이 정말 생산성을 높일 수 있겠다는 생각이 들었다. 많은 명령어를 알지 못하지만 시간이 난다면 더 자세히 공부해서 활용해보고 싶다.