Docker Hub
Docker Hub
Docker 는 컨테이너기반 애플리케이션 격리모드로 동작하도록 해준다. 기존의 Hypervisor 를 사용하는 가상화가 아닌 Docker Engine 이 각 애플리케이션을 격리해준다. 애플리케이션이라는 말은 운영체제를 포함한다.
이 컨테이너에서 운영할 각종 애플리케이션들이 있어야 하는데, 이런 것을 개개인이 만들어서 사용해야한다면 비용이 많이 들것이다. 예를들어 Ubuntu 16.04 를 Docker 에서 동작하기 위해서 Docker 컨테이너 환경에서 설치부터 해야한다면 가상화 시스템과 다를바가 없을 것이다.
그래서 많은 사람들이 사용할 애플리케이션을 미리 이미지로 구워서 필요한 애플리케이션이미지를 다운받아 각종 설정들과 함께 실행만 시키면 될 것이다. 이는 마치 리눅스 시스템에서 각종 애플리케이션을 컴파일 설치해야하는 대신에 미리 컴파일된 패키지를 이용하면 편리하다.
미리 컴파일된 패키지와 같은 것이 Docker Image 다. 미리 Docker 컨테이너 환경에서 동작할 수 있도록 미리 설치, 설정되어진 각종 애플리케이션을 말한다.
운영체제에서 미리 컴파일된 패키지를 제공하기 위해서 Redhat 에서는 Yum, Debian 에서는 apt 라는 공용 저장소를 제공한다. 내가 필요로하는 애플리케이션을 설치하고 싶다면 소스코드를 다운받아서 컴파일 설치할 필요없이 공용 저장소에 미리 컴파일된 패키지를 다운받아 설치만 하면 되는 것이다.
Docker Hub가 바로 위와 같다. Doker Hub 를 풀어서 말한다면 Docker Image 저장소쯤 될것이다. 필요로하는 애플리케이션들이 Docker Hub 에서 Image 를 다운받아서 구동만 해주면 바로 사용할 수 있게되는 것이다.
Docker Registry 라고 있는데, Docker 내부 컴포넌트중에 하나 인데 Docker Hub 에서 다운받아 가지고 있는 저장소라고 보면된다. 저장소이다보니까 공개된 Docker Hub 대신에 Private Hub 를 구축할때에 Docker Registry 를 사용기도 한다.
말을 잘해야 한다
여기서 컨테이너에서 동작하는 Image 라는 말은 잘못된 말이다. 거꾸로다. Image 를 가지고 컨테이너를 생성한다고 해야 맞는 말이다. 컨테이너는 가상환경이 아니다. 소프트웨어 격리 공간인데, 이 공간은 소프트웨어가 있어야만 가능하다. 따라서 Image 를 가지고 컨테이너를 생성한다고 해야 맞다.
docker search 이미지
이미지를 찾고 싶을때 사용한다. mariadb 로 검색을 하면 여러개가 나오는데 공식적으로 배포하는 이미지 말고는 전부다 커스텀 이미지라고 보면 된다.
docker pull 이미지:태그
이 명령어는 Docker Hub 에서 이미지를 다운받을 때 사용한다. 이미지를 Docker 서버에 다운로드 한다. 그런데, 이미지라도 버전이 있을 수 있다. 예를들어 mariadb 의 경우에도 다양한 버전이 존재한다. 이때 태그에 가능한 버전을 기입하면 그 버전을 다운받게 된다. 항상 최신의 버전을 다운받고 싶다면 latest 로 해주면 된다.
1 2 3 4 5 6 7 8 9 |
$ docker pull ubuntu:latest latest: Pulling from library/ubuntu 22dc81ace0ea: Pull complete 1a8b3c87dba3: Pull complete 91390a1c435a: Pull complete 07844b14977e: Pull complete b78396653dae: Pull complete Digest: sha256:e348fbbea0e0a0e73ab0370de151e7800684445c509d46195aef73e090a49bd6 Status: Downloaded newer image for ubuntu:latest |
보통 태그는 그 소프트웨어의 버전인 경우가 많다.
doker images
Docker 서버에 다운받은 Image 리스트를 보여준다.
docker rmi 이미지ID
다운받은 Image 를 삭제한다. 인자로 이미지ID를 줘야 하는데, docker images 로 확인 가능하다.