24.01.16 최초 작성
#기본 명령어
docker build
#이미지 구분
docker build -t <사용자 이름>/<이미지 이름>:<버전 태그>
docker build -t yoon/ubuntu:1.0
#도커 파일 경로 지정
docker build -f /<경로>/<도커파일>
run
: 배포 및 실행#기본 명령어
docker run [run 옵션] <이미지이름> [컨테이너 실행 옵션 or 명령어]
docker run ~ yoon/ubuntu:1.0 ~
#-d : 백그라운드 실행, -P : 이미지에서 지정한 포트 open, -p 8080:80 : 8080번 포트를 통해 80번 포트에 접근 가능앷
docker run -d -P nginx
#일시 중지/다시 시작 (메모리에서 unload/load)
docker pause <컨테이너 ID/식별이름>
docker start <컨테이너 ID/식별이름>
#실행중인(중지 포함시 -a) 컨테이너 확인
docker ps (-a)
#컨테이너 종료/강제종료
docker stop <컨테이너 ID/식별이름>
docker kill <컨테이너 ID/식별이름>
#종료된 컨테이너 환경 이미지 형식으로 보관
docker commit <컨테이너 ID/식별이름> [새로운 태그]
#지정한 이미지에 이름 부여
docker tag <이미지 hash값> <부여할 이름>
#이미지를 파일로 내보내기
docker save
#이미지파일을 Daemon으로 load
docker load
# 컨테이너에 접근
docker exec [옵션] [컨테이너 명령 + 인수]
-t : 터미널 열기
-i : 표준 입출력 허용
#myweb 컨테이너에 bin/bash 실행
docker exec -it myweb /bin/bash
# 컨테이너의 로그 표시
docker log
# 컨테이너/이미지의 상세정보 표시
docker inspect [옵션] <대상 이름> [옵션]
# docker hub에서 이미지 검색
docker search <검색 키워드>
docker search nginx
#이미지 표시
docker images
#이미지 삭제
docker rmi
sudo vi /etc/docker/registry/config.yml
docker start registry
docker rm -f registry
docker run -d\
-v /etc/docker/registry:/etc/docker/registry \
-p 5000:5000 \
--name registry \
registry:2
#해당 레지스트리 사용해 pull
docker pull localhost:5000/ubuntu:latest
기반 이미지 공유
공유 볼륨
볼륨
단위로 컨테이너에 추가 가능하다볼륨
은 여러 컨테이너에서 공유 가능하며 컨테이너와 다른 라이프사이클을 가짐개발 도구 컨테이너
테스트 환경 컨테이너
빌드 컨테이너
설치 컨테이너
서비스 박스 컨테이너
INFRASTRUCTURE 컨테이너
#기반 이미지 지정
FROM <이미지 이름>
FROM <이미지 이름>:[태그]
FROM <이미지 이름>@<다이제스트>
FROM ubuntu:20.04
#이미지 제작자 정보 저장
MAINTAINER <이름 이메일>
MAINTAINER Minsu Choi <abcd@gmail.com>
#환경변수 지정
ENV <환경변수 이름> <값>
ENV PYTHON3 python3.6
ENV PYTHON3=python3.6 PIP3=pip3.6
ENV PYTHON3=python3.6\
PIP3=pip3.6
#컨테이너 빌드 시 실행되는 구문(변경 시 새로운 컨테이너 생성)
RUN <명령>
RUN <["실행파일", "매개변수1", "매개변수2"...]>
RUN <명령1>; <명령2>; ...
RUN apt-get update
RUN ["/bin/bash", "-c", "apt-get update"]
RUN apt-get update; install gcc g++
#컨테이너 생성하지 않고 파일시스템에 파일 추가(압축파일 압축해제해서 처리)
ADD <원본> <목적지>
ADD <원본1> <원본2> .. <목적지>
ADD lab2-1.c /data/
#원본 파일을 컨테이너의 위치로 복사(압축파일 그대로, 다른 이미지로부터 복사 가능)
COPY <원본> <목적지>
Dockerfile
작성FROM python:3.8-bullseye
RUN mkdir -p /data
WORKDIR /data/
RUN pip install Django==3.2.5
RUN python -m django startproject mysite
WORKDIR /data/mysite/
RUN python manage.py startapp polls
RUN python manage.py migrate --noinput
CMD python manage.py runserver 0.0.0.0:8000
EXPOSE 8000
docker build -t django/mysite:1.0 .
docker run -d -P django/mysite:1.0
docker run -it -P django/mysite:1.0
localhost
와 포트포워딩을 진행한 후 접속