Docker 19

[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

[Docker] 왜 도커를 사용할까? + 설치까지

내 컴퓨터에서 하나의 애플리케이션을 만들기 위해서는 운영체제 위에 여러 소프트웨어를 설치하여야만 한다. 웹 서버라든지, 데이터베이스 라든지 여러 소프트웨어를 깔아서 본인만의 애플리케이션을 만들게 된다. 매번 소프트웨어를 설치하는 일은 상당히 복잡한 일이다. 하지만 네트워크로 통신해 각각의 앱(App)을 가지고 와서 사용할 수 있게 할 수 있다면 얼마나 좋을까? 전문가들이 구축해놓은 운영체제들을 가지고와서 쓸 수 있게 해주는 것이다. 그렇게 된다면 매번 새롭게 앱을 구축하고, 운영체제를 설치하고 하는 방식이 필요 없을 것이다. 본인이 필요한 소프트웨어나 운영체제를 그냥 불러옴으로써 사용할 수 있기 때문이다. VMware나 Virtualbox와 같은 개념이다. 하지만 매번 운영체제에 설치된 앱을 불러오는 과..

Docker 2022.03.02

[Docker] Dockerfile 생성하기

컨테이너에서 commit을 한 후 이미지를 생성하게 되면 이미지 안에 어떤 파일이 설치되고, 어떤 파일이 있는지 확인하기가 어렵다 그렇기 때문에 우리는 Dockerfile을 만들어 사용할 수 있다. 체계적인 이미지를 만들기 위해서는 Dockerfile 이라는 약속된 폴더를 만들어서 컨테이너를 생서할 수 있다. Dockerfile을 만들기 위해 임의의 폴더를 한 번 생성해보자. $ mkdir docker_folder $ cd docker_folder docker_folder 라는 것을 만들어 docker_folder에 접근한 후 해당 폴더 내에 'Dockerfil'e을 생성해야된다. Dockerfile은 확장자가 없는 파일을 의미한다. 해당 폴더 내에 다음과 같은 코드를 입력해서 환경을 만들어주자. FRO..

Docker 2022.03.01

[Docker] 도커 시작하기 pull, rm, ps, etc...

도커는 Linux 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술이다.[참고] 도커를 사용하면 매우 가벼운 가상 머신처럼 사용할 수 있고, 컨테이너를 구축 및 배포 및 복사를 하고 환경 간 이동이 유연하게 사용될 수 있다. 또한, 도커의 접근 방식은 전체 App을 분해할 필요 없이 App의 일부를 분해하고, 업데이트 등이 가능하다는 점이 중요하다. 하지만 계속해서 컨테이너화 된 앱을 많이 사용하게 되면 관리가 어려워지게 된다. 이때 컨테이너 간 그룹화하는 작업을 수행할 때 쿠버네티스(Kubernetes)가 사용된다. 쿠버네티스는 다음에 한 번 다루어 보도록 하자. 도커를 처음 시작하면 생소한 단어가 존재한다. 바로 '이미지(Images)'와 '컨테이너(Containers)'다. Docker Im..

Docker 2022.03.01
반응형