도커 설치 : http://docs.docker.com/engine/installation/
관련 코드 레포:
kubernetes-in-action/app.js at master · luksa/kubernetes-in-action
도커허브는 잘 알려진 소프트웨어 패키지를 위한 즉시 실행 가능한 이미지 보유
ex) busybox 이미지
드라이브 마운트
Windows subsystem for Ubuntu 에서 다른 드라이브도 마운트 하는 방법.tip : 클리앙
도커 설치 확인
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
위와 같은 명령어가 뜨면 docker service가 실행이 안되어있는것이다.
$sudo systemctl status docker
상태를 확인해 봐라 stop일 것이다
아래 명령어를 입력해 주자. 그리고 다시 명령어를 실행해보자
$sudo systemctl start docker
$sudo systemctl enable docker
환경은 wsl 이라서 systemctl 이 없기에 설치해줌
# git install
sudo apt install git
# WSL2 regist Script clone
git clone <https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git>
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
# Enter your password and wait until the script has finished
# restart WSL window and Check status
systemctl
#
$docker run busybox ehco "Hello world"
근데 이 경고는 뭘까..(아마 sudo 모드에서 docker 실행 안해서그런것같음)
백그라운드 동작 이해하기
이미지 실행하기
$docker run <image>
컨테이너에 이미지 버전 저장하기
$docker run <image>:<tag>
간단한 node js 애플리케이션 생성
app.js
const http = require('http');
const os = require('os');
console.log("Kubia server starting...");
var handler = function(request, response) {
console.log("Received request from " + request.connection.remoteAddress);
response.writeHead(200);
response.end("You've hit " + os.hostname() + "\\n");
};
var www = http.createServer(handler);
www.listen(8080);
포트 8080 으로 HTTP 서버 시작, 서버는 모든 요청에 대해 상태코드 200 OK 와 You’ve hit <hostname> 의 텍스트를 HTTP 응답
이미지를 위한 Dockerfile 생성
FROM node:7 #사용할 컨테이너 이미지 정의
ADD app.js /app.js //
ENTRYPOINT ["node", "app.js"] #이미지 수행시 실행되어야 할 명령어
애플리케이션을 이미지로 패키징 하기 위한 파일
Dockerfile은 app.js와 같은 디렉토리에 있어야 함.
$docker build -t kubia .
kubia 라고 부르는 이미지를 빌드하라고 요청함.
도커는 디렉터리 내 Dockerfile 을 살펴보고 파일에 명시된 지시사항에 근거해 이미지 빌드함.
어떻게 이미지가 빌드되는지 이해하기
이미지 레이어에 관해 이해하기
$ docker images
이미지 리스트 조회
컨테이너 이미지 실행
$docker run --name ubia-container -p 8080:8080 -d kubia
-d
: 백그라운드 실행
맥이나 윈도우 사용시 데몬은 가상머신 내부에서 실행중이므로, 가상머신의 호스트이름이나 IP 사용해야함. 이 정보는 DOCKER_HOST
환경변수로 확인ㄱㄴ
애플리케이션 접근
$curl localhost:8080
이게 애플리케이션 응답임. 호스트 이름으로 응답한 도커 컨테이너의 ID
실행중인 모든 컨테이너 조회
$docker ps
컨테이너에 관한 추가정보 얻기
$docker inspect kubia-container
실행중인 컨테이너 내부 탐색
내부에서 컨테이너 탐색
# ps aux
컨테이너 내부 실행중인 프로세스 조회
호스트 운영체제의 다른 프로세스는 못봄
→ 어떻게 볼 수 있나?
호스트 OS에서 실행중인 컨테이너 프로세스
$ ps aux | grep app.js