내부망에 구축된 Docker에 login을 시도했다. 하지만 오류가 발생하였고 다음과 같은 메세지가 나왔다. > Error response from daemon: Get https://docker.privatearea.com/v2/: dial tcp 172.17.xxx.xxx:443: connect: no route to host no route to host ! Docker는 기본 네트워크 대역을 172.17.xxx.xxx 대역을 사용해서 내부망 환경이 구성된 경우 다른 대역을 사용해서 Out Bound Traffic이 발생할 수 있다고 한다. 그래서 172.17.xxx.xxx 와 내부망의 연결을 위해 bip (bridge ip)로 설정을 해줘야한다. bip는 Docker 사설망을 만든 사람이 정의를 ..
docker-compose는 조금 더 docker를 편하게 사용할수 있도록 해주는 도구이다. Docker 플러그인 같은 개념이라고 생각하면 이해가 편하다. 근데 뭘 조금 더 편하게 해줄까? docker에서 수행되는 일련의 작업(eg. build, run, network, volume..)을 docker-compose.yml 파일을 통해서 한방에 하게 해준다. docker-compose.yml 파일은 docker로 할 일에 대한 작업기술서 같은 것이라고 보면 된다. 예를들면 a라는 image를 빌드하고 빌드한 image를 실행하고 b라는 image도 network, volume 등을 설정하여 실행을 시키고 싶을때 기존에 각각 docker 명령어로 수행했어야 했던 일을 docker-compose를 통해 한방..
Docker image를 빌드하고 다음에 또 사용하고 싶은 경우가 있다. 그럴때 어떻게 하는지에 대해서 알아보자. 사전준비 일단 빌드를 하는 과정은 건너뛰고 간단하게 보여주기 위해 아무거나 Docker Hub로 pull을 받는다. 필자는 nginx를 선택을 하였다. Docker Hub로부터 pull을 받는 방법은 Docker Hub에 접속하여 nginx를 검색한다. 그럼 위와 같이 official image가 나올것이고 눌러서 들어간다. 그럼 우측에 다음과 같이 이 image를 받을 수 있는 명령어를 볼 수 있다. 이렇게 nginx를 일단 받아 놓는다. 물론 새로운걸 빌드를 해도 상관은 없다. 그리고 Docker Hub에 접속해서 계정을 만든다. 따로 회원가입 페이지가 있는게 아니라 그냥 여기에 정보를 ..
폐쇄망에 docker 설치를 마쳤다면 이제 Image를 설치해보자. 그냥 안되는걸 알면서 hello-world 되나 한번 쳐본다.. 역시 안된다. 인터넷이 되는 곳에서 가지고 와야 한다. 그럼 어떻게 가지고 올까? 이방법 저방법 찾아봤지만 가장 간단한건 역시 인터넷이 되는 곳에서 image를 받아서 tar로 압축(save)을 시킨 후 폐쇄망으로 이 파일을 가지고 와서 docker image로 되돌리는것(load)이다. 다른 방법으로는 인터넷이 되는 곳에서 nexus 를 설치하고 docker registry를 이용하여 설치하는 방법이 있는데 이것은 nexus가 이미 설치가 되어있다는 가정하에 하는 것이기 때문에 조금 더 손이 간다. 이에 대해서는 다음에 다루도록 하고 이번엔 save와 load를 활용하여 ..
docker를 사용하려면 기본적으로 외부망(인터넷이 되는 환경)이 되는 환경이어야 하는데 폐쇄망에서 docker를 설치해야 하는 경우도 있다. 이럴 경우 어떻게 docker를 어떻게 설치하는지 알아보자. 폐쇄망 Docker 설치 필자가 설치하려고 하는 환경은 CentOS 7 이다. 일단 인터넷이 되는 환경에서 www.centos.org/download/mirrors/ 에 들어가서 Mirror list를 확인한다. region 을 Korea 로 검색을 하면 카이스트, 카카오, 네이버에서 제공을 하고 있다. 카이스트 미러사이트를 이용해본다. HTTP에 있는 Mirror 를 눌러서 받고 싶은 버전을 선택한다. 필자는 (ftp.kaist.ac.kr/CentOS/7/extras/x86_64/) 선택. 이제 인터넷..
Docker를 설치하고 기분좋게 시작을 하려고 하는데 발생하는 오류가 있다. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? docker 돌고 있는거 맞냐? 라는 오류인데 돌고 있는지 확인을 해주자. $ systemctl status docker disabled, dead, inactive... 안좋은말 투성이다. 주저말고 service를 시작해주자. $ sudo systemctl start docker $ sudo systemctl enable docker 이제 active 상태가 된걸 확인할 수 있다. 끝!
Host에 있는 파일을 Docker Container로 복사를 해야할 상황이 생겼다. 방법은 간단했다. Host -> Container Copy $ docker cp /source/* contanier_name:/target/ 이런식으로 docker cp 명령어를 활용해서 하면 된다. 일반 cp와는 다른점이 -r 명령어를 쳐서 폴더도 포함시킬지 여부를 옵션으로 달지 않아도 알아서 파일이면 파일 폴더면 폴더까지 복사가 다 된다. 또한 container 내부로 복사를 할것이기 때문에 container 명을 명시해줘야한다. 예를들면 docker cp /app/3rdparty/* mycontainer:/app/3rdparty/ 이런식으로 복사를 하면 된다. Container -> Host Copy $ docke..
docker image를 변경한 뒤 재배포를 위해 build를 시도했다. unable to prepare context: unable to evaluate symlinks in Dockerfile path: CreateFile C:\Users\User\Dockerfile: The system cannot find the file specified. build를 하니 이런 오류가 발생한다. "Dockerfile로 지정한 파일을 찾을수 없다" 라는 내용이다. Dockerfile은 도대체 무엇인가? Dockerfile은 image 생성을 위한 스크립트이다. 즉 build를 할때 꼭 필요한 파일이라는 것이다. docker를 사용하면 기본중의 기본인 Dockerfile 인데 필요한 기능만 찾아서 하다보니 기본이 ..