[docker] 완벽가이드 책 리뷰 9일차

오현우·2022년 6월 7일
0

docker

목록 보기
9/11
post-thumbnail

Docker Container Networks

도커 컨테이너는 각각 하나의 가상 컴퓨터이다. 때문에 컨테이너끼리 통신을 위해서 도커 네트워크를 통해 수행한다.

간단한 네트워크 권리할 때의 조작 방법에 대해 알아보자.

네트워크 목록을 표시

docker network ls [options]: 도커 네트워크 구성정보를 확인할 수 있다.

네트워크를 명시하지 않고 컨테이너를 생성 및 시작하면 brige 네트워크가 기본 네트워크로 되어있다.

네트워크 생성

docker network create [options] network_name

네트워크 연결시 참고할 점

도커의 기본 브리지 네트워크와 우리가 정의한 네트워크에서는 이름 매핑 구조가 다르다!!!

컨테이너 생성시 기본 브리지 네트워크에서 시작한 경우, 다른 기본 브리지 네트워크로 컨테이너와 소통하기 위해서는 --link 옵션을 통해 /etc/hosts 파일에 해당 ip와 컨테이너 이름을 등록해야만 한다.

그러나 사용자 정의 네트워크에서는 내부 dns 서버에 의해 이름이 매핑이 이루어지므로 컨테이너 이름 뿐만 아니라 --net-alias 옵션을 통해 지정한 이름으로도 통신이 가능하다. 때문에 네트워크를 정의한 후 네트워크를 연결시키는 것이 좋다.

네트워크 연결

컨테이너끼리 네트워크 연결을 해줄때에는 아래의 명령어를 사용한다.
docker network connect [options] <network_name> <container_name>

연결을 끊고 싶다면 connect를 disconnect로 바꾸면 된다.

네트워크 상세 정보 확인

해당 네트워크에 대한 상세 정보를 확인하고 싶다면 아래와 같은 명령어를 입력하자.

docker network inspect [options] <networkname>

네트워크를 삭제하고 싶다면?

docker network rm [options] <network>

가동중인 컨테이너 조작하기

가동중인 컨테이너에 연결하고 싶을 때는 아래의 명령어를 입력하면 된다.

docker container attach <container_name>

간단하게 실습해보자.

우리는 아래와 같이 bash를 실행하고 있는 컨테이너를 centos 이미지를 바탕으로 만드려고 한다.

docker container run -it --restart=always --name sample centos /bin/bash

해당 컨테이너가 잘 동작하고 있다.

해당 컨테이너의 배쉬쉘을 이용하고 싶다면 아래와 같은 커맨드를 입력하자

docker container attach sample

정삭적으로 배쉬에 접속할 수 있게 되었다.

가동중인 컨테이너에서 프로세스 실행시키기

그러나 우리가 매번 가동중인 컨테이너에 접속해서 하는 것은 번거로울 뿐더러 해당 컨테이너의 쉘이 동작하지 않는 경우 명령을 큐에 올릴 수 없기 때문에 왠만해서는 exec를 사용하는 것이 좋다.

docker container exec [options] <container_id> <order> [arguments]

아래 이미지는 해당 컨테이너에서 hello world를 외부 명령으로 출력하는 모습이다.

가동중인 컨테이너 프로세스 확인하기

docker container top <container>

컨테이너 이름 변경

docker container rename <old_name> <new_name>

컨테이너 안의 파일 복사

docker container cp <container_id>:<want_cp_file_dir> <host_dir>: 컨테이너 안의 파일을 옮길 때

docker container cp <host_dir> <container_id>:<want_cp_file_dir>: 호스트의 파일을 옮길 때.

컨테이너가 생성된 이미지로부터 달라진 점 확인하기

docker container diff <container_id>

Docker 이미지 만들기

도커 컨테이너는 도커 이미지를 바탕으로 만들지만 이미지 또한 컨테이너를 바탕으로 이미지를 만들 수 있다.

구체적으로 우리가 우분투 공식 이미지를 통해 컨테이너를 만들었고, 그리고 거기에 node.js를 설치했다고 가정해보자. 그러면 해당 컨테이너에 대한 정보를 바탕으로 다시 이미지를 만들면 우분투 노드 js 이미지를 만들 수 있다.

컨테이너로부터 이미지 만들기

docker container commit [options] <container_id> [image[:tag]]

불필요한 것들 일괄삭제 기능

도커는 편리하기도 하지만 리소스와 용량을 많이 차지하기 때문에 지속적으로 해당 내용들을 관리해줘야 한다.

때문에 유용한 기능을 하나 소개하자면 바로 아래의 명령어이다.

docker system prune [options]

profile
핵심은 같게, 생각은 다르게

0개의 댓글