즐거운 연휴를 끝내고 월요일이 시작되었다.
이수진 강사님이 떠나시고 설규환 강사님께서 새로 오셨다.
대부분의 이미지는 리눅스를 기반으로 하고있다.
컨테이너는 하나의 프로세스를 실행하도록 한다.
가상화는 격리된 환경을 제공한다.
[Docker 기본구조]
[컨테이너 구동을 위한 리눅스 기반기술]
[이미지 관리 (docker image)]
[컨테이너 관리(docker container)]
[볼륨]
참고) 컨테이너 전체 삭제(실행중+중지상태)
$ docker rm -f docker rm -f docker ps -aq
[도커 네트워크]
[ Docker에서 사용할 수 있는 네트워크 유형]
1) Bridge: 기본적으로 생성된 docker0 브리지를 사용하여 컨테이너의 외부 연결 제공. 사용자가 직접 생성 가능
2) Host: Docker Host의 네트워크 설정을 그대로 사용
3) Null : 네트워크 인터페이스를 사용할 필요가 없는 컨테이너에 사용
4) macvlan : 호스트의 네트워크와 동일한 위치에 가상 네트워크 인터페이스를 생성
Bridge 와 Host 의 중간
macvlan 사용시 필요조건 : Promiscuous mode 활성화
5) overlay : 컨테이너 클러스터 환경에서 사용
6) container : 다른 컨테이너의 네트워크 설정을 공유
[ 사용자에 의한 Docker Network 개체 생성 ]
$ docker network create --driver=[TYPE][NETWORK이름]
Bridge
예시$ docker network create --driver bridge mybridge1
예시$ docker network create --driver
1) bridge --subnet 192.168.200.0/24 --gateway 192.168.200.1 mybridge2
옵션
--driver: 사용할 네트워크 유형 선택
--subnet: bridge 내부에서 사용할 네트워크 IP 범위
--gateway: bridge 내부에서 외부로 패킷을 보내기 위한 경로. subnet 범위 내
macvlan
$ ip link set enp0s8 promisc on // promiscuous mode 활성화
$ docker network create --driver=macvlan
예시$ docker network create --driver
2) macvlan --gateway 192.168.56.1 --subnet 192.168.56.0/24 --ip-range 192.168.56.192/26 -o parent=enp0s8(이름설정) mymacvlan
옵션
--gateway : 동일
--subnet : 동일
--ip-range : 실제 컨테이너의 NIC에 할당할 IP주소의 범위
-o parent : 호스트 시스템의 NIC중 macvlan으로 연결할 네트워크를 사용중인 NIC
네트워크 설정 변경(실행중인 컨테이너의 네트워크 변경)
docker network connect
docker network disconnet
[ 사용자 생성 Bridge의 특징 ]
컨테이너 이름을 사용한 주소 확인 : /etc/hosts 파일에 반영됨
--link <컨테이너명>[:별칭]
(cat /etc/hosts 로 확인)
(docker run -dit --name os3 --link os1 centos -> os3를 사용할 때 os1 은 이름으로 접속 가능하도록 설정, web 과 db 서버를 나눌 때 좋다)
(docker run -it --name os5 --link os1:db centos -> db 라는 이름으로 연결 가능)
(현재 존재하고있는 os 로만 연결 가능)
DNS를 사용한 주소 확인 (별도의 bridge 생성 시)
network-alias
network-alias 를 지정한 컨테이너 실행
$ docker run -d --name web1 --network mybridge1 --network-alias websvc httpd
$ docker run -d --name web2 --network mybridge1 --network-alias websvc httpd
$ docker run -d --name web3 --network mybridge1 --network-alias websvc httpd
$ docker cp index1.html web1:/ur/local/apache2/htdocs/index.html
테스트용 컨테이너 생성
$ docker run -it --rm --network mybridge1 travelping/nettools
테스트
$ nslookup web1.
$ nslookup web2.
$ nslookup web3.
$ nslookup websvc.
컨테이너 이름 관련 옵션
$ docker run --hostname test-centos --rm -it centos
$ docker run --dns 8.8.8.8 --rm -it centos
$ cat /etc/resolv.conf
$ docker network connect bridge os7
$ docker exec os7 ip a s
-> inet 172.17.0.5/16
$ docker network disconnet mybridge1 os7
-> 연결 해제