Docker 9

Dockerfile 작성(Web, FTP, DNS 구축)

관련 자료 https://github.com/thdguswns3/Dockerfile - 직접 작성한 DockerFile 및 설정 압축 파일 - 사전 설정 # docker network create --subnet 192.168.0.0/24 --gateway 192.168.0.254web 사용할 네트워크를 미리 생성해둔다. 1. Web 서버 Dockerfile 작성 # mkdir proweb # cd proweb Dockerfile 및 관련 설정 파일을 생성할 디렉터리를 생성하고 경로를 이동한다. # vi Dockerfile FROMcentos:7 MAINTAINERshjoon RUNyum install -y httpd RUNyum install -y net-tools RUNsystemctl enable ..

Docker 2021.07.08

Docker 컨테이너에 자원 할당 및 관리

[실행중인 컨테이너 자원 할당 정보 확인] docker stats docker stats 만 입력하면 실행중인 모든 컨테이너 정보가 출력된다. [컨테이너 메모리 자원 할당] docker update --memory 컨테이너 실행시 --memory 옵션을 지정하면 원하는 만큼 메모리를 할당하여 컨테이너 실행이 가능하다. Swap memory는 지정하지 않으면 memory의 2배(400m)로 자동 설정된다. docker update 명령어로 원하는 자원 할당을 업데이트할 수 있다. 하지만 메모리를 확장할 경우 Swap 메모리가 모자라다는 오류가 발생한다. swap memory를 동시에 할당하면 오류가 출력되지 않고 업데이트 된다. [컨테이너 CPU 자원 할당] 1. -c(--cpu-shares) -c 옵션을..

Docker 2021.07.08

Docker 네트워크 설정 및 link 기능

1. docker0 Docker가 설치되면 host에 기본으로 생성되는 네트워크 인터페이스 카드이다. 컨테이너의 네트워크 카드를 지정하지 않으면 docker0의 기본적으로 172.16.0.0/16 네트워크를 사용하게 된다. docker0의 기본 gateway는 172.17.0.1로 설정되어 있다. 도커는 컨테이너에 내부 IP를 순차적으로 할당한다. 내부 IP는 컨테이너 재시작시 변경될 수 있다. 내부 IP는 컨테이너간의 통신만 가능한 내부망 네트워크로 외부망과의 연결이 필요하다. 컨테이너를 생성하면 호스트 PC에 veth(Virtual Ethernet)의 네트워크 인터페이스를 생성한다. 컨테이너가 외부와 통신이 필요할 때 각 컨테이너에 부여된 veth 네트워크 인터페이스를 통하여 통신한다. docker0..

Docker 2021.07.08

Docker 이미지 생성 및 Save&Load 와 Export&Import

1. 이미지 생성 docker commit [컨테이너명] [이미지 이름:태그]: 실행중인 컨테이너를 이미지화 시키는 명령어이다. 2. Save & Load (이미지를 tar 확장자 파일로 내보내기 및 가져오기) 컨테이너를 Save 명령어를 사용하여 tar 확장자로 내보내기 위해서는 컨테이너를 이미지화 시키는 과정이 선행되야 함. docker save -o [파일 이름 및 확장자 지정] [이미지 명]: 이미지를 위 캡쳐처럼 tar 형식의 파일로 내보낼 수 있다. docker load -i [파일 이름]: 해당 파일을 이미지로 불러온다. 2. Export & Import (컨테이너를 tar 확장자 파일로 내보내기 및 가져오기) docker export [컨테이너 명] > [내보낼 이름 및 확장자]: 컨테이너..

Docker 2021.07.07

Docker Volume 공유 사용하기

Docker Volume 공유에는 두 가지 방법이 존재한다. 1. -v 옵션을 사용하여 직접 연결하기 docker run -d --name w1 -p 8080:80 -v /test:/usr/local/apache2/htdocs/ httpd -v 옵션을 사용하여 호스트 PC의 /test 디렉터리를 컨테이너 내부의 경로와 동기화 시킨 모습이다. 위와 같이 10.0.0.11:8080으로 접속 테스트하여 미리 호스트에서 생성한 index.html 파일이 동기화된 것을 확인 가능. 2. Volume을 생성하여 연결하는 방법 docker volume create 명령어를 사용하여 볼륨을 생성한다. docker voulme ls는 생성된 볼륨들을 확인할 수 있다. /var/lib/docker/volumes 경로를 확..

Docker 2021.07.07

Docker 명령어 실습 (3)

컨테이너에 이름을 지정하여 생성하기 docker run에 --name 옵션을 사용하면 이름을 지정하여 컨테이너를 실행시킬 수 있다. 실행중인 컨테이너에 명령어 실행하기 docker exec [컨테이너 명] [명령어]: 해당 컨테이너에 접속하지 않고 간단하게 명령어만 실행시키고 결과를 출력한다. 실행중인 컨테이너 변경사항 출력 docker diff: 컨테이너 내부의 변경사항을 출력한다. A는 생성, C는 변경, D는 삭제를 의미한다. 컨테이너 이름 다시 지정하기 docker rename [변경할 컨테이너 명] [변경하고 싶은 컨테이너 명]: 컨테이너를 지정하여 이름을 변경한다. 컨테이너 포트포워딩 설정 -p [호스트 포트]:[컨테이너 포트] 옵션을 사용하여 포트포워딩을 설정하여 컨테이너를 실행할 수 있다...

Docker 2021.07.07

Docker 명령어 실습 (2)

컨테이너 생성 및 접속하기 컨테이너 생성시 이미지에 크게 두 가지 종류가 있다. 1. httpd, ftp, bind와 같이 자체 쉘이 없는 데몬 이미지 2. centos7, ubuntu와 같은 운영체제 이미지 두 종류는 서로 컨테이너 실행시 옵션을 다르게 주어야 정상적으로 동작하고 접속이 가능하다. 하지만 결과적으로 똑같이 실행시키는 방법도 있고 마지막에 소개할 예정이다. 1. 쉘이 없는 데몬 이미지를 컨테이너에 실행 및 접근 방법 docker create [이미지 명]: 지정한 이미지를 가진 컨테이너 생성 docker ps: 동작중인 컨테이너 확인 docker ps -a: 동작중이지 않은 컨테이너까지 모두 확인 docker start [컨테이너 명]: 컨테이너 실행 docker exec -it [컨테이..

Docker 2021.07.07

Docker 명령어 실습 (1)

docker pull 이미지를 내려 받는 명령어 ex) docker pull centos:7 (이미지:버전) docker images 내려 받은 이미지 목록을 출력하는 명령어 ex) docker images docker tag 기존의 이미지에 이름과 태그를 새로 지정하여 이미지를 생성하는 명렁어 ex) docker tag centos:latest song:joon Docker Hub 리포지토리에 업로드하기 위해서는 '리포지토리이름/이미지이름:태그' 의 형식으로 바꿔줘야 한다. ex) docker tag centoslatest thdguswns31/centos:joon docker login Docker Hub로 업로드하기 위해 Docker Hub에 로그인하는 명령어이다. ex) docker login d..

Docker 2021.07.07

Docker 기본 개념 및 CentOS7에 설치 방법

Docker란? 컨테이너 기술을 활용한 오픈소스 가상화 플렛폼이다. 다양한 프로그램 및 운영체제와 같은 실행환경을 컨테이너로 가상화하고 동일한 인터페이스르르 제공하여 프로그램의 배포 및 관리를 단순화한다. 컨테이너 기술을 활용하면 애플리케이션이 독립적인 실행 환경을 갖는다는 것에서 큰 의미가 있다. 컨테이너란? 격리된 가상화 공간에서 프로세스를 동작시키는 기술이다. 기존의 가상화 방식은 OS 가상화이기 때문에 오버헤드가 컸지만 컨테이너는 프로세스를 단수히 격리시키는 것이기 때문에 가볍고 빠르다. CPU나 Memory같은 자원을 필요한 만큼만 할당할 수 있으므로 성능적인 손실이 거의 없다. 이미지를 실행시킨 상태 그 자체가 컨테이너이다. 컨테이너 기술의 장점 하나의 Host에 여러 컨테이너를 실행하여도 서..

Docker 2021.07.07