Docker

Docker Cheatsheet

2019.12.05


Docker 빠르게 다시 학습하기

https://docs.docker.com/get-started/   도커 사용 방법에 관한 내용을 요약적으로 다룬다.

1. Orientation and setup

Enable Kubernetes

  • OSX

    • Enable "Kubernetes" - Docker icon in the menubar - preferences - kubernetes - Enable Kubernetes - apply

    • apiVersion: v1
      kind: Pod
      metadata:
        name: demo
      spec:
        containers:
        - name: testpod
          image: alpine:3.5
          command: ["ping", "8.8.8.8"]
      
      kubectl apply -f pod.yaml  # pod/demo created
      kubectl get pods 
      # NAME   READY   STATUS    RESTARTS   AGE
      # demo   1/1     Running   0          15s
      
      kubectl logs demo
      # PING 8.8.8.8 (8.8.8.8): 56 data bytes
      
      kubectl delete -f pod.yaml
      

Enable Docker Swarm

docker swarm init
# Swarm initialized: current node (n4uupxohx6wp0d4uhlw1o3ufc) is now a manager ~~ 같은 오류 메시지가 나옴

docker service create --name demo alpine:3.5 ping 8.8.8.8
# 00hrmr1i0ar92dcnn8zo55ta7
# overall progress: 1 out of 1 tasks
# 1/1: running
# verify: Service converged

docker service ps demo
# ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS
# 1xfa8634l0w5        demo.1              alpine:3.5          docker-desktop      Running             Running 32 seconds ago

docker service logs demo
# demo.1.1xfa8634l0w5@docker-desktop    | PING 8.8.8.8 (8.8.8.8): 56 data bytes

docker service rm demo
# demo

docker servbice ls
# ID                  NAME                MODE                REPLICAS            IMAGE               PORTS

2. Containerizing an application

  • There is a project.
git clone -b v1 https://github.com/docker-training/node-bulletin-board
cd node-bulletin-board/bulletin-board-app
  • Dockerfile looks like this.
# Dockerfile inside bulletin-board-app
FROM node:6.11.5  # pre-existing node:6.11.5 image : official image

WORKDIR /usr/src/app
# Use WORKDIR to specify that all subsequent actions should be taken from the directory /usr/src/app in your image filesystem (never the host’s filesystem).

COPY package.json .
# COPY the file package.json from your host to the present location (.) in your image (so in this case, to /usr/src/app/package.json)

RUN npm install
# RUN the command npm install inside your image filesystem (which will read package.json to determine your app’s node dependencies, and install them)

COPY . .
# copy the rest of app's source code in bulletin-board-app to /usr/src/app

CMD [ "npm", "start" ]
  • how to build?
docker image build -t bulletinboard:1.0 .

# run
docker container run --publish 8000:8080 --detach --name bb bulletinboard:1.0
# fowardPort:presentPort

# terminate
docker container rm --force bb