Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| public:computer:docker [2021/08/07 21:03] – alex | public:computer:docker [2021/08/08 21:00] (current) – [A.3 Cloud Console 사용법] alex | ||
|---|---|---|---|
| Line 577: | Line 577: | ||
| < | < | ||
| <col sm=" | <col sm=" | ||
| - | <panel type=" | + | <panel type=" |
| < | < | ||
| <alert type=" | <alert type=" | ||
| Line 814: | Line 814: | ||
| </ | </ | ||
| + | * 오버레이 네트워크(overlay network); 물리 네트워크 상에서 소프트웨어적으로 에뮬레이트한 네트워크. 물리 네트워크를 덮듯이 가상 네트워크가 구성된다는 점에서 가상 네트워크라라고도 함. 물리 네트워크의 구조가 은폐되어 그 아래에 있는 물리 계층의 형태나 제어 방식 등을 의식하지 않고 이용할 수 있다는 것이 특징. 예를 들어 여러 개의 호스트에 걸친 네트워크를 구성할 때 사용. 소프트웨어로 구성된 네트워크이므로 물리 작업을 수반하지 않고 자유롭게 구성을 변경할 수 있다는 장점. | ||
| === 네트워크 작성(docker network create) === | === 네트워크 작성(docker network create) === | ||
| - | > | + | > 새로운 네트워크 작성 |
| < | < | ||
| <col sm=" | <col sm=" | ||
| <panel type=" | <panel type=" | ||
| < | < | ||
| - | <alert type=" | + | <alert type=" |
| ^ 지정할 수 있는 주요 옵션 | ^ 지정할 수 있는 주요 옵션 | ||
| ^ 옵션 | ^ 옵션 | ||
| - | | | + | | --driver, -d |
| + | | --ip-range | ||
| + | | --subnet | ||
| + | | --ipv6 | ||
| + | | -label | ||
| </ | </ | ||
| <cli prompt=" | <cli prompt=" | ||
| - | $ docker | + | $ docker |
| + | # docker network ls --filter driver=bridge | ||
| </ | </ | ||
| Line 837: | Line 843: | ||
| === 네트워크 연결(docker network connect/ | === 네트워크 연결(docker network connect/ | ||
| - | > | + | > docker 컨테이너를 docker 네트워크에 연결/ |
| < | < | ||
| <col sm=" | <col sm=" | ||
| - | <panel type=" | + | <panel type=" |
| < | < | ||
| - | <alert type=" | + | <alert type=" |
| ^ 지정할 수 있는 주요 옵션 | ^ 지정할 수 있는 주요 옵션 | ||
| ^ 옵션 | ^ 옵션 | ||
| - | | | + | | --ip |
| + | | --ip6 | IPv6 주소 | ||
| + | | --alias | ||
| + | | --link | ||
| </ | </ | ||
| + | |||
| <cli prompt=" | <cli prompt=" | ||
| - | $ docker | + | $ docker |
| + | $ docker container inspect webfront | ||
| + | $ docker container run -itd --name=webp --net=web-network nginx # 네트워크를 지정한 컨테이너 시작 | ||
| + | $ docker network disconnet web-network webfront | ||
| </ | </ | ||
| Line 858: | Line 871: | ||
| === 네트워크 상세 정보 확인(docker network inspect) === | === 네트워크 상세 정보 확인(docker network inspect) === | ||
| - | > | + | > 네트워크 상세 정보를 확인 |
| < | < | ||
| <col sm=" | <col sm=" | ||
| - | <panel type=" | + | <panel type=" |
| < | < | ||
| - | <alert type=" | + | <alert type=" |
| - | + | ||
| - | ^ 지정할 수 있는 주요 옵션 | + | |
| - | ^ 옵션 | + | |
| - | | | + | |
| </ | </ | ||
| <cli prompt=" | <cli prompt=" | ||
| - | $ docker | + | $ docker |
| </ | </ | ||
| Line 879: | Line 888: | ||
| === 네트워크 삭제(docker network rm) === | === 네트워크 삭제(docker network rm) === | ||
| - | > | + | > docker 네트워크 삭제 |
| < | < | ||
| <col sm=" | <col sm=" | ||
| - | <panel type=" | + | <panel type=" |
| < | < | ||
| - | <alert type=" | + | <alert type=" |
| - | + | ||
| - | ^ 지정할 수 있는 주요 옵션 | + | |
| - | ^ 옵션 | + | |
| - | | | + | |
| </ | </ | ||
| <cli prompt=" | <cli prompt=" | ||
| - | $ docker | + | $ docker |
| </ | </ | ||
| Line 904: | Line 909: | ||
| ==== 가동중인 컨테이너 조작 ==== | ==== 가동중인 컨테이너 조작 ==== | ||
| + | > 실제 환경에서 운용할 때 이미 가동 중인 컨테이너의 상태를 확인하거나 임의의 프로세스를 실행시킬 때 하는 조작 | ||
| + | |||
| + | |||
| === 가동 컨테이너 연결(docker container attach) === | === 가동 컨테이너 연결(docker container attach) === | ||
| + | > 가동 중인 컨테이너에 연결할 때. 연결한 컨테이너를 종료하려면 Ctrl+C, 컨테이너를 시작한 채로 컨테이너 안에서 움직이는 프로세스만 종료하려면 Ctrl+P, Ctrl+Q 입력. | ||
| + | |||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker container attach sample | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| === 가동 컨테이너에서 프로세스 실행(docker container exec) === | === 가동 컨테이너에서 프로세스 실행(docker container exec) === | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | |||
| + | ^ 지정할 수 있는 주요 옵션 | ||
| + | ^ 옵션 | ||
| + | | --detach, -d | 명령을 백그라운드에서 실행한다. | ||
| + | | --interactive, | ||
| + | | --tty, -t | tty(단말 디바이스)를 사용한다. | ||
| + | | --user, -u | 사용자명을 지정한다. | ||
| + | |||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker container exec -it webserver / | ||
| + | $ docker container exec -it webserver /bin/echo "Hello world" | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| === 가동 컨테이너의 프로세스 확인(docker container top) === | === 가동 컨테이너의 프로세스 확인(docker container top) === | ||
| + | > 가동 중인 컨테이너에서 실행되고 있는 프로세스 확인 | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker container top webserver | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === 가동 컨테이너의 포트 전송 확인(docker container port) === | === 가동 컨테이너의 포트 전송 확인(docker container port) === | ||
| + | > 가동 중인 컨테이너에서 실행되고 있는 프로세스가 전송되고 있는 포트를 확인 | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker container port webserver | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ^ 주요 Linux 배포판에서의 잘 알려진 포트 | ||
| + | ^ 번호 | ||
| + | | 20 | TCP | FTP(데이터) | ||
| + | | 21 | TCP | FTP(제어) | ||
| + | | 22 | TCP/ | ||
| + | | 23 | TCP | Telnet | ||
| + | | 25 | TCP/ | ||
| + | | 43 | TCP | WHOIS | 도메인 정보 검색 | ||
| + | | 53 | TCP/ | ||
| + | | 80 | TCP/ | ||
| + | | 88 | TCP/ | ||
| + | | 110 | TCP | POP3 | 메일 수신 | ||
| + | | 123 | UDP | NTP | 시간 조정 | ||
| + | | 135 | TCP | Microsoft RPC | Microsoft의 원격 액세스 | ||
| + | | 143 | TCP/ | ||
| + | | 161 | TCP/ | ||
| + | | 162 | TCP/ | ||
| + | | 389 | TCP/ | ||
| + | | 443 | TCP/ | ||
| + | | 465 | TCP | SMTPS | SMTP의 암호화 통신 | ||
| + | | 514 | UDP | syslog | ||
| + | | 989 | TCP/ | ||
| + | | 990 | TCP/ | ||
| + | | 992 | TCP/ | ||
| + | | 993 | TCP | IMAPS | IMAP의 암호화 통신 | ||
| + | | 995 | TCP | POP3S | POP3의 암호화 통신 | ||
| + | |||
| === 컨테이너 이름 변경(docker container rename) === | === 컨테이너 이름 변경(docker container rename) === | ||
| + | > 컨테이너 이름 변경 | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker container rename old new | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === 컨테이너 안의 파일을 복사(docker container cp) === | === 컨테이너 안의 파일을 복사(docker container cp) === | ||
| + | > 컨테이너 안의 파일을 호스트에 복사 | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | <alert type=" | ||
| + | |||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker container cp webserver:/ | ||
| + | $ docker container cp ./test.txt webserver:/ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === 컨테이너 조작의 차분 확인(docker container diff) === | === 컨테이너 조작의 차분 확인(docker container diff) === | ||
| + | > 컨테이너 안에서 어떤 조작을 하여 컨테이너가 이미지로부터 생성되었을 때와 달라진 점(차분)을 확인 | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | |||
| + | ^ 변경의 구분 | ||
| + | ^ 구분 | ||
| + | | A | 파일 추가 | ||
| + | | D | 파일 삭제 | ||
| + | | C | 파일 수정 | ||
| + | |||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker container diff test | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| Line 924: | Line 1080: | ||
| ==== 이미지 생성 ==== | ==== 이미지 생성 ==== | ||
| + | > docker 컨테이너를 바탕으로 docker 이미지 작성 | ||
| + | |||
| === 컨테이너로부터 이미지 작성(docker container commit) === | === 컨테이너로부터 이미지 작성(docker container commit) === | ||
| + | > 컨테이너로부터 이미지 작성 | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | </ | ||
| + | |||
| + | ^ 지정할 수 있는 주요 옵션 | ||
| + | ^ 옵션 | ||
| + | | --author, -a | 작성자를 지정한다(ex; | ||
| + | | --message, -m | 메시지를 지정한다. | ||
| + | | --change, -c | 커밋 시 Dockerfile 명령을 지정한다. | ||
| + | | --pause, -p | 컨테이너를 일시 정지하고 커밋한다. | ||
| + | |||
| + | </ | ||
| + | <cli prompt=" | ||
| + | $ docker container commit -a "Alex Levine" | ||
| + | $ docker image inspect alexlevine/ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === 컨테이너를 tar 파일로 출력(docker container export) === | === 컨테이너를 tar 파일로 출력(docker container export) === | ||
| + | > 가동 중인 컨테이너의 디렉토리/ | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker container export webserver > latest.tar | ||
| + | $ tar -tf latest.tar | ||
| + | $ tar tf latest.tar | more | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === tar 파일로부터 이미지 작성(docker image import) === | === tar 파일로부터 이미지 작성(docker image import) === | ||
| + | > Linux OS 이미지의 디렉토리/ | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | |||
| + | * docker image import 명령으로 지정할 수 있는 아카이브 파일; tar, tar.gz, tgz, bzip, tar.xz, txz | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | <cli prompt=" | ||
| + | $ cat latest.tar | docker image import - alexlevine/ | ||
| + | $ docker image ls # 이미지 확인 | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === 이미지 저장(docker image save) === | === 이미지 저장(docker image save) === | ||
| + | > docker 이미지를 tar로 저장 | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker image save -o export.tar tensorflow | ||
| + | $ ls -l | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === 이미지 읽어 들이기(docker image load) === | === 이미지 읽어 들이기(docker image load) === | ||
| + | > tar 이미지로부터 이미지를 읽음 | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker image load -i export.tar | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | * docker container export <-> docker container import | ||
| + | * docker image save <-> docker image load | ||
| === 불필요한 이미지/ | === 불필요한 이미지/ | ||
| + | > 사용하지 않는 이미지, 컨테이너, | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | |||
| + | ^ 지정할 수 있는 주요 옵션 | ||
| + | ^ 옵션 | ||
| + | | --all, -a | 사용하지 않는 리소스를 모두 삭제한다. | ||
| + | | --force, -f | 강제적으로 삭제한다. | ||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker system prune -a # 불필요한 리소스 삭제 | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| Line 940: | Line 1219: | ||
| ---- | ---- | ||
| ===== Dockerfile을 사용한 코드에 의한 서버 구축 ===== | ===== Dockerfile을 사용한 코드에 의한 서버 구축 ===== | ||
| + | * Dockerfile; 베이스가 되는 이미지에 각종 미들웨어를 설치 및 설정하고, | ||
| ==== Dockerfile을 사용한 구성 관리 ==== | ==== Dockerfile을 사용한 구성 관리 ==== | ||
| + | - 베이스가 될 Docker 이미지 | ||
| + | - Docker 컨테이너 안에서 수행한 조작(명령) | ||
| + | - 환경변수 등의 설정 | ||
| + | - Docker 컨테이너 안에서 작동시켜둘 데몬 실행 | ||
| - | === Dockerfile이란? | ||
| - | === Dockerfile의 기본 구문 === | ||
| - | === Dockerfile 작성 === | + | === Dockerfile의 기본 구문 및 작성 === |
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | |||
| + | ^ Dockerfile의 명령 | ||
| + | ^ 명령 | ||
| + | | FROM | 베이스 이미지 지정 | ||
| + | | RUN | 명령 실행 | ||
| + | | CMD | 컨테이너 실행 명령 | ||
| + | | LABEL | 라벨 설정 | ||
| + | | EXPOSE | ||
| + | | ENV | 환경변수 | ||
| + | | ADD | 파일/ | ||
| + | | COPY | 파일 복사 | ||
| + | | ENTRYPOINT | ||
| + | | VOLUME | ||
| + | | USER | 사용자 지정 | ||
| + | | WORKDIR | ||
| + | | ARG | Dockerfile 안의 변수 | ||
| + | | ONBUILD | ||
| + | | STOPSIGNAL | ||
| + | | HEALTHCHECK | ||
| + | | SHELL | 기본 쉘 설정 | ||
| + | |||
| + | * 주석; # | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <panel type=" | ||
| + | < | ||
| + | * FROM 명령 | ||
| + | |||
| + | <alert type=" | ||
| + | <alert type=" | ||
| + | <alert type=" | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| ==== Dockerfile의 빌드와 이미지 레이어 ==== | ==== Dockerfile의 빌드와 이미지 레이어 ==== | ||
| === Dockerfile로부터 Docker 이미지 만들기 === | === Dockerfile로부터 Docker 이미지 만들기 === | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | </ | ||
| + | <cli prompt=" | ||
| + | $ docker build -t sample:1.0 / | ||
| + | $ docker build -t sample -f Dockerfile.base . # Dockerfile.base 파일 빌드 | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| === Docker 이미지의 레이어 구조 === | === Docker 이미지의 레이어 구조 === | ||
| + | * Dockerfile의 명령 한 줄마다 이미지 작성 | ||
| ==== 멀티스테이지 빌드를 사용한 애플리케이션 개발 ==== | ==== 멀티스테이지 빌드를 사용한 애플리케이션 개발 ==== | ||
| + | > 빌드 환경, 제품 환경이 다르므로 멀티스테이지 빌드 기능 사용 | ||
| === Dockerfile 만들기 === | === Dockerfile 만들기 === | ||
| + | <sxh> | ||
| + | # 1. Build Image | ||
| + | FROM golang: | ||
| + | |||
| + | # Install dependencies | ||
| + | WORKDIR / | ||
| + | RUN go get -d -v github.com/ | ||
| + | |||
| + | $ Build modules | ||
| + | COPY main.go . | ||
| + | RUN GOOS=linux go build -a -o greet . | ||
| + | |||
| + | # ------------------------- | ||
| + | # 2. Production Image | ||
| + | FROM busybox | ||
| + | WORKDIR / | ||
| + | |||
| + | # Deploy modules | ||
| + | COPY --from=builder / | ||
| + | ENTRYPOINT [" | ||
| + | </ | ||
| === Docker 이미지의 빌드 === | === Docker 이미지의 빌드 === | ||
| + | <cli prompt=" | ||
| + | $ docker build -t greet . | ||
| + | </ | ||
| === Docker 컨테이너의 시작 === | === Docker 컨테이너의 시작 === | ||
| + | <cli prompt=" | ||
| + | $ docker container run -it --rm greet alex | ||
| + | Hello alex | ||
| + | |||
| + | $ docker container run -it --rm greet --lang=es alex | ||
| + | Hola alex | ||
| + | </ | ||
| + | |||
| ==== 명령 및 데몬 실행 ==== | ==== 명령 및 데몬 실행 ==== | ||
| + | > Dockerfile에서 명령이나 데몬을 실행하는 방법 | ||
| === 명령 실행(RUN 실행) === | === 명령 실행(RUN 실행) === | ||
| + | <alert type=" | ||
| + | |||
| + | - Shell 형식으로 기술; 쉘 경유. | ||
| + | - Exec 형식으로 기술; 쉘을 경유하지 않고 직접 실행 | ||
| + | |||
| + | |||
| + | <sxh> | ||
| + | # Shell 형식 | ||
| + | RUN apt-get install -y nginx | ||
| + | |||
| + | # Exec 형식 | ||
| + | RUN ["/ | ||
| + | </ | ||
| + | |||
| + | * RUN 명령을 여러 개 지정하면 명령 줄만큼의 레이어 생성 | ||
| + | * RUN 명령을 한 줄로 지정하면 하나의 레이어 생성; RUN 명령의 줄 바꿈은 \ | ||
| === 데몬 실행(CMD 명령) === | === 데몬 실행(CMD 명령) === | ||
| + | * RUN 명령은 이미지를 작성하기 위해 실행하는 명령을 기술, 이미지를 바탕으로 생성된 컨테이너 안에서 명령을 실행하려면 CMD | ||
| + | * Dockerfile에는 하나의 CMD 명령. 여러 개 지정시 마지막 명령만 유효 | ||
| + | |||
| + | <alert type=" | ||
| + | |||
| + | - Exec 형식으로 기술 | ||
| + | - Shell 형식으로 기술 | ||
| + | - ENTRYPOINT 명령의 인수로 CMD 명령 사용 | ||
| + | |||
| + | * 패키지 관리 시스템 | ||
| + | * YUM(Yellowdog Updater Modified); CentOS, Fedora, Red Hat 계열 -> DNF(Dandified Yum) | ||
| + | * APT(Advanced Packaging Tool); Debian, Ubuntu, Debian 계열 | ||
| === 데몬 실행(ENTRYPOINT 명령) === | === 데몬 실행(ENTRYPOINT 명령) === | ||
| + | * ENTRYPOINT 명령에서 지정한 명령은 Dockerfile에서 빌드한 이미지로부터 Docker 컨테이너를 시작하기 때문에 docker container run 명령을 실행했을 때 실행 | ||
| + | |||
| + | <alert type=" | ||
| + | |||
| + | - Exec 형식으로 기술 | ||
| + | - Shell 형식으로 기술 | ||
| + | |||
| + | * ENTRYPOINT vs. CMD; | ||
| + | * CMD; 컨테이너 시작 시에 실행하고 싶은 명령을 정의해도 docker container run 명령 실행 시에 인수로 새로운 명령을 지정한 경우 이것을 우선 실행 | ||
| + | * ENTRYPOINT; 지정한 명령은 반드시 컨테이너에서 실행, 실행 시에 명령 인수를 지정하고 싶을 때는 CMD 명령과 조합하여 사용. | ||
| === 빌드 완료 후에 실행되는 명령(ONBUILD 명령) === | === 빌드 완료 후에 실행되는 명령(ONBUILD 명령) === | ||
| + | |||
| + | <alert type=" | ||
| === 시스템 콜 시그널의 설정(STOPSIGNAL 명령) === | === 시스템 콜 시그널의 설정(STOPSIGNAL 명령) === | ||
| + | <alert type=" | ||
| === 컨테이너의 헬스 체크 명령(HEALTHCHECK 명령) === | === 컨테이너의 헬스 체크 명령(HEALTHCHECK 명령) === | ||
| + | <alert type=" | ||
| + | |||
| + | ^ 지정할 수 있는 옵션 | ||
| + | ^ 옵션 | ||
| + | | --interval=n | ||
| + | | --timeout=n | ||
| + | | --retries=n | ||
| + | |||
| ==== 환경 및 네트워크 설정 ==== | ==== 환경 및 네트워크 설정 ==== | ||
| + | > Dockerfile 안에서 이용할 수 있는 환경변수나 컨테이너 안에서의 작업 디렉토리 지정 | ||
| === 환경변수 설정(ENV 명령) === | === 환경변수 설정(ENV 명령) === | ||
| + | <alert type=" | ||
| + | <alert type=" | ||
| === 작업 디렉토리 지정(WORKDIR 명령) === | === 작업 디렉토리 지정(WORKDIR 명령) === | ||
| + | <alert type=" | ||
| + | |||
| + | * RUN, CMD, ENTRYPOINT, COPY, ADD 명령에 대한 작업 디렉토리 지정 | ||
| === 사용자 지정(USER 명령) === | === 사용자 지정(USER 명령) === | ||
| + | * RUN, CMD, ENTRYPOINT 명령을 실행하기 위한 사용자 지정 | ||
| + | |||
| + | <alert type=" | ||
| + | |||
| === 라벨 지정(LABEL 명령) === | === 라벨 지정(LABEL 명령) === | ||
| + | * 이미지에 버전 정보나 작성자 정보, 코멘트 등과 같은 정보를 제공할 때 사용 | ||
| + | |||
| + | <alert type=" | ||
| + | |||
| === 포트 설정(EXPOSE 명령) === | === 포트 설정(EXPOSE 명령) === | ||
| + | * 컨테이너의 공개 포트 번호를 지정 | ||
| + | |||
| + | <alert type=" | ||
| === Dockerfile 내 변수의 설정(ARG 명령) === | === Dockerfile 내 변수의 설정(ARG 명령) === | ||
| + | * Dockerfile 안에서 사용할 변수를 정의할 때 사용 | ||
| + | |||
| + | <alert type=" | ||
| + | |||
| === 기본 쉘 설정(SHELL 명령) === | === 기본 쉘 설정(SHELL 명령) === | ||
| + | * 쉘 형식으로 명령을 실행할 때 기본 쉘 설정 | ||
| + | |||
| + | <alert type=" | ||
| ==== 파일 설정 ==== | ==== 파일 설정 ==== | ||
| === 파일 및 디렉토리 추가(ADD 명령) === | === 파일 및 디렉토리 추가(ADD 명령) === | ||
| + | * 이미지에 호스트 상의 파일이나 디렉토리를 추가할 때 사용 | ||
| - | === 파일 | + | <alert type=" |
| + | <alert type=" | ||
| - | === 볼룸 마운트(VOLUME 명령) === | + | * 빌드에 불필요한 파일 제외; .dockerignore 파일 작성 |
| + | === 파일 복사(COPY 명령) === | ||
| + | * 이미지에 호스트 상의 파일이나 디렉토리를 복사할 때 사용 | ||
| - | ---- | + | <alert type=" |
| - | ===== Docker 이미지 | + | <alert type=" |
| - | ==== Docker 이미지의 | + | * Dockerfile의 저장 위치; 빌드에 필요 없는 파일은 Dockerfile과 똑같은 디렉토리에 두지 않도록 주의 |
| - | === Automated Build의 흐름 | + | === 볼룸 마운트(VOLUME 명령) |
| + | * 이미지에 볼륨을 할당 | ||
| - | === GitHub에 공개하기 === | + | <alert type=" |
| - | === Docker Hub의 링크 설정 === | ||
| - | === Dockerfile의 빌드 === | ||
| - | === Docker 이미지 | + | ---- |
| + | ===== Docker 이미지 | ||
| - | ==== Docker | + | ==== Docker 이미지의 자동 생성 및 공개 |
| - | === 로컬 환경에 Docker | + | * Automated Build의 흐름; Docker Hub에는 버전 관리 툴인 GitHub 및 Bitbucket과 연결하여 Dockerfile로부터 |
| + | - GitHub에 공개하기 | ||
| + | - Docker Hub의 링크 설정 | ||
| + | - Dockerfile의 빌드 | ||
| + | - Docker 이미지 확인 | ||
| - | === Docker 이미지 업로드 | + | ==== Docker |
| - | === Docker 이미지의 다운로드와 작동 확인 | + | - 로컬 환경에 Docker 레지스트리 구축하기; |
| + | - Docker 이미지 업로드 | ||
| + | - Docker 이미지의 다운로드와 작동 확인 | ||
| ==== 클라우드 서비스를 사용한 프라이빗 레지스트리 구축 ==== | ==== 클라우드 서비스를 사용한 프라이빗 레지스트리 구축 ==== | ||
| - | === Google Container Registry 준비하기 | + | * GCP(Google Cloud Platform)은 Docker 이미지를 프라이빗으로 관리할 수 있는 ' |
| - | + | - Google Container Registry 준비하기 | |
| - | === Docker 이미지의 업로드 | + | |
| - | + | | |
| - | === Docker 이미지의 다운로드와 작동 확인 | + | |
| Line 1041: | Line 1499: | ||
| ---- | ---- | ||
| ===== 여러 컨테이너의 운용 관리 ===== | ===== 여러 컨테이너의 운용 관리 ===== | ||
| + | > Docker에서 움직이는 웹 애플리케이션을 제품 환경에서 운용할 때는 애플리케이션 서버, 로그 서버, 프록시 서버 등과 같이 여러 개의 컨테이너들을 연계하여 작동 | ||
| ==== 여러 컨테이너 관리의 개요 ==== | ==== 여러 컨테이너 관리의 개요 ==== | ||
| === 웹 3계층 시스템 아키텍처 === | === 웹 3계층 시스템 아키텍처 === | ||
| + | * 프론트 서버; 웹 프론트 서버 혹은 웹 서버, Nginx, Microsoft의 IIS(Internet Information Services) 등. | ||
| + | * 애플리케이션 서버; 결제 처리, 수주 처리 등 애플리케이션의 처리를 실행하는 프로그램의 실행 환경 | ||
| + | * 데이터베이스(DB) 서버; | ||
| + | * RDBMS(Relational Database Management System) -> MySQL, PostgreSQL, Oracle Database 등. | ||
| + | * NoSQL -> KVS(Key-Value Store), 도큐먼트 지향 데이터 베이스(도큐먼트 데이터베이스) 등. | ||
| + | |||
| === 영구 데이터의 관리 === | === 영구 데이터의 관리 === | ||
| + | * 데이터의 백업 및 복원 | ||
| + | * 로그 수집 | ||
| === Docker Compose === | === Docker Compose === | ||
| + | * 여러 컨테이너를 모아서 관리하기 위한 툴 | ||
| + | * docker-compose.yml; | ||
| ==== 웹 애플리케이션을 로컬에서 움직여 보자 ==== | ==== 웹 애플리케이션을 로컬에서 움직여 보자 ==== | ||
| - | === Compose 구성 파일의 작성 | + | - Compose 구성 파일의 작성; 소스 파일 확인 -> 구성 정의 |
| + | - 여러 Docker 컨테이너 시작; $ docker-compose up | ||
| + | - docker-compose ps | ||
| + | - 여러 Docker 컨테이너 정지; $ docker-compose stop | ||
| + | - docker-compose down; 리소스 삭제 | ||
| - | === 여러 | + | ==== Docker Compose를 사용한 |
| + | > ' | ||
| - | === 여러 Docker 컨테이너 정지 === | + | * YAML |
| - | ==== Docker Compose를 사용한 여러 컨테이너의 구성 관리 ==== | ||
| === docker-compose.yml의 개요 === | === docker-compose.yml의 개요 === | ||
| + | * 버전 | ||
| + | <cli> | ||
| + | version: 3.3 | ||
| + | </ | ||
| - | === 이미지 지정(image) === | + | ^ Compose |
| + | ^ Compose 정의 파일의 버전 | ||
| + | | 3.3 | 17.06.0 | ||
| + | | 3.2 | 17.04.0 | ||
| + | | 3.1 | 1.13.1 | ||
| + | | 3.0 | 1.13.0 | ||
| + | | 2.3 | 17.06.0 | ||
| + | | 2.2 | 1.130.0 | ||
| + | | 2.1 | 1.12.0 | ||
| + | | 2.0 | 1.10.0 | ||
| + | | 1.0 | 1.9.1 | | ||
| - | === 이미지 빌드(build) === | + | <cli yml> |
| + | # 버전을 | ||
| + | version: " | ||
| - | === 컨테이너 안에서 작동하는 명령 지정(command/ | + | # 서비스 |
| + | services: | ||
| + | webserver: | ||
| + | image: ubuntu | ||
| + | ports: | ||
| + | - " | ||
| + | networks: | ||
| + | - webnet | ||
| - | === 컨테이너 간 연결(links) === | + | redis: |
| + | image: redis | ||
| + | networks: | ||
| + | - webnet | ||
| - | === 컨테이너 간 통신(ports/ | + | # 네트워크 |
| - | + | networks: | |
| - | === 서비스의 의존관계 | + | |
| - | + | ||
| - | === 컨테이너 환경변수 지정(environment/ | + | #데이터 볼륨 |
| - | + | volumes: | |
| - | === 컨테이너 정보 설정(container_name/labels) === | + | |
| + | </cli> | ||
| - | === 컨테이너 데이터 관리(volumes/ | + | - 이미지 지정(image) |
| + | - 이미지 빌드(build) === | ||
| + | - 컨테이너 안에서 작동하는 명령 지정(command/ | ||
| + | - 컨테이너 간 연결(links) === | ||
| + | - 컨테이너 간 통신(ports/ | ||
| + | - 서비스의 의존관계 정의(depends_on) === | ||
| + | - 컨테이너 환경변수 지정(environment/ | ||
| + | - 컨테이너 정보 설정(container_name/ | ||
| + | - 컨테이너 데이터 관리(volumes/ | ||
| ==== Docker Compose를 사용한 여러 컨테이너의 운용 ==== | ==== Docker Compose를 사용한 여러 컨테이너의 운용 ==== | ||
| === Docker Compose의 버전 확인 === | === Docker Compose의 버전 확인 === | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-compose --version | ||
| + | </ | ||
| === Docker COmpose의 기본 명령 === | === Docker COmpose의 기본 명령 === | ||
| + | |||
| + | ^ Docker Compose의 주요 서브 명령 | ||
| + | ^ 서브 명령 | ||
| + | | up | 컨테이너 생성/ | ||
| + | | ps | 컨테이너 목록 표시 | ||
| + | | logs | 컨테이너 로그 출력 | ||
| + | | run | 컨테이너 실행 | ||
| + | | start | 컨테이너 시작 | ||
| + | | stop | 컨테이너 정지 | ||
| + | | restart | ||
| + | | pause | 컨테이너 일시 정지 | ||
| + | | unpause | ||
| + | | port | 공개 포트 번호 표시 | ||
| + | | config | ||
| + | | kill | 실행 중인 컨테이너 강제 정지 | ||
| + | | rm | 컨테이너 삭제 | ||
| + | | down | 리소스 삭제 | ||
| + | |||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-compose -f ./ | ||
| + | $ docker-compose stop webserver | ||
| + | </ | ||
| + | |||
| === 여러 컨테이너의 생성(up) === | === 여러 컨테이너의 생성(up) === | ||
| + | < | ||
| + | <col sm=" | ||
| + | <panel type=" | ||
| + | < | ||
| + | <alert type=" | ||
| + | |||
| + | ^ 지정할 수 있는 주요 옵션 | ||
| + | ^ 옵션 | ||
| + | | -d | 백그라운드에서 실행한다. | ||
| + | | --no-depos | ||
| + | | --build | ||
| + | | --no-build | ||
| + | | -t, --timeout | ||
| + | | --scale SERVICE=서비스 수 | 서비스 수를 지정한다. | ||
| + | |||
| + | </ | ||
| + | <alert type=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| === 여러 컨테이너 확인(ps/ | === 여러 컨테이너 확인(ps/ | ||
| + | <cli prompt=" | ||
| + | $ docker-compose ps # 여러 컨테이너의 상태 확인 | ||
| + | $ docker-compose -q # 컨테이너 ID 확인 | ||
| + | $ docker-compose logs # docker 령령을 사용한 로그 확인 | ||
| + | </ | ||
| === 컨테이너에서 명령 실행(run) === | === 컨테이너에서 명령 실행(run) === | ||
| + | <cli prompt=" | ||
| + | $ docker-compose run server_a /bin/bash | ||
| + | </ | ||
| === 여러 컨테이너 시작/ | === 여러 컨테이너 시작/ | ||
| + | * 컨테이너 일관 시작/ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-compose start | ||
| + | $ docker-compose stop | ||
| + | $ docker-compose restart | ||
| + | </ | ||
| + | |||
| + | * 특정 컨테이너 재시작 | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-compose restart server_a | ||
| + | </ | ||
| === 여러 컨테이너 일시 정시/ | === 여러 컨테이너 일시 정시/ | ||
| + | <cli prompt=" | ||
| + | $ docker-compose pause # 컨테이너 일시 정지 | ||
| + | $ docker-compose unpause | ||
| + | </ | ||
| === 서비스의 구성 확인(port/ | === 서비스의 구성 확인(port/ | ||
| + | |||
| + | <alert type=" | ||
| + | |||
| + | ^ 지정할 수 있는 주요 옵션 | ||
| + | ^ 옵션 | ||
| + | | --protocol=proto | ||
| + | | --index=index | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-compose port webserver 80 # 공개 포트 확인 | ||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-compose config | ||
| + | </ | ||
| + | |||
| === 여러 컨테이너 강제 정지/ | === 여러 컨테이너 강제 정지/ | ||
| + | <cli prompt=" | ||
| + | $ docker-compose kill -s SIGINT | ||
| + | </ | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-compose rm # 여러 컨테이너 일괄 삭제 | ||
| + | </ | ||
| + | |||
| + | * Linux의 시그널; POSIX.1-1990 규격 | ||
| + | |||
| + | ^ Docker Compose의 주요 서브 명령 | ||
| + | ^ 시그널 | ||
| + | | SIGHUP | ||
| + | | SIGINT | ||
| + | | SIGQUIT | ||
| + | | SIGTERM | ||
| + | | SIGKILL | ||
| + | | SIGSTOP | ||
| === 여러 리소스의 일괄 삭제(down) === | === 여러 리소스의 일괄 삭제(down) === | ||
| + | |||
| + | <alert type=" | ||
| + | |||
| + | ^ 지정할 수 있는 주요 옵션 | ||
| + | ^ 옵션 | ||
| + | | --rmi all | 모든 이미지를 삭제 | ||
| + | | --rmi local | 커스텀 태그가 없는 이미지만 삭제 | ||
| + | | -v, --volumes | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-compose down --rmi all # 여러 이미지 삭제 | ||
| + | </ | ||
| Line 1106: | Line 1732: | ||
| ---- | ---- | ||
| ===== 멀티호스트 환경에서 Docker 실행 환경 구축 ===== | ===== 멀티호스트 환경에서 Docker 실행 환경 구축 ===== | ||
| - | |||
| ==== 멀티호스트 환경에서 컨테이너 관리의 개요 ==== | ==== 멀티호스트 환경에서 컨테이너 관리의 개요 ==== | ||
| === 멀티호스트 환경과 클러스터링 === | === 멀티호스트 환경과 클러스터링 === | ||
| + | * 클러스터링; | ||
| + | * 가용성(Availability); | ||
| + | * 확장성(Scalability); | ||
| + | |||
| === Docker Machine이란? | === Docker Machine이란? | ||
| + | * 호스트 머신/ | ||
| + | * https:// | ||
| - | ==== 웹 애플리케이션을 서비스 공개해 보자 ==== | ||
| - | === Docker 실행 환경 작성 === | + | ==== 웹 애플리케이션을 서비스 공개해 보자 ==== |
| - | + | ||
| - | === 웹 애플리케이션 | + | |
| - | === Docker 실행 환경 삭제 | + | - Docker 실행 환경 작성 |
| + | - 웹 애플리케이션 전개 | ||
| + | - Docker 실행 환경 삭제 | ||
| ==== Docker Machine을 사용한 실행 환경 구축 ==== | ==== Docker Machine을 사용한 실행 환경 구축 ==== | ||
| === Docker Machine의 기본 명령 === | === Docker Machine의 기본 명령 === | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-machine --version | ||
| + | </ | ||
| + | |||
| + | ^ Docker Machine의 서브 명령 | ||
| + | ^ 서브 명령 | ||
| + | | create | ||
| + | | ls | 실행 환경 목록 표시 | ||
| + | | status | ||
| + | | url | 실행 환경 URL 표시 | ||
| + | | ssh | 실행 환경에 대한 SSH 연결 | ||
| + | | start | 실행 환경 시작 | ||
| + | | stop | 실행 환경 정지 | ||
| + | | restart | ||
| + | | scp | 실행 환경에서 파일 다운로드 | ||
| + | | rm | 실행 환경 삭제 | ||
| + | | kill | 실행 환경 강제 정지 | ||
| + | | ip | 실행 환경 IP 주소 확인 | ||
| + | | inspect | ||
| + | |||
| === 실행 환경 작성(create) === | === 실행 환경 작성(create) === | ||
| + | <alert type=" | ||
| + | |||
| + | * Docker Machine에서 이용할 수 있는 드라이버 목록; https:// | ||
| + | |||
| === 실행 환경 목록 표시(ls/ | === 실행 환경 목록 표시(ls/ | ||
| + | <alert type=" | ||
| + | |||
| + | ^ 지정할 수 있는 주요 옵션 | ||
| + | ^ 옵션 | ||
| + | | --quite, -q | 머신명만 표시한다 | ||
| + | | --filter | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-machine status host1 # 실행 환경의 스테이터스 확인 | ||
| + | $ docker-machine url host1 # 실행 환경의 URL 확인 | ||
| + | </ | ||
| === 실행 환경에 대한 SSH 연결(ssh) === | === 실행 환경에 대한 SSH 연결(ssh) === | ||
| + | <alert type=" | ||
| + | |||
| + | <cli prompt=" | ||
| + | $ docker-machine ssh host1 | ||
| + | </ | ||
| + | |||
| === 실행 환경 시작/ | === 실행 환경 시작/ | ||
| + | <cli prompt=" | ||
| + | $ docker-machine start host1 # 실행 환경 시작 | ||
| + | $ docker-machine stop host1 # 실행 환경 정지 | ||
| + | $ docker-machine restart host1 # 실행 환경 재시작 | ||
| + | </ | ||
| === 실행 환경으로부터 파일 다운로드(scp) === | === 실행 환경으로부터 파일 다운로드(scp) === | ||
| + | <cli prompt=" | ||
| + | $ docker-machine scp host1:/ | ||
| + | </ | ||
| + | |||
| + | * SCP(Secure Copy Protocol); SSH의 기능을 사용하여 파일을 전송하기 위한 명령 Secure Copy Protocol로 인증 정보와 데이터를 암호화하여 네트워크로 전송 | ||
| === 실행 환경 삭제(rm/ | === 실행 환경 삭제(rm/ | ||
| + | <cli prompt=" | ||
| + | $ docker-machine rm -f host1 # 실행 환경 삭제 | ||
| + | $ docker-machine kill host1 # 실행 환경 강제 정지 | ||
| + | </ | ||
| === 실행 환경 정보 확인(ip/ | === 실행 환경 정보 확인(ip/ | ||
| + | <cli prompt=" | ||
| + | $ docker-machine ip host1 # IP 주소 확인 | ||
| + | </ | ||
| + | <alert type=" | ||
| Line 1145: | Line 1835: | ||
| ---- | ---- | ||
| ===== 클라우드를 사용한 Docker 실행 환경 구축 ===== | ===== 클라우드를 사용한 Docker 실행 환경 구축 ===== | ||
| + | > GKE(Google Kubernetes Engine) | ||
| ==== 클라우드 환경에서 Docker 오케스트레이션하기 ==== | ==== 클라우드 환경에서 Docker 오케스트레이션하기 ==== | ||
| === 분산 환경에서의 컨테이너 운용 관리 === | === 분산 환경에서의 컨테이너 운용 관리 === | ||
| + | * Kubernetes | ||
| + | * Docker Enging(Swarm 모드) | ||
| + | * Apache Mesos, Marathon | ||
| + | |||
| === 퍼블릭 클라우드가 제공하는 매니지드 서비스 === | === 퍼블릭 클라우드가 제공하는 매니지드 서비스 === | ||
| + | * Amazon EC2 Container Service | ||
| + | * Azure Container Service(AKS) | ||
| + | * Google Kubernetes Engine(GKE) | ||
| + | |||
| === Google Cloud Platform의 컨테이너 관련 서비스 === | === Google Cloud Platform의 컨테이너 관련 서비스 === | ||
| + | * Google Container Builder | ||
| + | * Google Kubernetes Enging | ||
| + | * Google Container Registry | ||
| + | |||
| ==== Kubernetes의 개요 ==== | ==== Kubernetes의 개요 ==== | ||
| + | * 여러 서버들에서의 컨테이너 관리 | ||
| + | * 컨테이너 간 네트워크 관리 | ||
| + | * 컨테이너의 부하분산 | ||
| + | * 컨테이너의 감시 | ||
| + | * 무정지로 업데이트 | ||
| === Kubernetes의 서버 구성 === | === Kubernetes의 서버 구성 === | ||
| + | * 마스터 서버(Kubernetes Master) | ||
| + | * 백엔드 데이터베이서(etcd) | ||
| + | * 노드(Node) | ||
| + | |||
| === 애플리케이션 구성 관리(Pod, ReplicaSet, Deployment) === | === 애플리케이션 구성 관리(Pod, ReplicaSet, Deployment) === | ||
| + | * Pod(포드) | ||
| + | * ReplicaSet(리플리카 셋) | ||
| + | * Deployment(디플로이먼트, | ||
| === 네트워크 관리(Service) === | === 네트워크 관리(Service) === | ||
| Line 1165: | Line 1880: | ||
| === Kubernetes의 구조 === | === Kubernetes의 구조 === | ||
| + | * 마스터(Master); | ||
| + | * 데이터 스토어(etcd) | ||
| + | * 노드(Node); | ||
| ==== GCP를 사용한 Docker 애플리케이션 개발 ==== | ==== GCP를 사용한 Docker 애플리케이션 개발 ==== | ||
| Line 1173: | Line 1891: | ||
| === Docker 이미지 빌드(Cloud Container Builder) === | === Docker 이미지 빌드(Cloud Container Builder) === | ||
| + | * API 유효화하기 | ||
| + | * Google Kubernetes Engine API | ||
| + | * Google Container Registry API | ||
| + | * Google Cloud Build API | ||
| + | * Docker 이미지 빌드 파일; 빌드 스텝 -> 이미지 -> | ||
| ==== GCP를 사용한 Docker 애플리케이션 실행 환경 구축 ==== | ==== GCP를 사용한 Docker 애플리케이션 실행 환경 구축 ==== | ||
| Line 1198: | Line 1921: | ||
| === 가용성 관리 === | === 가용성 관리 === | ||
| + | * 콜드 스탠바이 방식; 스탠바이 기기는 장애가 발생하면 액티브 기기와 교체 | ||
| + | * 핫 스탠바이 방식; 액티브 기기에서 장애가 발생하면 자동으로 스탠바이 기기로 교체 | ||
| + | * 헬스 체크 | ||
| + | * ICMP 감시(레이어 3); Ping 등의 응답을 확인 | ||
| + | * 포트 감시(레이어 4); 웹서비스의 경우는 80번 포트로부터 응답이 있는지 확인 | ||
| + | * 서비스 감시(레이어 7); HTTP 통신을 확인하는 경우 특정 페이지가 올바르게 표시되는지를 확인 | ||
| + | * 로드 밸런싱(load balancing) | ||
| + | |||
| + | |||
| + | * Disaster Recovery System | ||
| + | * RTO(Recovery Time Objective); 서비스를 복구할 때까지 필요한 경과 시간 | ||
| + | * RPO(Recovery Point Objective); 재해 등으로 시스템이 정지되었을 때 어떤 시점까지 거슬러 올라가서 데이터를 복구시킬지에 대한 지표 | ||
| === 수용성(Capacity) 관리 === | === 수용성(Capacity) 관리 === | ||
| === 시스템 감시 === | === 시스템 감시 === | ||
| + | * 머신의 활동 감시 | ||
| + | * 서비스의 가동 감시 | ||
| + | * 서버/ | ||
| + | * 잡 감시 | ||
| + | * 장애 대응 | ||
| ==== GKE를 사용한 Docker 실행 환경의 운용 ==== | ==== GKE를 사용한 Docker 실행 환경의 운용 ==== | ||
| === Kubernetes의 스테이터스 확인 === | === Kubernetes의 스테이터스 확인 === | ||
| + | * 클러스터의 상태 확인 | ||
| + | * 노드의 스테이터스 확인 | ||
| + | * Pod의 상태 확인 | ||
| + | * 서비스 확인 | ||
| === Kubernetes의 Pod 관리 === | === Kubernetes의 Pod 관리 === | ||
| Line 1212: | Line 1956: | ||
| === Kubernetes의 리소스 작성/ | === Kubernetes의 리소스 작성/ | ||
| + | * 리소스 작성 | ||
| + | * 리소스 삭제 | ||
| + | * 리소스 변경 | ||
| === Kubernetes의 업그레이드/ | === Kubernetes의 업그레이드/ | ||
| Line 1302: | Line 2049: | ||
| ===== Google Cloud Platform 사용법 ===== | ===== Google Cloud Platform 사용법 ===== | ||
| ==== A.1 계정 등록 ==== | ==== A.1 계정 등록 ==== | ||
| + | * Google 계정, 신용카드 또는 은행 계좌 | ||
| + | |||
| + | - 등록 시작 | ||
| + | - 계정 정보 등록 | ||
| - | [1] 등록 시작 | ||
| - | [2] 계정 정보 등록 | ||
| ==== A.2 프로젝트 작성과 삭제 ==== | ==== A.2 프로젝트 작성과 삭제 ==== | ||
| - | [1] 프로젝트 작성 | + | - 프로젝트 작성 |
| - | [2] 프로젝트명 설정 | + | |
| - | [3] 프로젝트 삭제 | + | |
| ==== A.3 Cloud Console 사용법 ==== | ==== A.3 Cloud Console 사용법 ==== | ||
| - | 툴과 서비스 | + | * 툴과 서비스 |
| - | 대시보드 | + | |
| ==== A.4 Cloud Shell 사용법 ==== | ==== A.4 Cloud Shell 사용법 ==== | ||