2 minute read

docker-doc

docker image command

// 도커 이미지 정보 
docker image inspect <imageName>


// 도커 이미지 태그정보 변경
docker image tag <imageName> <wantedName like dole/nginx>

// 태그정보 변경된 이름으로 푸쉬
docker image push <targetName>

// 도커 로그인/로그아웃
docker login/logout

// 로그인 정보확인
cat .docker/config.json

docker build dockerfile

// 도커파일 빌드

docker image build -t customnginx .
-> docker image build -target <wantedName> <. = currentfolder>

About dockerfile

  FROM : Docker Base Image (기반이 되는 이미지, <이미지 이름>:<태그> 형식으로 설정)
  MAINTAINER : 메인테이너 정보 (작성자 정보)
  RUN : Shell Script 또는 명령을 실행
  CMD : 컨테이너가 실행되었을 때 명령이 실행
  LABEL : 라벨 작성 (docker inspect 명령으로 label 확인할 수 있습니다.)
  EXPOSE : 호스트와 연결할 포트 번호를 설정한다.
  ENV : 환경변수 설정
  ADD : 파일 / 디렉터리 추가
  COPY : 파일 복사
  ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트 실행
  VOLUME : 볼륨 마운트
  USER : 명령 실행할 사용자 권한 지정
  WORKDIR : "RUN", "CMD", "ENTRYPOINT" 명령이 실행될 작업 디렉터리
  ARG : Dockerfile 내부 변수
  ONBUILD : 다른 이미지의 Base Image로 쓰이는 경우 실행될 명령 수행
  SHELL : Default Shell 지정

dockerfile run

# Dockerfile
  FROM node:6-alpine
  EXPOSE xxxx
  RUN apk add --update tini
  RUN mkdir -p /usr/src/app 
  WORKDIR /usr/src/app
  COPY package.json package.json
  RUN npm install && npm cache clean --force
  COPY . .
  CMD [ "tini", "--", "node", "./bin/www"]


docker build -t mynode .
docker container run --rm -p 80:3000 mynode

도커에서 포트 의미 => 내포트:컨테이너포트

prune

 -- 사용하지않는 이미지 삭제
 docker image prune

 -- 사용하지 않는 컨테이너 삭제
 docker container prune

 -- 사용하지 않는 볼륨 삭제
 docker container prune
 
 -- 사용하지 않는 네트워크 삭제
 docker container prune

 -- 사용하지 않는 docker object삭제
 docker system prune
 

도커 볼륨 확인

-- 도커에서 mysql 등 persistent data 등은 볼륨에서 확인할 수 있는데
docker contianer inspect <container> 시 마운트에서 정보를 확인 할 수 있다.
        "Mounts": [
            {
                "Type": "volume",
                "Name": "a524a4a94f434b7f9e2edc355aff1941b261bd782e525dbb7c08751d9040b461",
                "Source": "/var/lib/docker/volumes/a524a4a94f434b7f9e2edc355aff1941b261bd782e525dbb7c08751d9040b461/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ],

name으로 볼륨확인을 할 수 있는데
내 로컬 볼륨을 확인해보면
docker volume ls => 
docker volume inspect <volume>
컨테이너 실행할때마다 영속성 데이터 볼륨은 생성되는데 정지해도 없어지지 않는다
docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v mysql-db:/var/lib/mysql mysql
-v 명령어는 볼륨 지정 및 볼륨 네이밍을 할 수 있는데 이로 관리하는게 편함

도커 볼륨 생성

docker volume create <options>

bind mounting

* 도커파일에서는 쓰면 안되고 container run 명령어로 써야함
                  ($pwd) or {$pwd}: container path
container run -v /usr/myfolder/directory:/conatinerpath/directory (mac/linux)

도커 이미지 생성한 폴더에서 폴더를 만들거나 파일을 만들면 컨테이너 패스에도 똑같이 나타남

rewriting docker bash 명령어

docker container exec -it <conatiner> bash

Tags:

Categories:

Updated: