docker

    도커 컨테이너 다루기(8) - 도커파일(Dockerfile)[1]

    보통 개발한 애플리케이션을 컨테이너화할 때 다음과 같은 방법으로 진행합니다. 1. 기본 이미지(CentOS, ubuntu 등)로 컨테이너 생성 2. 애플리케이션 및 환경 설치 3. 컨테이너를 이미지로 commit (myimage:0.0) 위 방법 사용 시 애플리케이션이 동작하는 환경을 구성하기 위해 일일이 수작업으로 패키지를 설치하고 소스코드를 깃에서 복제하거나 호스트에서 복사해야 합니다. 도커는 위와 같은 일련의 과정을 손쉽게 기록하고 수행할 수 있는 빌드 명령어를 제공합니다. 완성된 이미지를 생성하기 위해 컨테이너에 설치해야 하는 패키지, 추가해야 하는 소스코드, 실행해야 하는 명령어, 쉘스크립트 등을 하나의 파일에 기록해 두면 도커는 이 파일을 읽어 컨테이너에서 작업을 수행한 뒤 이미지로 만들어냅니..

    도커 컨테이너 다루기(7) - 도커 이미지(Image)

    모든 컨테이너는 이미지를 기반으로 생성됩니다. 레드햇 기반 OS에서 yum install을 실행하면 yum repository 에서 패키지를 내려받듯이 도커는 도커허브(Docker Hub)라는 중앙 이미지 저장소에서 이미지를 내려받습니다. 도커 허브는 도커의 공식적인 이미지저장소로서 도커 계정을 가지고 있다면 누구든지 이미지를 올리고 내려받을 수 있기 때문에 다른 사람들에게 이미지를 쉽게 공유할 수 있습니다. 대부분의 이미지는 도커 허브에서 공식적으로 제공하거나 사용자들이 미리 올려놓은 경우가 대부분이라서 애플리케이션 이미지를 직접 만들지 않아도 손쉽게 사용할 수 있다는 장점이 있습니다. 하지만 누구든지 올려놓을 수 있기 때문에 공식라벨(Official)이 없는 이미지는 제대로 동작하지 않을 수 있습니다..

    도커 컨테이너 다루기(6) - 컨테이너 자원 할당 제한

    컨테이너 생성 시(run, create) 자원 할당량을 조정하도록 옵션을 입력할 수 있습니다. 아무런 옵션을 입력하지 않으면 컨테이너는 호스트의 자원을 제한없이 쓰게 됩니다. 컨테이너 자원할당이 무제한, 즉 자원할당 옵션이 설정되어있지 않으면 호스트의 자원을 전부 점유하여 다른 컨테이너 및 호스트 자체의 동작이 멈출 수 있습니다. 1. 컨테이너 메모리 제한 [root@localhost ~]# docker run -d --memory="1g" --name memory nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 69692152171a: Pull complete 30afc0b18f67: Pull com..

    도커 컨테이너 다루기(5) - 컨테이너 로깅

    1. json-file 로그 사용하기 도커는 컨테이너의 표준출력과 에러로그를 별도의 메타데이터 파일로 저장합니다. [root@localhost ~]# docker run -d --name mysql -e MYSQL_ROOT_PASSWD=1234 mysql:5.7 eeafd60870f87d7d47ee8d2647b1157be3b55a205f59b63678f7f85b19d7e73c 먼저 mysql 5.7 버전의 백그라운드모드의 컨테이너 하나를 생성하였습니다. [root@localhost ~]# docker logs mysql 2021-05-28 01:28:57+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.33-1debian10 start..

    도커 컨테이너 다루기(4) - 도커 네트워크

    1. 도커 네트워크 구조 도커는 컨테이너에 내부 IP(172.17.0.)를 순차적으로 할당하며, 이 IP는 컨테이너가 restart될 때 마다 변경될 수 있습니다. 이 IP는 도커가 설치된 호스트, 즉 내부망에서만 쓸 수 있는 IP이므로 외부와 연결될 필요가 있습니다. 도커가 설치된 호스트에서 ifconfig 나 ip addr과 같은 명령어로 네트워크 인터페이스르르 확인하면 실행 중인 컨테이너 수 만큼 veth~(virtual ethernet) 로 시작되는 인터페이스를 확인할 수 있습니다. vethf7119a1: flags=4163 mtu 1500 inet6 fe80::e8f2:50ff:fe9a:ee4f prefixlen 64 scopeid 0x20 ether ea:f2:50:9a:ee:4f txqueu..

    도커 컨테이너 다루기(3) - 도커 볼륨

    도커 이미지로 컨테이너를 생성하면 이미지는 Read-Only 가 되며 컨테이너의 변경사항만 별도로 저장해서 각 컨테이너 정보를 보존합니다. 즉, 이미 생성된 이미지는 어떠한 경우로도 변경되지 않으며 컨테이너 계층에다가 원래 이미지에서 변경 된 파일시스템 등을 저장합니다. 만약 A라는 컨테이너를 삭제하면 컨테이너 계층에 저장돼있던 정보도 삭제됩니다. 도커 컨테이너는 생성/삭제가 매우 간단하므로 컨테이너 삭제 시 데이터를 복구할 수 없게 됩니다. 이를 방지하기 위해 컨테이너의 데이터를 영속적(Persistent) 데이터로 활용할 수 있는 방법이 몇 가지 있습니다. 1. 호스트 볼륨 공유 [root@localhost test1]# docker run -d --name hostvol_test -e MYSQL_R..