분류 전체보기 310

[Docker] 컨테이너를 외부에 노출시키자!

도커 내에서 컨테이너를 생성하면 이 컨테이너는 외부에서 접근할 수 없고, 도커가 설치된 로컬 호스트에서만 접근할 수 있다. 외부에서 접근을 할 수 있도록 설정하기 위해서는 우리의 로컬 호스트 포트와 토커 컨테이너의 포트에 연결시켜주어야 한다. 이 과정을 포트 포워딩, 바인딩 등으로 부른다. 1. 컨테이너 IP 주소 확인하기 컨테이너의 IP 및 포트와 로컬 호스트의 IP 및 포트를 연결시키기 위해서는 당연히 컨테이너의 IP 주소를 알고 있어야 한다. IP 주소를 확인하기 위해서는 아래와 같은 작업을 수행하면 쉽게 확인이 가능하다. $ ifconfig eth0: flags=4163 mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255 e..

Docker 2022.03.04

[Docker] ifconfig : command not found error

컨테이너의 가상 IP 주소를 받기 위해서는 ifconfig를 실행해야된다. 하지만 bash에서 ifconfig를 실행하면 아래와 같은 에러가 출력될 것이다. # ifconfig bash: ifconfig: command not found 그럴 경우 net-tools를 설치해주면 간단하게 해결된다. # apt-get update # apt-get install net-tools # ifconfig ifconfig를 실행했을 때 eth0 인터페이스와 로컬 호스트인 lo 인터페이스가 존재한다. 각각의 IP 주소를 입력해 컨테이너를 외부에 노출 시킬 수 있다.

Docker 2022.03.04

[Docker] VSCode에서 Docker Container 접근하기

깃$^\mathsf{Git}$ 내에서 실행시키고 싶은 레파지토리를 원하는 환경에 가지고 온 후 시작하자. 리눅스 기반인 경우 바로 git clone을 통해서 실행이 가능하지만, 윈도우의 경우 command 창에서 git clone이 실행되지 않기 때문에 git bash라는 bash shell을 설치한 후 가지고와야 한다. 설치가 되었다고 가정하고 분석을 수행하자. 본인은 PyTorch-GAN를 가지와서 git clone을 수행했다. PyTorch-GAN의 구조는 아래와 같다. 우리는 C:\PyTorch-GAN\implementations\aae\aae.py 파일을 VSCode로 가지고와서 디버깅 해보는 작업을 수행해볼 것이다. VSCode에서 사용하기 전 일단 먼저 pytorch가 설치된 이미지를 도커에..

Docker 2022.03.03

[Docker] 이미지(Image)를 Docker hub에 Push하기

도커를 한 개의 서버에서 작업을 하고, 본인이 만든 도커 이미지를 다른 서버에서 활용하고 싶을때 도커 허브(Docker hub)에 Push한 후 다른 서버에서 pull을 통해 다른 서버에서 가져갈 수 있을 것이다. Push와 pull에 대한 용어를 잘 모르겠다면 이전 글을 참고하자. 도커 허브에 업로드 하지 않고, 본인이 만든 Dockerfile을 전달해주는 방법도 있고, 이미지를 저장해서 tar file이나 다른 형태로 변환해 전달해주는 방법도 있을 수 있다. 일단 먼저 Push 하는 방법에 대해서 알아보자. 1. Upload Docker Hub 도커 허브에 업로드 하기 위해서는 당연히 도커 허브에 계정이 있어야할 것이다. 도커 계정을 생성한 후 로그인 해보자. 로그인 한 후 Repositories에 ..

Docker 2022.03.03

[Docker] exec, attach, run 비교하기

도커에서 컨테이너를 실행시킬 경우 run, exec, attach 등을 사용해 컨테이너에 접근해본 적이 있을 것이다. 그렇다면 각각의 명령어가 어떠한 차이점이 존재하는지에 대해서 알아보자. 이번 글에서는 exec를 기준으로 run와 attach에 대해서 각각 비교해볼 것이다. exec vs attach exec와 attach는 둘다 컨테이너에 접속하는 명령어다. 둘다 컨테이너가 실행되고 있을 때 사용할 수 있으며, 만약 docker ps 를 입력했을 때 실행 중인 컨테이너가 없다면 실행할 수가 없으므로 새롭게 컨테이너를 실행시키든, 죽은 컨테이너를 살리든 하는 형태로 진행해야만 한다. exec exec는 컨테이너 상태를 디버깅하기 위한 용도로 주로 사용된다. exec는 컨테이너 외부에서 접근해 코드를 작..

Docker 2022.03.03

[Docker] 볼륨(Volume)과 바인드 마운트(bind mount)란?

도커 컨테이너에 사용된 파일들은 컨테이너가 삭제될 때 함께 삭제된다. 도커에서 많은 애플리케이션을 저장해서 계속적으로 사용할 수 있도록 해주는 옵션이 바로 볼륨과 바인드 마운트(bind mount)이다. 바인드 마운트(Bind mount) 바인드 마운트는 호스트 시스템의 어느 곳에나 저장할 수 있고, non-Docker 프로세스나 도커 컨테이너 내에서 언제든지 수정이 가능하다. 또한, 바인드 마운트를 사용하면 호스트 시스템의 파일 또는 디렉터리가 컨테이너에 마운트되며, 파일 또는 디렉토리는 호스트의 전체 경로로 지정된다. 바인드 마운트의 성능은 매우 우수하지만 호스트 파일 시스템에 의존해서 사용되기 때문에 볼륨에 비해 상대적으로 기능이 제한적이다. 내 호스트 파일 시스템 내에 mongodb라는 폴더가 있..

Docker 2022.03.03

[Docker] Docker with python

머신러닝이나 딥러닝을 돌릴때 프레임워크 혹은 패키지의 버전마다 호환되는 파이썬 버전이 다르다. 그렇다면 매번 파이썬을 새로 설치하고 새로 다시 환경을 구축해야될 것이다. 이건 여간 번거로운 일이 아니다. 그렇기 때문에 우리는 도커를 사용해 각 이미지 혹은 각 컨테이너마다 새로운 환경을 구축해 사용할 수 있다. 복잡한 환경, 협업 환경에서는 도커를 사용하는 것이 유용하다. Dockerfile에 내가 사용하는 환경의 정보를 담고 Dockerfile을 공유함으로써 같은 환경에서 파이썬을 실행시킬 수 있기 때문에 오류 없이 제대로 작동할 수 있기 때문이다. 그렇다면 도커 허브에서 파이썬을 pull한 후 도커를 사용해보자. 도커 허브에서 pull하고, run 하는 과정은 이전 글에서 다루었기 때문에 설명은 생략한..

Docker 2022.03.03

[Docker] 이미지(image) 만들기

도커가 동작하는 것을 한 번 살펴보자. 처음에 도커 허브(Docker hub)에서 우리가 필요한 이미지(Image)를 다운 받아오는 것은 pull, 이미지에서 컨테이너를 생성하는 것은 run이라고 이전 글에서 다루었다. 그렇다면 우리가 이미지를 생성해서 우리만의 이미지를 배포하고 싶을땐 어떻게 해야할까? 우리가 새로운 컨테이너를 만들어 해당 컨테이너에서 환경을 구축하고난 후 commit을 하게되면 그 컨테이너는 이미지가 된다. 그렇게 이미지가 되면 해당 이미지를 기반으로 다시 run으로 새로운 컨테이너들을 생성할 수 있을 것이다. 그렇게 생성한 이미지를 도커 허브에 push하게 되면 세상 모든 사람들이 우리가 만든 이미지를 활용할 수 있을 것이다. 배포하고 싶을때 뿐만 아니라, 현재 작업 중인 컨테이너를..

Docker 2022.03.03

[Docker] Host와 File System 연결

우리는 도커 간 파일을 직접 수정했다[참고]. 도커에서 컨테이너를 생성하고, File System 안으로 접근해서 index.html파일을 수정하는 형태로 진행했다. 하지만 컨테이너가 삭제된다면 어렵게 작업한 내용이 전부 날라가게 된다. 컨테이너가 사라지지 않게 설정하면 되기는 한다. 그러나 우리는 컨테이너를 필요할 때 마음대로 생성하고, 삭제하기 위해서 사용한다. 위 그림에서 보이는 것 처럼 컨테이너의 File System 안에 존재하는 /usr/local/apache2/htdocs/ 와 Host의 File System이 서로 연결되고, Host에서 수정한 내용이 컨테이너에서도 반영될 수 있도록 한다면 컨테이너가 날라가더라도 우리의 소스코드는 Host에 남아있기 때문에 보다 안전하게 개발을 진행할 수 ..

Docker 2022.03.03

[Docker] 네트워크 연결하기(httpd)

이전 시간에 아파치 웹서버를 실행하기 위해 httpd 이미지를 설치해보았다. 일단 먼저 도커가 없이 웹서버를 사용하는 방법에 대해서 알아보자. 웹서버를 사용하기 위해서는 두 대의 컴퓨터가 필요하다. 한 대의 컴퓨터에는 Web browser가 설치되어 있고, 다른 컴퓨터에는 Web server가 설치되어 있다고 하자. 그 다음 Web page를 파일로 만들어 저장 장치의 특정 디렉토리에 위치시켜야 한다. 데이터가 저장된 공간을 File System이라고 부르자. 예를 들어 File System 내부에 있는 /user/local/apache2/htdocs/ 라는 디렉토리에 index.html 파일을 위치시켰다고 하자. 그리고 누군가가 Web Server에 웹페이지를 요청하면 해당 디렉토리에서 찾아야 된다고 ..

Docker 2022.03.02
반응형