전체 글
-
이미지 배포(Image Deploy)BackEnd/docker 2022. 3. 15. 22:10
도커 허브 저장소 저장소를 생성하려면 로그인이 필요하므로 메인 화면이나 페이지 오른쪽 위 [Sign up]을 클릭해 가입합니다. 이미지 저장소(Repository) 생성 상단 Repositories을 클릭하면 아래와 같은 화면을 볼 수 있습니다. 우측 상단에 [Create Repository] 버튼을 클릭해 저장소를 생성합니다. 저장소에 저장할 이미지의 이름: my-image-name과 간단한 설명: This image repository is for testing.을 입력합니다. 마지막으로 저장소의 Visibility를 설정해 저장소를 다른 사람에게 공개할지 여부를 결정합니다. 기본적으로 비공개 저장소는 1개만 무료이고 그 이상 사용하려면 매달 일정 금액을 결제해야 합니다. [Create] 버튼을 눌러..
-
도커 이미지(Docker Image)BackEnd/docker 2022. 3. 15. 07:30
도커는 기본적으로 도커 허브(Docker Hub)라는 중앙 이미지 저장소에서 이미지를 내려받습니다. 도커 허브는 도커가 공식적으로 제공하고 있는 이미지 저장소로서, 도커 계정을 가지고 있다면 누구든지 이미지를 올리고 내려받을 수 있기 때문에 다른 사람들에게 이미지를 쉽게 공유할 수 있습니다. 단, 도커 허브는 누구나 이미지를 올릴 수 있기 때문에 공식(Official) 라벨이 없는 이미지는 사용법을 찾을 수 없거나 제대로 동작하지 않을 수 있습니다. 또한 이미지 저장소를 다른 사람들에게 공개하지 않기 위해 비공개(Private) 저장소를 사용하려면 비공개 저장소의 수에 따라 요금을 지불해야 합니다. docker create, docker run, docker pull의 명령어로 이미지를 내려받을 때 도커..
-
컨테이너 자원 할당 제한BackEnd/docker 2022. 3. 12. 09:54
컨테이너를 생성하는 run, create 명령어에서 컨테이너의 자원 할당량을 조정하도록 옵션을 입력할 수 있습니다. 컨테이너에 자원 할당 옵션을 설정하지 않으면 호스트의 자원을 전부 점유해 다른 컨테이너들뿐 아니라 호스트 자체의 동작이 멈출 수도 있습니다. 현재 컨테이너에 설정된 자원 제한을 확인하는 가장 쉬운 방법은 docker inspect 명령어를 입력하는 것입니다. $ docker inspect 컨테이너 이름 Note. run 명령어에서 설정된 컨테이너의 자원 제한을 변경하려면 update 명령어를 사용합니다. $ docker update (변경할 자원 제한) (컨테이너 이름) $ docker update --cpuset-cpus=1 centos ubuntu 컨테이너 메모리 제한 docker ru..
-
컨테이너 로깅(Container Logging)BackEnd/docker 2022. 3. 12. 09:06
json-file 로그 사용 도커는 컨테이너의 표준 출력(StdOut)과 에러(StdErr) 로그를 별도의 메타데이터 파일로 저장하며 이를 확인하는 명령어를 제공합니다. mysql 5.7 버전의 컨테이너를 생성합니다. docker run -d --name mysql \ > -e MYSQL_ROOT_PASSWORD=1234 \ > mysql:5.7 docker logs 명령어로 컨테이너의 표준 출력을 확인함으로써 애플리케이션이 잘 구동되는지 확인합니다. 컨테이너의 로그가 너무 많아 읽기 힘들다면 --tail 옵션을 써서 마지막 로그 줄부터 출력할 줄의 수를 설정할 수 있습니다. 컨테이너에서 실시간으로 출력되는 내용을 확인하려면 -f 옵션을 써서 로그를 스트림으로 확인할 수도 있습니다(애플리케이션 개발 시 ..
-
도커 네트워크(Docker Network)BackEnd/docker 2022. 3. 9. 10:41
도커는 각 컨테이너에 외부와의 네트워크를 제공하기 위해 컨테이너마다 가상 네트워크 인터페이스를 호스트에 생성하며 이 인터페이스의 이름은 veth(virtual eth)로 시작합니다. veth 인터페이스는 사용자가 직접 생성할 필요는 없으며 컨테이너가 생성될 때 도커 엔진이 자동으로 생성합니다. 도커가 설치된 호스트에서 ifconfig나 ip addr과 같은 명령어로 네트워크 인터페이스를 확인하면 실행 중인 컨테이너 수만큼 veth로 시작하는 인터페이스가 생성된 것을 알 수 있습니다. (mac이나 window OS에서는 docker0 브릿지나 veth 인터페이스들이 VM 안에 있기 때문에 확인할 수 없습니다.) eth0: 공인 IP 또는 내부 IP가 할당되어 실제로 외부와 통신할 수 있는 호스트의 네트워크..
-
도커 볼륨(Docker Volume)BackEnd/docker 2022. 3. 6. 12:15
도커 이미지로 컨테이너를 생성하면 이미지는 읽기 전용이 되며 컨테이너의 변경 사항만 별도로 저장해서 각 컨테이너 정보를 보존합니다. 이미 생성된 이미지는 어떠한 경우로도 변경되지 않으며, 컨테이너 계층에 원래 이미지에서 변경된 파일시스템 등을 저장합니다. 도커의 컨테이너는 생성과 삭제가 매우 쉬우므로 실수로 컨테이너를 삭제하면 데이터를 복구할 수 없게 됩니다. 이를 방지하기 위해 컨테이너의 데이터를 영속적(Persistent) 데이터로 활용할 수 있는 방법 중 하나가 도커 볼륨입니다. 호스트 볼륨 공유 이전 예제에서 데이터베이스 컨테이너 생성 시 -v 옵션을 추가하면 됩니다. -v /home/wordpress_db:/var/lib/mysql는 호스트의 /home/wordpress_db 디렉터리와 컨테이너..
-
도커 컨테이너(Docker Container)BackEnd/docker 2022. 3. 6. 11:07
컨테이너 생성 run 명령어 run 명령어를 입력하면 도커 이미지가 로컬 도커 엔진에 존재하지 않으므로 도커 중앙 이미지 저장소인 도커 허브에서 자동으로 이미지를 내려받습니다. 단 한 줄의 docker 명령어로 컨테이너를 생성 및 실행과 동시에 컨테이너 내부로 들어왔습니다. 셸의 사용자와 호스트 이름이 변경된 것(root@c3a41b157876)이 컨테이너 내부에 들어와 있다는 것을 나타냅니다. 컨테이너에서 기본 사용자는 root이고 호스트 이름은 무작위의 16진수 해시값입니다. $ docker run -i -t ubuntu:14.04 Unable to find image 'ubuntu:14.04' locally 14.04: Pulling from library/ubuntu 2e6e20c8e2e6: Pu..
-
도커 엔진(Docker Engine)BackEnd/docker 2022. 2. 26. 10:20
도커 엔진에서 사용하는 기본 단위는 이미지와 컨테이너이며, 이 두가지가 도커 엔진의 핵심입니다. 도커 이미지(Docker Image) 이미지는 컨테이너를 생성할 때 필요한 요소이며, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용됩니다. 이미지는 도커 명령어로 내려받을 수 있으므로 별도로 설치할 필요는 없습니다. 도커에서 사용하는 이미지 이름은 기본적으로 [저장소 이름]/[이미지 이름]:[태그]의 형태로 구성됩니다. [저장소 이름]: (Repository) 이미지가 저장된 장소를 의미합니다. 저장소 이름이 명시되지 않은 이미지는 도커에서 기본적으로 제공하는 이미지 저장소인 도커 허브(Docker Hub)의 공식(Official) 이미지를 뜻합니다. [이미지 이름]: 해당 이미지가 어떤 역할을 하는지 나..