- 3. 도커 컨테이너 다루기2023년 04월 17일 19시 26분 48초에 업로드 된 글입니다.작성자: 각수짱728x90반응형SMALL
컨테이너 다루기
환경 구성
https://docs.docker.com/engine/install/centos/
centos에 설치
yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --enable docker-ce-nightly yum-config-manager --enable docker-ce-test yum install -y docker-ce docker-ce-cli containerd.io --allowerasing systemctl restart docker systemctl enable docker
Docker Tollbox for Windows 설치
Hyper-V 기능 끄기
제어판 → 프로그램 → 프로그램 및 기능 → Windows 기능 켜기/끄기 → Hyper-V 체크 해제
다운 및 설치
http://docs.docker.oeynet.com/toolbox/toolbox_install_windows/
기본값 설치
컨테이너 기본
컨테이너 실행 및 중지
실행
docker run -it [리포지터리명]/[이미지이름]:[버전] 쉘
docker run -it ubuntu bash
docker run -it --name centos7 centos:7 bash
-i : 키보드 입력을 포준 입력으로 쉘에 전달
-t : 터미널 디바이스와 쉘을 연결
--name : 컨테이너의 이름 지정
-d : 백그라운드로 실행, -it와 반대*uname -a, cat /etc/issue 실행해보기
중지
실행된 터미널에서 exit 또는 Ctrl + d, 컨테이너 중지 및 빠져나오기
실행된 터미널에서 Ctrl + p,q 컨테이너 중지하지 않고 빠져나오기컨테이너 조작
이미지 내려받기
docker pull centos:7
이미지 목록 확인
docker images
컨테이너 생성하기
docker create -i -t --name mycentos centos:7
컨테이너 시작 및 들어가기, 나오기
docker start [이름] or [ID] docker attach [이름] or [ID]
컨테이너 목록 확인
docker ps : 현재 실행중인 컨테이너 출력 docker ps -a : 모든 컨테이너 출력
컨테이너 중지
docker stop [이름] or [ID]
컨테이너 삭제
docker rm [이름] or [ID] rm : 컨테이너 삭제 (중지된 컨테이너만 삭제됨) rm -f : 실행중인 컨테이너 삭제
docker container prune 중지된 모든 컨테이너 삭제
docker ps -a -q -a 상태 관계없이 모든 컨테이너 출력 -q : 컨테이너 ID만 출력
docker stop $(docker ps -a -q) docker rm -f $(docker ps -a -q) 모든 컨테이너 정지 및 삭제
이미지 만들기
docker commit [이름] [이미지이름]:[버전]
컨테이너의 네트워크
네트워크 관련 명령어
docker network ls : 네트워크 리스트 출력 docker network inspect : 네트워크 명을 지정, 자세한 내용 표시 docker network create : 네트워크 생성 docker network rm : 네트워크 삭제 docker network connect : 컨테이너를 네트워크에 연결 docker network disconnect : 컨테이너를 네트워크에서 연결 해제
네트워크 종류
docker network ls NETWORK ID NAME DRIVER SCOPE 03210053f006 bridge bridge local 36725cf303e6 host host local ecaa3570d18c none null local
- bridge 타입 : 외부 네트워크와 연결되어 있는 독립적인 네트워크.
컨테이너를 생성하면 기본적으로 설정되는 네트워크
컨테이너는 외부의 리포지터리에 접근할 수 있으며 -p 옵션으로 외부에 포트도 공개 가능
docker network inspect bridge - host 타입 : 컨터이너를 호스트 컴퓨터와 동일한 네트워크에서 컨테이너를 돌리기 위해서 사용
docker network inspect host - none 타입 : 컨테이너가 어떤 네트워크와도 연결(attached)되지 않는다.
그래서 외부 네트워크나 다른 컨테이너에서 접근할 수 없다.
[컨테이너1] [컨테이너2]
[lo][eth0] [lo][eth0]
[veth~~~] [veth~~~]
[docker0]
[enp2s0]컨테이너의 bridge 네트워크 구조
[ 컨테이너 ] [ 컨테이너 ]
[ lo ][eth0] [ lo ][eth0]
[veth] [veth]
[docker0]
[실제 네트워크 장치]컨테이너는 Linux Namespace 기술을 이용해 각자 격리된 네트워크 공간을 할당받게 된다.
기본적으로 172.17.0.0/16 대역의 IP를 순차적으로 할당 받는다. 이 IP는 컨테이너가 재시작할 때마다 변경될 수 있다.
컨테이너는 외부와 통신하기 위해 2개의 네트워크 인터페이스를 함께 생성
하나는 컨테이너 내부 Namespace에 할당되는eth0 이름의 인터페이스
하나는 호스트 네트워크 브리지 docker0에 바인딩 되는 vethXXXXXXX이름 형식의 veth 인터페이스
(“veth”는 “virtual eth”라는 의미)
컨테이너의 eth0인터페이스와 호스트의 veth 인터페이스는 서로 연결되어 있다.네트워크 설정한 컨테이너 생성
--network [네트워크 이름] ex) docker run -it --network host --name centos7 centos:7 bash
외부에 포트 공개
docker pull httpd:latest docker run -d --name apache -p 8080:80 httpd -p 옵션으로 외부 포트:내부포트 를 연결
실행 중일 때는 stop 후 commit으로 이미지를 만들어서 해당 이미지로 다시 컨테이너를 run해야 함
컨테이너 자원 관리
컨테이너를 생성하는 run, create 명령어에서 컨테이너를 생성할 때 자원 할당량을 입력하지 않으면
호스트의 자원을 제한 없이 사용가능
하지만 모든 자원을 사용하게 된다면 호스트에 영향을 끼칠 뿐 아니라 다른 컨테이너에도 영향을 끼치게 됨자원 제한 확인하기
docker inspect [컨테이너명 or ID]
메모리 제한
--memory [메모리 용량]
CPU 제한
--cpu-shares [가중치] --cpus [코어 수]
728x90반응형LIST'docker' 카테고리의 다른 글
도커 실습 - 3계층 이미지 생성 실습 (0) 2023.04.17 4. 도커 컨테이너 개발 (1) 2023.04.17 2. 도커 (0) 2023.04.17 1. 컨테이너란 (0) 2023.04.17 0. 도커 (0) 2023.04.17 이전글이 없습니다.댓글 - bridge 타입 : 외부 네트워크와 연결되어 있는 독립적인 네트워크.