쿠버네티스 스터디(DKOS; Docker & K8s Online Study)를 참여하며 공부한 내용을 기록한다.
매주 한번씩, 8주차까지 이어질 계획이다.
컨테이너는 운영체제를 제외한 나머지 애플리케이션 실행에 필요한 모든 파일을 패키징한다는 점에서 OS 레벨의 가상화를 지원한다.
가상머신은 기존의 서버에 하이퍼바이저를 설치한 후, 그 위에 가상 OS와 패키징한 VM을 만들어 실핸하는 방식인 하드웨어 레벨의 가상화를 지원한다.
컨테이너는 게스트OS와 하이퍼바이저가 없기때문에 이로인한 오버헤드를 줄임으로써 훨씬 더 가볍게 프로세스를 실행할 수 있다.
컨테이너가 생성되고 시작하지 않은 상태
컨테이너의 모든 프로세스가 실행중인 상태
컨테이너의 프로세스가 멈준 상태
컨테이너의 프로세스가 종료된 상태
컨테이너가 삭제된 상태
$ docker pull <image name>:<version>
$ docker create --name <container name> <image name>
$ docker start <container name>
$ docker run -it --name <container name> <image name>
$ docker pause <container name>
$ docker unpause <container name>
$ docker stop <container name>
or
$ docker stop $(docker container ls –aq)
$ docker stop <container name>
$ docker rm <container name>
or
$ docker rm $(docker ps -aq)
$ docker rmi <image name>
$ docker ps
or
$ docker ps -a // 중지된 컨테이너까지 확인
ubuntu 20.04 버전을 기준으로 작성
$ sudo apt update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo systemctl enable docker && service docker start
service docker status
Docker Hub와 Dockerfile을 이용해 이미지 생성/업로드 및 다운로드를 실습한다.
명령어을 명시한 뒤에 옵션을 추가하는 방식이며, Dockerfile 명령어는 위에서 한 줄씩 차례대로 실행된다.
cat <<EOT> Dockerfile
FROM ubuntu:14.04
LABEL maintainer "aiden<email@mail.com>"
LABEL "purpose"="practice"
RUN apt-get update
RUN apt-get install apache2 figlet -y
ADD test.html /var/www/html
WORKDIR /var/www/html
RUN ["/bin/bash", "-c", "echo Hello! DDaetMok!!! | figlet > /var/www/html/index.html"]
EXPOSE 80
CMD apachectl -DFOREGROUND
EOT
$ docker build <PATH> -t <IMAGE_NAME>:<TAG>
or
$ docker build -t <IMAGE_NAME>:<TAG> <PATH>
$ docker build -t helloweb:1 ./
$ docker login
Username: *<자신의 ID>*
Password: *<암호>*
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
...
Login Succeeded
$ docker push *<도커 허브 계정>*/helloweb:1
$ docker push you1367/helloweb:1
$ docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) -f && docker rmi $(docker images -q) -f
$ docker ps -a
$ docker images
빌드한 이미지는 삭제하여, 현재 로컬에 없는 상태.
따라서, 도커 저장소에서 다운받아 컨테이너를 실행한다.
$ docker run -d -p 8080:80 --name webserver *<도커 허브 계정>*/helloweb:1
$ docker run -d -p 8080:80 --name webserver you1367/helloweb:1
$ curl localhost:8080