Docker란?
도커는 vmware, virtualbox와 같은 가상 머신처럼 독립된 실행환경을 제공하면서도, 컴퓨터에 직접 애플리케이션을 설치한 것과 같이 빠르고, apt, npm, pip 처럼 명령어 한줄로 원하는 앱이 포함된 실행환경을 손쉽게 설치할 수 있는 환상적인 개발환경을 제공한다.
docker hub에서 image를 다운로드 받는 행위를 pull이라고 하고
image를 실행시키는 행위를 run 이라 한다.
프로그램처럼 image도 여러개의 컨테이너를 가질 수 있다.
https://hub.docker.com/ 에 이미지를 다운받을 수 있고
아파치 웹서버는 httpd 라는 이름으로 존재한다.
아파치 웹서버 image를 pull 해서 container화 시킬거다.
docker pull httpd 라는 명령어로 이미지를 다운로드 받을 수 있다.
다운로드 확인 명령어는 docker images 를 사용하면 된다.
위와 같이 httpd가 나와있다면 잘 다운로드 된거다.
컨테이너 실행 - docker run 컨테이너이름
컨테이너 삭제 - docker rm
이미지 삭제 - docker rmi
웹서버가 컨테이너 안에 설치되는데 컨테이너가 설치된 운영체제를 Host라고 부른다.
Host와 Container를 연결해주는 작업이 필요하다.
로컬 포트 -> 컨테이너 포트 연결
위의 명령어를 입력하면 웹서버를 실행시키는데 로컬의 8081 포트로 접근을 하면 컨테이너의 웹서버 포트인 80번 포트로 포워딩하여 사용할 것임을 명시하는 것이 된다.
그리고 해당 웹서버에 접근하여 CLI를 사용하고 싶을 때는 해당 명령어를 사용한다.
호스트와 컨테이너의 파일시스템을 연동하여 사용할 수도 있다.
수정작업 -> 호스트 / 실행환경 -> 컨테이너로 설정을 할거다.
버전관리/백업정책/코드편집의 장점이 있다.
그리고 commit 명령을 이용하면 내가 사용중인 컨테이너를 이미지로 만들 수 있다.
그렇게해서 나의 이미지로 컨테이너들을 만들 수 있고, docker hub와 같은 레지스트리로 push할 수도 있다.
수정한 컨테이너 commit 명령을 내리면 그 컨테이너가 새로운 이미지가 된다. 그 이미지를 기반으로 run을 하면 또 다른 컨테이너가 만들어진다. 또, 그렇게 만든 이미지를 push해서 docker hub에 올릴 수도 있다.
위와 같이 우분투 위에 항상 git이 필요하다고 가정하면 다운받은 이미지에 git을 추가한 컨테이너를 커밋하여 이미지를 만들 수 있다.