8.Docker 도커 데몬 인증 키 적용
·
Docker
도커를 사용할 때 도커엔진에 보안에 대한 장치가 하나도 되어 있지 않다. 따라서 IP주소와 포트번호만 알게 된다면 다른 사용자가 도커를 제어할 수 있게 되는데 이는 치명적인 보안 오류이다.  따라서 우리는 도커데몬에 openssl을 이용하여 인증키를 생성하고 도커데몬에 적용시킬 필요가 있다. 도커데몬에 TLS 보안을 적용하고 인증된 사용자가 아니라면 도커에 접근할 수 없도록 서버 측과 클라이언트 측에 인증키를 적용시키겠다. 인증키 생성은  TLS, SSL 프로토콜을 이용할 수 있는 오픈소스 라이브러리 openssl을 통해 할 것이며https://gruuuuu.github.io/security/what-is-x509/에서 인증과정에 대한 자세한 설명을 볼 수 있다.1. 서버 인증 키 생성1) 디렉터리 생성..
7. Docker 컨테이너 자원 정의
·
Docker
컨테이너에는 메모리, cpu 등 여러 자원들이 존재한다. 옵션을 넣지 않은 컨테이너에 inspect 명령어를 사용하여 컨테이너에 대한 스팩을 살펴보면 cpu 및 메모리 등 스팩이 정의 되어 있지 않다는 것을 알 수 있다. 자원들의 스팩을 정의하지 않고 생성하게 되면 제한 없이 호스트의 자원을 전부 사용하기 때문에 다른 서비스에도 영향을 미칠 수 있다. 따라서 자원의 스팩을 정의해준다면 보다 효율적으로 자원을 관리할 수 있으며 서버의 부하를 방지할 수 있음으로 사용하는 것을 권장한다. MEMORYsudo docker run -d \--name memory_test_1 \--memory="1g" \nginx--memory 옵션으로 메모리의 크기를 지정할 수 있으며 단위는 기가바이트(g), 메가바이트(m)이다..
6. Docker 컨테이너 로깅
·
Docker
기존의 로그파일은 에러 및 여러 출력되는 정보들이 하나의 파일에서 관리되었다면 Docker는 출력(stdOut)과 에러(error) 로그를 별도의 메타데이터 파일로 저장한다. Docker는 다양한 형태로 로그를 저장할 수 있는데 한 번 알아보겠다.  1. json-file 로그어떠한 설정도 하지 않는다면 docker는 기본적으로 JSON형태로 도커 내부에 저장된다. sudo docker run -d \--name mysql \-e MYSQL_ROOT_PASSWORD=1234 \mysql:5.7sudo docker logs mysql컨테이너 생성 후 로그를 확인할 수 있다.  에러 낸 후 로그 찾기sudo docker run -d \--name nopassword_mysql \mysql:5.7-e 옵션에 ..
5. Docker 네트워크
·
Docker
컨테이너 내부에는 eth0과 lo 네트워크 인테페이스가 있다. 외부에서 컨테이너 내부에 있는 네트워크 인터페이스 ip에 접근하기 위해서는 외부와 연결되어야 하는데 컨테이너를 시작할 때마다 호스트에 veth로 시작하는 네트워크 인터페이스를 생성하여 외부와 컨테이너를 연결할 수 있다.  veth의 v는 virtual을 의미하며 실행중인 컨테이너 수만큼 생성되어있다. ifconfig 명령어를 사용하여 네트워크 구성을 살펴보자출력해보면 eth0은 공인 IP 및 내부 IP가 할당되어 실제 외부와 통신할 수 있는 호스트의 네트워크 인터페이스이다.또한 veth 네트워크 인터페이스도 생성된 것을 확인할 수 있는데 각 컨테이너의 eth0과 연결되어 있다. 여기서 처음 보는 docker0 이라는 브리지가 생성된 것을 확인..
4. Docker 볼륨
·
Docker
컨테이너를 생성 후 서비스를 운영하다보면 컨테이너 안에는 설정정보, 데이터 등 여러가지 데이터가 쌓이게 된다. 컨테이너가 삭제되면 그동안 운영되면서 쌓인 정보들 역시 같이 삭제된다. 이전 포스팅을 보면 rm 명령어로 간단하게 컨테이너가 삭제되는 것을 확인할 수 있었으며 삭제된 정보들은 복구가 불가능하다. 이를 해결하기 위해서는 Docker 볼륨이라는 개념이 중요하게 작용한다.  Docker 볼륨은 디렉터리간의 동기화가 가능하게 하고 컨테이너 내부에 있는 데이터를 외부에 공유하여 동시에 관리할 수 있도록 해준다.1. 호스트와 볼륨 공유sudo docker run -d \--name wordpressSql \-e MYSQL_ROOT_PASSWORD=password \-e MYSQL_DATABASE=wordp..
3. Docker 컨테이너 애플리케이션
·
Docker
1. 컨테이너 네트워크 바인딩컨테이너 역시 가상 IP주소를 할당받는다.attach를 통해 컨테이너 내부에 접속 후 ifconfig를 입력하면 컨테이너의 네트워크 인터페이스를 확인할 수 있다.도커의 NAT IP 172.17.0.2를 할당받은 eth0 인터페이스와 로컬 호스트인 IO 인터페이스가 있다.지금 현 상태에서는 외부에서 컨테이너에 접근하는 것은 불가능하며 호스트에서만 도커 컨테이너에 접근 가능하다.sudo docker run -i -t --name portexample -p 80:80 ubuntu:14.04따라서 컨테이너에 접근하기 위해서는 eth0의 IP와 포트를 호스트의 IP와 포트에 바인딩해야 한다.sudo docker run -i -t -p 10042:80 -p 192.168.0.300-p ..
BE전문가 프로젝트
'Docker' 카테고리의 글 목록