이번에 코딩 부트캠프 기업 협업으로 나간 코오롱글로벌에서 저명하신 데브옵스 개발자분(Peter님)을 만나 뵐 수 있었는데, 그분께서 우리 팀원들에게 기본적인 네트워크 지식들과 특히 도커에 대한 지식들을 많이 알려주셨다.
그로 인해 우리 팀원들은 도커에 대한 기본 지식을 학습하고 실습하여 진행하던 프로젝트를 도커로 배포할 수 있었다. Ralf님의 도움으로 도커 컴포즈까지 성공!!
이전까지 도커가 무엇인지는 알고 있었는데 그래서 이게 뭐..? 꼭 사용해야하나? 라는 생각이었다. 이번 프로젝트를 진행하고 나서 도커의 필요성과 그의 흐름에 대해 좀 더 알게 되었고, 기업협업이 끝난 후 개인적으로 추가적으로 도커 공부를 하고 나서 이제 기본은 알 것 같아! 라고 말할 수 있게 된 것 같다. (하지만 아직도 어려운 도커의 세계😇)
도커는 컨테이너 기반으로 애플리케이션을 신속하게 구축, 테스트, 배포할 수 있는 오픈소스 플랫폼이다.
위의 귀여운 도커 로고를 바탕으로 내가 이해한 도커를 간단히 설명해보겠다. 도커는 돌고래 위에 있는 컨테이너들을 이용해 프로세스를 격리시켜주는 한 도구로 컨테이너 안에는 규격화 되어있는 라이브러리
, 시스템 도구
, 코드
등 소프트웨어를 실행하는데 필요한 모든 것이 포함되어 있다.
쉽게말해서 A라는 컨테이너 안에 생선을 담는다고 가성해보자.
A컨테이너에는 생선을 운반하는데 적절한 온도와 습도 등을 조절하는 장치가 필요할 것 이다. 여기서 생선은 우리가 작업한 애플리케이션이 되고 온도나 습도 등을 조절하는 장치는 우리의 애플리케이션을 실행하는데 필요한 장치들이라고 생각하면 된다.
도커 컨테이너는 도커 이미지를 기반으로 실행된다.
도커 이미지는 컨테이너를 만드는데 필요한 파일과 설정값들을 포함하고있으며 이러한 이미지를 만들기 위해서는 보통 Dockerfile을 빌드해서 만들게된다.
도커 이미지의 설정값은 변하지 않으며, 이 이미지를 이용하게된다면 언제나 동일한 컨테이너를 만들 수 있게된다. 만약 이미지의 설정을 변경하고싶으면 새로운 이미지를 만들어 사용하면 된다.
이렇게 만들어진 이미지들은 도커허브 https://hub.docker.com/ 에 올려두고 언제든지 사용할 수 있다.
리눅스 자동 설치 스크립트
$ sudo wget -qO- https://get.docker.com/ | sh
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sh get-docker.sh
우분투
$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker
컨테이너 목록 보기
$ sudo docker ps // -a붙이면 모든 컨테이너 목록 확인가능
컨테이너 시작
$ sudo docker start [컨테이너 id 또는 name]
컨테이너 재시작
$ sudo docker restart [컨테이너 id 또는 name]
컨테이너 접속
$ sudo docker attach [컨테이너 id 또는 name]
컨테이너 정지
$ sudo docker stop [컨테이너 id 또는 name]
컨테이너 삭제
$ sudo docker rm [컨테이너 id 또는 name]
모든 컨테이너 삭제
$ sudo docker rm `docker ps -a -q`
이미지 목록 보기
$ sudo docker images
이미지 검색
$ sudo docker search [이미지 이름]
이미지 받기
$ sudo docker pull [이미지 이름]:[버전] //:latest 작성 시 최신 버전으로 받음
이미지 삭제
$ sudo docker rmi [이미지 id]
$ sudo docker rmi -f [이미지 id] //컨테이너도 강제 삭제
이상 도커와 명령어에 대해 간단히 정리해 보았다.
너무 간단히 정리하긴 했지만.. 내가 생각하기에 도커는 이론만 알고 있기보다는 직접 실습해 보며 알아가는 게 더 이해가 잘 되는 것 같다! 무궁무진한 도커의 세계, 도커를 자유자재로 다룰 수 있을 때까지 열심히 알아가보자🌈