기본 도커 명령 #class-notes

컨테이너 로직



컨테이너화하지 않고:


소스:

컨테이너화:


소스:

참고: https://hub.docker.com/ -> 거룩한 문서.

명령
$ docker pull ubuntu |or| docker run ubuntu
$ docker pull mongo
$ docker run redis

  • dockerhub에서 ubuntu/mongo/redis를 가져옵니다. docker run은 로컬을 제어하여 존재하는지 확인하고 그렇지 않은 경우 docker 허브에 설치합니다.
  • $ docker images설치된 이미지를 보여줍니다
    $ docker run -it ubuntu
  • 우분투 터미널 열기(-대화형 터미널을 의미)
  • $ docker ps
    $ docker ps -a
  • 이 명령은 현재 활성 상태인 컨테이너를 보여줍니다.
  • -a는 "all"을 의미하며 이전에 활성 상태였던 모든 컨테이너를 표시합니다(활성 컨테이너도 표시함).
  • $ docker run -it -- name my_terminal ubuntu우분투의 이름을 my_terminal로 바꿉니다(!.double - - 이름 앞)
    $ docker run -it my_terminal
  • 이제 터미널에서 이 이름을 사용할 수 있습니다.
  • $ docker start my_terminal
    $ docker stop my_terminal
  • 백그라운드에서 터미널을 시작 및 중지합니다.
  • $ docker stop e7g
  • 이름 대신 컨테이너 ID를 사용할 수도 있습니다(컨테이너 ID는 docker ps -a 명령으로 학습할 수 있음).
  • $ docker rm my_terminal
    $ docker rm e7g
    $ docker rm eg7 gh4 77v 22w fg4 #for multiple containers
    $ docker container rm $(docker container ls -aq) #for all containers
  • 특정 컨테이너를 제거합니다.
  • $ docker run -d mongo
  • 분리 모드가 백그라운드에서 작동합니다.
  • $ docker container logs g87dw
  • 에는 로그가 표시됩니다.
  • $ docker run -it user/lets-meet-app
  • 사용하려는 대화형 앱이 있는 경우 -it 플래그를 작성해야 합니다(그렇지 않으면 코드만 인쇄함).
  • $ docker inspect ubuntu
  • 은 해당 속성을 인쇄합니다.


  • 포트 매핑
    $ docker run -p 3000:3000 node #or another custom app, user/my-app
    $ docker run -p 3001:3000 node
    $ docker run -p 3002:3000 node
  • 이제 앱이 포트 3000, 3001, 3002(호스트:컨테이너)에서 사용할 수 있습니다.
  • #try localhost:3000 , localhost:3001 and localhost:3002 … Same result.
    볼륨 매핑 및 컨테이너 연결

    = 참고 =
    • 컨테이너는 하나의 프로세스로 작동합니다(다운로드된 Spotify, MS Word 등).
    • 호스트 컨테이너는 상태 비저장으로 작동하므로 컨테이너에 데이터를 기록하거나 저장하지 않습니다. 컨테이너가 멈추면 모든 정보는 영원히 사라진다… 이런 상황을 방지하기 위해 볼륨을 사용한다.
    $ docker volume create first-volume
  • 볼륨 생성
  • $ docker container run -it -v first-volume:/sample alpine sh
  • 첫 번째 필드는 볼륨의 이름입니다(first-volume). 두 번째 필드는 파일 또는 디렉토리가 컨테이너(/sample)에 마운트된 경로입니다
  • .
  • 볼륨 매핑을 위한 간단한 실습

  • docker volume create my-volume
    docker container run -it -v my-volume:/sample alpine sh
    cd sample
    echo "hello from the first container" >> file1.txt
    exit
    docker container rm <ContainerId>
    
    docker volume inspect my-volume
    cd /var/lib/docker/volumes/my-volume/_data
    cat file1.txt
    
    or
    
    docker container run -it -v first-volume:/try1 alpine sh
    cd try1
    cat file1.txt
    
    touch file2.txt
    echo "hello from the second container" >> file2.txt
    exit
    
    docker container run -it -v first-volume:/try2 ubuntu sh
    cd try2
    ls
    
    $ docker run --name mysql-server -v /opt/data:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=test147 -d mysql
  • -e는 env 변수, -p: 포트, - -name: 이름 바꾸기, -v: 볼륨을 나타냅니다.
    비밀번호는 MYSQL_ROOT_PASSWORD가 필요합니다.
  • $ docker rmi redis
  • rmi = 이미지 제거, 이미지를 제거합니다.


  • Docker의 네트워킹

    Docker에는 3가지 기본 네트워크 드라이버가 있지만 가장 일반적으로 사용되는 것은 브리지 네트워크입니다.
    $ docker network ls

    $ docker run -it -d -- name cont1 alpine ash
    $ docker run -it -d -- name cont2 alpine ash
  • 알파인 이미지로 2개의 컨테이너를 실행합니다.
  • $ docker network inspect bridge
  • 은 브리지 네트워크의 세부 정보를 보여줍니다.
  • $ docker inspect cont2 | grep IPAddress
  • cont2의 IP 주소를 가져오는 중입니다.


  • $ docker attach cont1
  • 컨테이너 부착.
  • $ ping -c 5 <cont2 ip address>
  • -c는 5홉을 나타냅니다.



  • ! 메모
    두 번째 컨테이너를 이름으로 ping하려고 하면 기본 브리지 네트워크 컨테이너가 해당 IP 주소와만 통신할 수 있기 때문에 "잘못된 주소"오류가 발생합니다.
    $ docker stop cont1 cont2
    $ docker rm con1 cont2
  • 컨테이너를 중지하고 제거합니다.
  • $ docker network create --driver bridge mynet
  • 네트워크 브리지 생성
  • $ docker network connect mynet cont3
  • 컨테이너를 내 네트워크에 연결

  • 도커 작성



    Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services.

    Then, with a single command, you create and start all the services from your configuration. To learn more about all the features of Compose. Docs



    사용 예

    docker-compose.yml

    version: "3.9"  # optional since v1.27.0
    services:
      web:
        build: .
        ports:
          - "8000:5000"
        volumes:
          - .:/code
          - logvolume01:/var/log
        links:
          - redis
      redis:
        image: redis
    
    volumes:
      logvolume01: {}
    

    $ docker compose up
  • 앱을 시작하고 실행합니다.



  • 플러스: 도커파일

    A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image.



    Dockerfile 예

    FROM python:alpine
    COPY . /app
    WORKDIR /app 
    RUN pip install -r requirements.txt
    EXPOSE 80
    CMD python ./app.py
    

    $ docker build -f /path/to/a/Dockerfile .
    Docs


    AWS VM 사용자를 위한 참고 사항:
  • sudo every 명령을 사용하는 대신 다음과 같이 작성하십시오.
  • $ sudo usermod -a -G docker ec2-user
    $ newgrp docker


    출처:
  • https://docs.docker.com/engine/reference/commandline/rm/

  • 클라루스웨이 사전수업 -> https://clarusway.com/
  • 좋은 웹페이지 즐겨찾기