(명령 의사록)

7584 단어 DockerRails

Docker란?


전체 하드웨어를 가상화하는 기존의 서비스와 달리 특정한 응용 프로그램이나 서비스 단위로 가상화한다.예를 들어 Visual Machine과 VMWare 등은 PC를 모두 가상화(슈퍼 선봉형인 것 같다), Docker는 어떤 Rails의 응용 프로그램이나 Postgresql 등 DB 등 각 서비스의 가상화를 할 수 있다.컨테이너형이라고 합니다.
상세 정보Docker 시작

왜 편해요?


응용 프로그램 개발자에게
  • 개발 환경을 간단하게 준비할 수 있습니다.예를 들면 Docker를 설치하기만 하면 Rails 개발 환경을 손쉽게 만들 수 있습니다. 같은 거요.
  • 개발 환경의 공통화는 매우 간단하다.예를 들어 여러 사람이 개발할 때, 어떤 사람은 최신 루비2라고 말한다.4.0 중도에 개발한 물건은 내가 루비2로 할게.3.0을 사용하여 함께 개발하면 많은 오류가 발생할 수 있습니다.Docker는 개발 환경에 따라 포장을 하는데 이런 여러 사람과 개발/정식 개발 환경은 간단해진다.개발 환경에서 사용된 Docker 시작
  • 그 밖에 인프라 시설 개발자에게 컴퓨터 자원의 비용이 적고 인프라 시설 구성 관리의 텍스트화 등 장점도 있다.이런 기사.는 Docker가 무엇을 가져왔는지 자세히 설명한다.

    Docker 이미지 및 Docker 컨테이너


    Docker의'용기형'가상 환경은 Docker가 모바일 소프트웨어(위에서 말한 rails 응용 프로그램 등)에서'Docker 용기'로 이동하는 것을 말한다.그런 다음 컨테이너는 Docker 이미지라는 파일로 만들어집니다.Docker 이미지는 디자인맵으로 이를 바탕으로 필요한 물건을 모아 건설 작업을 하면 Docker 컨테이너로 상상할 수 있다.
    즉, Docker 이미지를 가져오면 Docker에서 소프트웨어를 실행할 수 있고, 개발이 끝난 후 이 용기가 필요하지 않으면 용기와 이미지를 간단하게 버릴 수 있다는 것이다.

    아무튼 튜토리얼입니다.


    맥이라면 Docker For Mac가 작년에 발매했는데, 이걸 사용하면 곧 Docker를 사용할 수 있을 거예요.
    내가 처음 읽은 문서는 Docker Machine을 사용하기 때문에 이번 주부터 사용하기 시작했고 오늘까지 매번 가상 박스를 시작합니다
    공식. 튜토리얼은 있지만 정식 일본어 버전은 없는 것 같은데...?그래서 Docker의 공식 파일에 대한 일본어 프로젝트가 있습니다.
    대략적인 절차로 삼다
    (1) 홈페이지에서 Docker for Mac를 설치합니다.여기서부터.
    설치 후 고래 아이콘 Docker 응용 프로그램을 시작하면 도구 모음에도 아이콘이 나타납니다.

    (2) 터미널에서
    버전 확인$ docker -v을 입력하면 설치할 수 있습니다.참고로 방금 나온 Docker 이미지는 $ docker images의 지령 일람표로 설치 후 아무것도 없습니다.
    (3) 이번과$ docker run hello-world 종착역에서 치면 다음과 같은 장황한 글이 나온다.
    순간 잘못된 것 같았는데 자세히 읽어보니 "설치가 성공했어요!"라고 말했다.
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    78445dd45222: Pull complete
    Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    
    
    이번 Docker의 지령은
  • Docker Celient는 Docker 데몬(서버)에 액세스합니다(명령을 두드리는 컴퓨터).
  • hello-world라는 Docker 이미지에서 용기를 만들려고 했지만 로컬에는 그런 파일이 없습니다.
  • 그래서 Docker 수호자는 Docker hub에서 Hello-world라는 Docker Image를 풀었다.
    (github와 유사한 Docker 버전. Docker에서 이동할 수 있는 Docker 이미지가 많이 모였고, Ruby와 자바 등 공식적으로 제공된 이미지도 많이 모였다.)
  • Docker Image에서 컨테이너를 제작하여 프로젝트를 실제 수행했다.
  • 겸사겸사 말씀드리겠습니다.$docker images를 입력하면 아까와 달리 Docker 이미지가 증가합니다.
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    ubuntu              14.04               b969ab9f929b        3 weeks ago         188 MB
    hello-world         latest              48b5124b2768        4 weeks ago         1.84 kB
    

    Docker에서 자주 사용하는 명령 모음


    다음은 완전히 비망록이다.
  • Docker 이미지 만들기$ docker build -t [Dockerイメージの名前] .(Docker 이미지를 만들기 위해서는 Docker file을 만들어야 함)
  • 이미지에 따라 용기 만들기$ docker create [イメージの名前]
  • 용기의 시동$ docker run [OPTIONS] [イメージの名前] [COMMAND] [ARG...]
  • 부팅 중인 용기 일람 보기$ docker ps
  • 부팅되지 않은 컨테이너 목록 포함$ docker ps -a
  • 용기를 제거합니다.$ docker rm [コンテナID]
  • 부팅 용기$ docker start [コンテナID]
  • 정지 용기$ docker stop [コンテナID]
  • Compoose 파일을 사용하여 Docker 이미지build$ docker-compose build
  • Compose 파일을 사용하여 Docker 컨테이너 시작$ docker-compose run
  • 에서 두 가지 작업을 동시에 수행$docker-compose run --build
  • 부팅 중인 용기 정지$ docker-compose stop(이거 잊고 서버 is running 본 경험, 누구나 한 번은 해야 하는데...)
  • 컨테이너 입장$ docker exec -it [コンテナID] bash(예를 들어 이동하는 용기에서도 시도해 볼 수 있다rake db:migrate
  • 보태다


    run 명령 옵션


    공식 문서는여기.입니다.
    - 이미지에서 컨테이너 시작$ docker run -i -t -d IMAGE /bin/bash- 호스트 측 8080 포트의 통신을 컨테이너 측 80 포트로 전송하여 실행$docker run -i -t -p 8080:80 IMAGE /bin/bash자주 사용하다.

    docker-compose.yml 사용


    다만 실제 개발을 진행할 때 하나하나 건네주고 많은 환경 변수를 입력하는 것은 번거롭다.docker-compose.yml 파일을 만들고 위의 docker-compose 명령을 사용하면 docker-compose up이라는 아주 짧은 명령으로 컨테이너를 시작할 수 있어 편리합니다.
    docker-compose.yml에 적힌 내용으로 포트 번호와 실행 명령,postgresql 등 DB를 사용할 때 이 그림을 읽고 웹 링크를 통해 연결합니다.
    db:
      image: postgres
      expose:
        - "5432"
    web:
      build: .
      command: bundle exec rails s -p 3000 -b '0.0.0.0'
      ports:
        - "3000:3000"
      links:
        - db
    
    또 개발 환경, 공식 환경, 테스트 환경 등을 설정하고 싶을 때 웹 아래에 환경 설정을 추가한다.
    (기본값은 production?)
     environment:
          RAILS_ENV: development
    

    Docker file을 잘 쓰는 것은 좀 어렵다.앞으로 매번build 안 할 거예요.


    상세 정보Docker file의 모범 사례.RUN apt-get update && apt-get install -y \에 g++ 등 bundle install에 필요한 포장을 잊어버린 후 입력하십시오.참고로 이런 bundle install은 필요하지만 실제 운행 시 이런 포장apt-get remove -y을 사용하지 않고 사라지는 것이 좋다.
    그나저나 저는 매번 docker-build(등...)=>(됐어, 간다!!)=>(뒤에서 긋기)=>하Д・→→→→를 사용하여 재생을 촉진하십시오??!반복해서 컨테이너 안에서 작업하다하면 돼요.

    .env 파일 읽기 시 고려 사항


    docker-compose.ynl
     env_file:
       - .env
    
    이렇게 기술하면 rails에 있어요.환경 변수를 env 파일처럼 같이 읽을 수 있습니다.그렇지만AWS_ACCESS_KEY_ID=HOGE 이런 느낌은 변수명과 가치 사이에 공간을 남기지 않고 단과트로 가치(VAR=VAL)를 둘러싸지 않아 잘 읽을 수 없다.
    rails의 환경 변수처럼 AWS_ACCESS_KEY_ID="HOGE"하면 환경 변수를 잘 읽을 수 없다는 것이다.원래 일반적으로 개발된 rails 응용 프로그램으로env를 읽고 Docker file, docker-compose를 다운로드합니다.yaml에서 제일 먼저 만들었어요.직접 env를 사용할 때는 주의해야 한다(한 시간 정도의 표정).

    필요 없는 컨테이너, 이미지 데이터 볼륨 삭제


    의외로 잊어버리기 쉽지만, 이미 개발이 되어 불필요해진 컨테이너 등을 정기적으로 정리해보자.상기 명령으로 rm를 하나하나 진행해도 되지만 번거로우므로 $ docker system prune 등으로 단숨에 삭제하거나 작동하지 않은 용기와 용기에 관련이 없는 데이터 볼륨을 단숨에 정리할 수 있다.그나저나 내가 이걸 제대로 하지 못해서 어느새 15GB가 점령당했어.
    Docker for Mac를 사용하면 50GB의 하드디스크 용량을 압박하기 때문에 많은 것을 삭제할 수 있습니다

    좋은 웹페이지 즐겨찾기