Post

Linux 도커(3)

Linux 도커(3)

도커

도커 컨테이너 관리

  1. 도커 컨테이너 생성
    • docker create nginx
    • docker create –name web -p 80:80 nginx
  2. 도커 컨테이너 생성 및 시작
    • man docker run
    • docker run -d –name web 80:80 web
      • OPTIONS
        • -it, –rm: 임시 생성(빠져나가면 자동 삭제), -d: 백그라운드

컨테이너 안의 프로세스는 반드시 foreground로 실행되어야 한다.

컨테이너는 일반적으로 백그라운드로 실행한다.

  1. 도커 컨테이너 시작/중지/재기동
    • docker start 컨테이너_이름
    • docker stop 컨테이너_이름
    • docker restart 컨테이너_이름
  2. 도커 컨테이너 연결/해제
    • docker attach CONTAINER
    • “<CTRL + P + Q>
  3. 도커 컨테이너 프로세스 실행하기
    • docker exec -it CONTAINER /bin/bash
    • exit
  4. 컨테이너 프로세스 확인
    • docker top CONTAINER > ps -ef
    • docker top CONTAINER aux > ps aux

[참고] docker attack vs docker exec

docker attachdocker exec
docker attach myosdocker attach -it myos /bin/bash
그냥 들어가기쉘이 있어야 들어가기

[참고] 포트번호 확인

  • Linux: netstat -antupgrep 80
  • Windows: netstat -anofindstr 80

[참고] 대표 DB 포트 번호

서비스 이름포트 번호
MySQL/MariaDB3306
  1. 도커 컨테이너 이름 변경
    • docker rename OLD NEW
    • docker tag OLD NEW
  2. 도커 컨테이너 파일 전송
    • (HostOS -> Container) # docker cp index.html myweb:/usr/share/nginx/html/index.html
    • (Container -> HostOS) # docker cp myweb:/etc/nginx/nginx.conf /tmp/nginx.conf
  3. 도커 컨테이너 로그 확인
    • docker logs CONTAINER
      • /var/lib/doker/container/<CONTAINER’s ID>-json.log

도커 볼륨 관리

  1. 도커 볼륨
    • 도커 볼륨이란 영구 볼륨 사용
    • 도커 볼륨 종류
      • volume
      • bind mount
  2. 도커 볼륨 관리
    • 도커 볼륨 생성
      • docker volume create myvol
    • 도커 볼륨 사용

      • volume 방식
        • docker run -d –name myweb -p 80:80 -v /usr/share/nginx/html nginx
        • docker run -d –name myweb -p 80:80 -v vol:/usr/share/nginx/html nginx
          • 생성이 안되어있는 볼륨의 경우 생성을 따로 해줌
        • docker run -d –name myweb -p 80:80 -v myvol:/usr/share/nginx/html nginx
          • 생성이 되어있는 볼륨 사용
      • bind mount 방식
        • docker run -d –name myweb -p 80:80 -v /www:/usr/share/nginx/html nginx
        • docker run -d –name myweb -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
    • 도커 볼륨 확인
      • docker volume ls
      • docker volume inspect myvol
    • 도커 볼륨 삭제
      • docker volume rm myvol

일반 환경 vs 컨테이너 mysql |온프레미스 mysql|컨테이너 mysql| |—————|————-| |yum -y install mysql-server mysql
systemctl enable –now mysql
mysql_secure_installlation
mysql -u root -p| docker run -d –name db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.7|

  1. 도커 이미지 & 도커 컨테이너 레이어 분석
    • 도커 이미지 & 도커 이미지 레이어(Layer)
    • var/lib/docker/overlay2
      • docker image inspect ngix
      • lowerdir > image layer
      • upperdir > container layer
      • mergedir > container mount
      • workdir > 작업 폴더

도커 컨테이너 도커 컨테이너 레이어

도커 네트워크

  • 도커 네트워크
    • bridge
    • host
    • none
    • user-defined network (mynet)
  • 드라이버

bridge ⇒ docker0 (== VMnet 8)

host → (== VMent0)

null

bridge ⇒ br-# (==VMent)

도커 네트워크 관리

  1. 도커 네트워크 생성

    1
    2
    
     # docker network create mynet
     # docker network create -d bridge mynet
    
  2. 도커 네트워크 사용

    1
    2
    3
    4
    5
    6
    7
    8
    
     # docker run -d --name web -p 80:80 --network mynet nginx
     # docker run -d --name web -p 80:80 \
       --network mynet \
       --hostname www.test.com \
       --ip 172.18.0.10 \
       --dns 8.8.8.8 \
       --add-host www.example.com:172.18.0.20 \
       nginx
    
  3. 도커 네트워크 확인

    1
    2
    
     # docker network ls
     # docker network inspect mynet
    
  4. 도커 네트워크 삭제

    1
    2
    
     # docker network rm mynet
     # docker network rm $(docker network ls -q)
    
  • 새로운 컨테이너 서비스를 기동하는 경우, 새로운 네트워크를 생성하고 연결해서 서비스 해야한다.
  • 새로운 컨테이너 서비스를 기동하는 경우, bridge 네트워크를 사용하는 경우에는 “–link 이름:별칭” 옵션을 고려한다.

도커 이미지 생성

  • 도커 이미지 생성
    • docker CMD를 사용하여 도커 이미지 생성
    • DockerFile를 사용하여 도커 이미지 생성
  1. 도커 이미지 생성 - 명령어 생성(commit 방식)
    1. docker commit CMD
      • 도커 컨테이너 (꺼져있는 말든 상관없음)-> 도커 이미지
      • docker commit CONTAINER IMAGE
      • docker commit -a ‘AUTHOR’ -m ‘Message’ mycontainer myimage:1.0
    2. 도커 이미지 생성 과정 - 명령어 사용
      1. 베이스 이미지 다운로드 (ex. ubuntu, centos, 등)
        • docker pull ubuntu:18.04
      2. 컨테이너 기동 및 접속
        • docker run -it –name myweb ubuntu:18.04
      3. 선수 패키지 설치 및 소스 코드 빌드 작업
        • apt-get update (new ver: apt update)
        • apt-get install -y default-jdk git (centos의 경우, gitcore로 입력)
        • 소스코드 받아오기
        • 빌드 디렉토리로 이동
        • ./filename build (빌드)
      4. startup.sh 스크립트 생성
        • vi /startup.sh
        1
        2
        
         #!/bin/bash
         java -jar /home/docker-swarm-lab/swarm-login-service/build/libs/login-service.jar
        
        • chmod 755 /startup.sh -exit
      5. 컨테이너를 이미지로 생성
        • docker commit -a ‘bsc’ -m ‘myimage’ myweb myweb-image
        • docker run -d –name myweb -p 8080:8080 myweb-image /startup.sh
  2. Docker export/import
    • 용도 : 컨테이너 구조 파악하는 용도로 사용하면 좋다.
      1. Docker Export / Docker Import
      • docker export mycontainer -o FS.tar
      • docker import FS.tar myimage:tag

      • docker export mycontainertar xf - -C extractdir
      • cat source.tardocker import - myimage:tag
  3. Docker Save/Load
    • 용도: 이미지 백업하고 복구하는 용도로 사용하면 좋다
      1. docker save/load
This post is licensed under CC BY 4.0 by the author.