ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker] 2 설치.컨테이너 실행
    CLOUD/Docker 2021. 2. 23. 17:28
    반응형

    링크 : https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

     

    초보를 위한 도커 안내서 - 도커란 무엇인가?

    도커를 처음 접하는 시스템 관리자나 서버 개발자를 대상으로 도커 전반에 대해 얕고 넓은 지식을 담고 있습니다. 도커가 등장한 배경과 도커의 역사, 그리고 도커의 핵심 개념인 컨테이너와 이

    subicura.com

    1.도커 설치

    $curl -fsSL https://get.docker.com/ | sudo sh

    root권한 요구 후에 자동으로 설치되는 스크립트

    도커 실행 : kernel 버전 3.10.x 이상 ( ubuntu 14.04이상)

    Mac or Windows : docker for mac, windows설치하면 됨

     

    2. 설치 확인

    $ docker version

    → Client, Server정보 정상 출력되었다면 설치가 완료된 것.

    → 도커 커맨드를 입력하면 도커 클라이언트가 도커 서버로 명령을 전송하고 결과를 터미널에 출력해주는 형태

     

    3. 컨테이너 실행

    • 도커 실행 명령어

    $ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

     

    다음은 자주 사용하는 옵션들입니다.

    옵션설명

    -d detached mode 흔히 말하는 백그라운드 모드
    -p 호스트와 컨테이너의 포트를 연결 (포워딩)
    -v 호스트와 컨테이너의 디렉토리를 연결 (마운트)
    -e 컨테이너 내에서 사용할 환경변수 설정
    –name 컨테이너 이름 설정
    –rm 프로세스 종료시 컨테이너 자동 제거
    -it -i와 -t를 동시에 사용한 것으로 터미널 입력(키보드 사용)을 위한 옵션
    –link 컨테이너 연결 [컨테이너명:별칭]

     

    4. ubuntu 16.04 container

    • 컨테이너 생성

    $ docker run ubuntu:16.04

    (image pull→ container create→ start)

    → 이 커맨드는 명령어가 없어 실행중인 프로세스가 없기 때문에 컨테이너가 생성되자마자 종료됨

     

    • 명령어와 함께 컨테이너 실행

    $ docker run --rm -it ubuntu:16.04 /bin/bash

    bash 쉘에 들어가 cat, ls, exit등 입력

     

    5. redis container

    • redis 

    : 메모리 기반의 다양한 기능을 가진 스토리지

    : 6379포트. telnet 명령어로 테스트 

    :-p를 이용해 호스트의 1234포트를 컨테이너의 6379포트로 연결했고 localhost의 1234포트로 접속해 redis사용


    ~ docker run -d -p 1234:6379 redis
    # redis test ~ telnet localhost 1234 > set mykey hello +OK > get mykey $5 hello

     

    6. MYSQL 5.7 container

    : MYSQL_ALLOW_EMPTY_PASSWORD - 패스워드 없이 root계정 만들기 위함

    docker run -d -p 3306:3306 \ -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ --name mysql \ mysql:5.7 # mysql test $ mysql -h127.0.0.1 -uroot mysql> show database; mysql > quit

     

    7. 도커 기본 명령어

    • ps : 컨테이너 목록 확인

    $ docker ps [OPTIONS]

    기본 : 실행중인 컨테이너

    -a ( --all) 옵션 : 종료된 컨테이너도 보임

    • stop : 컨테이너 중지

    $ docker stop [OPTIONS] CONTAINER [CONTAINER...]

    컨테이너 아이디 입력하면 되는데 안겹치면 앞에글자만 입력해도됨.

    • rm  : 컨테이너 제거

    $ docker rm [OPTIONS] CONTAINER [CONTAINER...]

    *중지된 컨테이너 한번에 삭제 → $docker rm -v $(docker ps -a -q -f status=exited)

    • images: 이미지 목록 확인

    $ docker images [OPTIONS] [REPOSITORY[:TAG]]

    사용하지 않는 이미지는 지우는것이 좋음

    • pull : 이미지 다운로드

    $ docker pull [OPTIONS] NAME[:TAG|@DIGEST]

    run하면 이미지 없을때 pull로 다운 받음. pull을 또하면 최신버전으로 받음

    • rmi : 이미지 삭제

    $ docker rmi [OPTIONS] IMAGE [IMAGE...]

    실행중인 이미지는 삭제되지 않음.

    이미지-여러개의 레이어로 구성되어 있으므로 레이어가 모두 삭제됨

     

    8. 컨테이너 둘러보기

    • 컨테이너 로그 보기 (logs)

    컨테이너가 정상적으로 동작하는지 확인할 수 있음

    $ docker logs [OPTIONS] CONTAINER(${container_id})

    --tail 옵션 : 마지막 10줄만 출력

    -f 옵션 : 실시간으로 생성되는 로그 출력 ( ctrlc 종료)

    주의 : 로그파일은 표준스트림으로 수집하며 json방식으로 어딘가에 저장되기때문에 용량 차지 생각해야함

     

    • 컨테이너 명령어 실행하기(exec)

    $ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

    run : 새로 컨테이너를 만들어 실행

    exec : 실행중인 컨테이너에 명렁을 내리는 것  

     

    9. 컨테이너 업데이트

    • 도커에서 컨테이너 업데이트 과정 

    새 버전 이미지 다운(pull) - 기존 컨테이너 삭제(stop, rm) - 새 이미지 기반 컨테이너 실행 (run)

    삭제시 그동안 쌓아온 이미지 사라짐을 방지하기 위해서 데이터는 컨테이너 외부 스토리지 저장이 필수!  AWS S3나 데이터볼륨

     

    -v  옵션을 사용해 디렉토리 연결

    # before docker run -d -p 3306:3306 \ -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ --name mysql \ mysql:5.7 # after docker run -d -p 3306:3306 \ -e MYSQL_ALLOW_EMPTY_PASSWORD=true \ --name mysql \ -v /my/own/datadir:/var/lib/mysql \ # <- volume mount mysql:5.7

    디비 파일은 호스트의 /my/own/datadir에 저장되고 컨테이너를 삭제해도 사라지지 않음.

     

    + 추가 Docker Compose

    .yml로 작성해 한번에 설정할 수 있는기능 알아보기

     

    'CLOUD > Docker' 카테고리의 다른 글

    [Docker] Dockerfile  (0) 2021.08.10
    [docker] 명령어  (0) 2021.07.19
    [Docker] 3. 이미지만들고 배포  (0) 2021.02.23
    도커란 무엇인가  (0) 2021.02.23

    댓글

Designed by Tistory.