• docker 컨테이너 기본 실행 방법
    • docker run -d -p 8080:80 nginx
      • d는 백그라운드 실행
      • -p를 통해 포트 지정하고, 외부포트:내부포트로 실행
      • 특정 버전의 nginx를 실행하고 싶다면 nginx:버전명. 버전제외시 최신버전
    • 실행중인 컨테이너 목록 조회
      • docker ps
      • 종료된 컨테이너 포함시 docker ps -a
  • 주요 서비스 도커 실행
    • mariadb 컨테이너 실행
      • docker run --name board_mariadb -e MYSQL_ROOT_PASSWORD=test1234 -d -p 3306:3306 mariadb:latest
        • --name옵션은 컨테이너명 지정, -e는 컨테이너 환경변수 옵션으로 mariadb의 root 비밀번호 지정
        • 마지막의 mariadb:lastest의 경우 만약에 로컬에 이미지가 없다면 dockerhub에서 pull(latest가 안붙어 있다면 알아서 latest를 pull)
    • redis 도커 실행
      • docker run --name myredis -d -p 6379:6379 redis
  • docker 주요 명령어
    • 도커 컨테이너 실행

      • docker run -d -p 8080:8080 이미지명:태그명
    • 도커 포트 매핑

      • 예시) 8080:80

      • 호스트(컨테이너를 실행하는 시스템)의 포트와 컨테이너 내부의 포트 사이의 연결을 정의

      • 이를 통해 외부에서 컨테이너 내부의 애플리케이션에 접근

      • 포트매핑이 없다면 외부에서 접근불가

        Untitled

    • 도커 이미지 관련

      • 이미지 pull
        • ex)docker pull nginx
      • 로컬 컴퓨터에 만들어진 도커 image 목록 조회 명령어
        • docker images
      • image 삭제 명령어
        • docker rmi 이미지ID
      • image 직접 빌드
        • 도커파일이라는 스크립트를 통해 이미지 build
        • ex)docker build -t 이미지명:[태그명] -f <도커스크립트파일경로> <빌드컨텍스트위치>
          • 빌드컨텍스트란 Docker 이미지를 빌드할 때 Docker가 참조할 수 있는 모든 파일과 디렉터리의 위치를 의미
          • 현재 위치에 대상 파일이 있다면 “빌드컨텍스트위치”에 “.” 으로 사용 가능
          • 만약 도커파일명이 Dockerfile이 아닌 DockerfileDev 등 변형된 경우엔 -f 사용필요하나, 파일명이 Dockerfile이고 현재위치이면 -f 옵션 생략가능
          • ex)docker build -t demospring:v1.0 .
    • docker stop 컨테이너ID

      • 도커 컨테이너 중지
    • docker start 컨테이너ID

      • 중지된 도커 컨테이너 실행
    • docker rm 컨테이너ID

      • 컨테이너가 stop된 상태에서만 삭제 가능
      • docker rm -f 컨테이너ID : 실행중인 컨테이너도 강제 삭제.
      • docker rm -f $(docker ps -a -q)
        • q는 컨테이너ID만 조회
    • docker 내부 서비스 실행명령어 exec

      • docker exec -it 컨테이너ID /bin/sh(or /bin/bash)
        • -i옵션은 -interactive의 약어로서 c언어의 stdin(입력)을 open하라는 의미
        • -t옵션은 터미널의 약어로 가상콘솔을 의미.
        • 결론적으로 위의 -it옵션은 실행중인 컨테이너의 /bin/sh 즉 셸프로그램을 가상콘솔로 입력을 전달하여 사용한다는 의미. 즉, 실행중인 컨테이너를 콘솔모드로 접속
        • 참고로, /bin/sh은 유닉스의 오리지널 셸이고 /bin/bash는 현재 리눅스의 표준 셸. 도커의 alpine리눅스는 /bin/sh사용
      • exec를 통한 컨테이너 내 프로그램 직접 접속
        • docker exec -it 컨테이너ID mariadb -u root -p
        • docker exec -it 컨테이너ID redis-cli
          • 또는 docker exec -it 컨테이너ID /bin/sh(또는bash) 로 접속 후 redis-cli
    • docker logs 컨테이너ID

      • 컨테이너의 로그 정보 출력
      • 해당 컨테이너의 최근 20줄 로그 출력
        • docker logs --tail 20 컨테이너ID
      • 실시간 로그 출력
        • docker logs -f 컨테이너ID