AIB 데이터 엔지니어링 431 Docker
추가학습
- Dockerfile
- Docker network
- docker-linux 컨테이너 관계
- Kubernates
- 가상머신
- docker inspect
- docker lifecycle
서버. 특별한 역할이 있는 컴퓨터이다. 서비스를 제공. 인터넷에 연결되어 있어서 어떤 기능이 필요하면 클라이언트로서 다른 서버에 정보를 요청할 수 있다. 보통 클라우드에 올려놓음
IP: 네트워크 끝단의 주소. 이동하면 바뀔 수 있다. IPv4: 0~255. 46억개 조합할 수 있는데, 부족함. 공인과 사설로 나누어 공인 내에서 기기마다 사설 아이피를 부여해보기. 사설 아이피만 있다면 서버로 구축할 수 없다. 외부에서 접근해오기 위해 공인아이피만 쓰거나 포트포워딩/DMZ 사용해야 한다. 고정, 유동아이피가 있다. 서버는 바뀌지 않도록 고정. 인터넷에 사용중인 아이피만 할당해주는 유동아이피. 해킹에 안전할 수 있는 부분도 있다. DDNS 동적 DNS. 아이피 고정시키기. IPv6 16진수 4자리 8개로 이어짐.
Docker: 키보드 명령어로 작동. 무거운 일을 대싱 수행한다는 의미의 단어. 리눅스에서 돌아가는 프로그램을 다른 PC에서도 수행할 수 있다.
- 미리 제작된 개발 환경을 제공하여 호환성의 고생을 덜어준다. 쉽다는 것: Dockerfile. 설명서를 제공
- 용량이 가볍고 빠름: Container. 리눅스 컨테이너를 본따서 만든 컨테이너.
- 쉽게 삭제하고 복구할 수 있다. 개발 환경을 여러 개 만들어서 사용하고 배포하고 수정하기 때문에 테스트가 쉽다.
Container
- 리눅스 container는 리눅스에서 필요한 라이브러리나 앱을 모아서 별도의 서버처럼 구성한 것. 컨테이너가 각각의 컨테이너에 대한 네트워크, 환경 변수 등의 시스템 자원을 독립적으로 소유하고 있다.
- 프로세스 구획화: 기본적으로 특정 컨테이너 안에서만 작업하고 액세스하고, 다른 컨테이너의 프로세스에 간섭할 수 없다.
- 네트워크 구획화: IP 주소 한 개가 할당되어 있다.
- 파일시스템 구획화: 컨테이너에서의 명령이나 파일 액세스를 제한할 수 있다.
- 즉 가상머신이랑 비슷하다.
- 도커 container: 인프라 / 프로그램을 어떤 환경에서나 실행 가능하도록 만들어주는 개체. 하나의 컨테이너 안에 필요한 부분을 다 넣어서 가져온다.
- 가상머신: 하나의 OS 안에 또 다른 OS를 만드는 것. 하나의 OS를 유지하기 위해 자원 너무 사용하게 되어 효율성과 속도가 느리다.
도커 구성
- Registry_acc/Repo_name:Tag
- 레지스트리: 도커 이미지 관리되는 공간. 깃허브에서 깃을 허브에서 관리하는 것처럼 도커 이미지를 허브에서 관리.
- 리포: 도커 이미지 저장되는 공간. 깃허브 리포와 비슷한 개념
- 태그: 버전별로 이미지가 다를 수 있다는 부분. default
latest
- 간단한 명령어들
docker image pull
: 이미지 가져오기docker image ls
: 이미지 확인docker container run
: run new container from imagedocker container ls
: container listdocker container rm
: rm containerdocker image rm
: rm image- argument
-it
: interaction -p 818:80
호스트 818포트와 container의 80포트를 연결docker container prune
: active 아닌 container 삭제
프로그램과 프로세스, 도커허브로 설명을 하자면 도커허브 안에 도커 이미지가 있어서 이를 로컬로 가져오면 프로그램, 실행 중인 프로세스로서의 컨테이너
서버 활용
- 서버는 컨테이너로 사용하고 필요한 파일은 별도로 두는 방법이 있다. 이 방법으로 서버의 문제를 별도로 관리하고 새로운 서버 재구동에 용이하다.
docker container cp
등으로 가능.cp
대신scp
서버와 로컬 간 빠름. 예:scp /home/example.txt dhj@141.211.xx.xxx:/home/test
이미지 만들기
- 이미지로 commit
docker container commit [from] [to:version]
- 빌드파일 만들기. 설명서를 통해 이미지 만들어서 사용하는 방법 안내.
Dockerfile
docker build --tag [DOCKERNAME]
yaml: config. docker-compose에서 yml 사용하는 이유는 둘을 연결할 때 많은 과정이 필요함. yml이 있다면 쉽게 구성할 수 있다.
댓글남기기