// 도커 이미지 정보
docker image inspect <imageName>
// 도커 이미지 태그정보 변경
docker image tag <imageName> <wantedName like dole/nginx>
// 태그정보 변경된 이름으로 푸쉬
docker image push <targetName>
// 도커 로그인/로그아웃
docker login/logout
// 로그인 정보확인
cat .docker/config.json
// 도커파일 빌드
docker image build -t customnginx .
-> docker image build -target <wantedName> <. = currentfolder>
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
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
-- 사용하지않는 이미지 삭제
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>
* 도커파일에서는 쓰면 안되고 container run 명령어로 써야함
($pwd) or {$pwd}: container path
container run -v /usr/myfolder/directory:/conatinerpath/directory (mac/linux)
도커 이미지 생성한 폴더에서 폴더를 만들거나 파일을 만들면 컨테이너 패스에도 똑같이 나타남
docker container exec -it <conatiner> bash