Docker 개요
1. Docker 개념
- 항상 게스트 OS를 설치해야하는 가상머신의 단점을 image와 container 개념으로 보완.
- image : 서버운영 위한 프로그램과 라이브러리만 격리해서 설치한 것. ex)OS 실행파
- container : image를 바로 메모리에 올려서 사용하는 개념. image가 실행되고 있는 격리된 상태 .
- 정리 : Docker의 핵심 -> 하드웨어 가상화가 아닌 실행 환경 분리(Isolation)
2. Docker의 구조
- docker engine : 도커 코어기능
- docker machine : 도커 실행 환경 구축
- docker hub : Public, Private 이미지 저장소
- docker registry : 이미지 공개 및 공유
- docker kitematic : Docker GUI tool
- docker compose : 여러 컨테이너 통합관리
- docker swarm : 클러스터 관리
Docker 실습
1. Docker 설치
- # apt update
- # apt install curl
- # curl -fsSL https://get.docker.com | sudo sh설치 후 버전 확인# docker version
- # docker info
2. Docker 이미지 생성
- # docker search 이미지명// docker hub웹에서 이미지를 찾는다.
- # docker pull 이미지명 // 이미지를 다운로드 한다.
- # docker images // 현재 다운된 이미지 확인
- # docker inspect 이미지명 //이미지 혹은 컨테이너의 세부정보를 json 형태로 출력
3. Docker 이미지 편집
- # docker tag 이미지명 태그명 // 이미지의 태그를 수정. image id는 동일하다. 보이는 태그만 바뀜.
- # docker history 이미지명 // 이미지의 history 출력
- # docker rmi 이미지명 // 이미지 삭제
- # docker rmi $(docker images -q) -f // 전체이미지 삭제 q(quite, 내부명령) / f(force, 강제)
4. Docker 컨테이너 생성
- # docker run -it --name=컨테이너명 이미지명 // run 명령어 : 컨테이너 생성. 이미지 있을 경우 이미지 사용. 이미지 없을 경우 이미지 자동 pull 후 사용. install과는 다른 개념.
- # ctrl+p + ctrl+q // 컨테이너 살려두고 빠져나오기
- # docker run -d centos /bin/ping localhost // -d 백그라운드 프로세스 옵션, centos 이미지 실행후 로컬호스트에 핑 보내기
- # docker ps -a // 현재 생성된 컨테이너 보여주기 , -a 옵션 (all) , -f 옵션 (filter)
- # docker logs -t 컨테이너명 // 컨테이너의 로그 출력
- # docker run -p 8080:80 httpd // 로컬포트 8080을 컨테이너포트 80로 포워딩
- # netstat -nlp | grep 8080 // 포트넘버 8080의 네트워크 상태를 확인한다.
- # docker run -it --add-host=test.com:192.168.1.1 centos // 컨테이너의 /etc/hosts에 호스트 이름과 주소를 추가
5. Docker 컨테이너 응용
- # docker start,stop,kill ,restart 컨테이너명 // 컨테이너 시작, 정지, signal, 재시작
- # docker pause,unpause 컨테이너명 // 컨테이너의 모든 프로세스 일시정지
- # docker rm -f 컨테이너명 //컨테이너 강제삭제
- # docker container prune // 프로세스 중이지 않은 컨테이너 만 제거
- # docker start,stop,kill ,restart 컨테이너명 // 컨테이너 시작, 정지, signal, 재시작
- # docker pause,unpause 컨테이너명 // 컨테이너의 모든 프로세스 일시정지
- # docker attach 컨테이너명 // 실행되고 있는 컨테이너의 표준 입력과 표준 출력을 연결.
- # docker top 컨테이너명 // 컨테이너에서 실행되고있는 프로세스 출력.
6. Docker 포맷 변화
- # docker commit -a 관리자명 컨테이너명 이미지명 // 컨테이너-> 이미지
- # docker export 컨테이너명 > 파일명.tar // 컨테이너 -> 파일
- # cat 파일명.tar | docker import - 이미지명 // 파일 -> 이미지
- # docker save -0 파일명.tar 이미지명 // 이미지->파일
- # docker load -i 파일명.tar // 파일-> 이미지
Congratulations @boybuddha! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!