docker로 기술 서적을 제작하는 최소한의 환경!!

안녕하세요,이제 1년이 남았습니다.저는 지금 열심히 공부하고 있는 GranB입니다!
요즘 취미는 기술서를 쌓는 것이다.
며칠 전에 이런 트위터를 올렸어요.
기술서에는 수갑이 달린 것이 많다.
다만, 이런 장애물에 자주 빠지는 환경 구축에 있다.
나는 MacOS를 사용하지만 기술서에는 Ubuntu를 사용하는 경우가 많다.
vagrant를 시작하는 데도 시간이 필요하기 때문에 때때로 좀 번거로울 수 있습니다.
그래서 이 기사에서
기술서에 적힌 환경 구축을 신속하게 완성하고, 본론에 들어가고 싶은 사람을 대상으로 docker의 환경 구축 방법을 사용한다.
겸사겸사 쓰다.
목표로 기술서에 적힌 환경을 docker로 쉽게 구축할 수 있다.
또'용기''docker'와 같은 말은 다른 기사에도 양보된다.
글의 마지막 부분에 참고할 기사 목록도 미리 게재해 주세요.

사전 요구 사항(내 환경)

  • MacOS 사용
  • docker 앱 다운로드
  • 본고는'[이해 보십시오] Linux의 구조~ OS와 하드웨어의 기초 지식을 실험과 도해를 통해 학습합니다.]'을 예로 삼아 사용 환경을 만들 것이다.

    docker를 사용하여 환경 구축


    이번 목표는 다음과 같은 환경을 만드는 것이다.
  • Ubuntu 사용
  • binutils,buildessential,systet를 봉하여 넣기
  • strace 명령과 맥 명령 사용
  • 여기까지.
    결국 아주 간단한 파일이 될 거야.

    Docker file에서 docker image 만들기


    먼저 Docker file에서 docker image를 만들어 보려고 합니다.
    docker image라는 흐름.

    docker image 소개


    docker image는 docker 컨테이너를 시작하는 원천입니다.
    자세한 내용은 여기 기사.!

    Docker file 소개


    Docker file은 docker image의 설계도입니다.
    이 파일에 설명된 정보를 기반으로 이미지를 만듭니다.
    다음 예에서 보듯이 INSTRUCTION arguments 형식으로 기술합니다.
    FROM ubuntu:18.04
    COPY . /app
    RUN make /app
    CMD python /app/app.py
    
    그렇다면 실제로 자신의 환경에서 여기까지 해보자.docker 프로그램 다운로드 을 미리 만들어 두십시오.
    $ mkdir linux-docker-practice # 任意のディレクトリを作成
    $ cd linux-docker-practice
    $ touch Dockerfile # Dockerfileを作成
    
    Docker file, 기술 코드를 실제로 엽니다.
    이번엔 다음 코드로 만들 수 있어요.
    FROM ubuntu:latest
    RUN apt-get update && \
        apt-get install git binutils build-essential \
        sysstat strace man -y \
        && mkdir /workdir
    
    이 문서는 다음과 같다.
  • Ubuntu의 최신 버전을 기본 이미지로 지정
  • apt-get에 패키지 설치
  • git,binutils,build-essential,syststat,straice,man을 설치했다.
  • 참고로 Mac는 자주 사용합니다homebrew.
  • -y 지정 설치에서 물어본 모든 질문에 "네"로 대답

  • 원격 용기에workdir라는 디렉터리 만들기 mkdir /workdir
  • 아래에 설명된 "호스트를 컨테이너에 마운트합니다."
  • 코드의 내용을 살펴봅시다.

    FROM


    먼저 파일의 첫 번째 행에는 FROM과 같은 기술이 지정되어 있습니다ubuntu:latest.
    FROM은 기본 이미지를 지정합니다.
    기본 이미지는 이미지 레이어의 맨 아래입니다.
    이것은 기본적이며, 이후의 처리는 계속 진행될 것이다.
    예를 들어 Linux 명령을 실행하려면 당연히 Linux가 필요하다. (Linux의 종류로는 Ubuntu 등이 있다.)
    Linux 명령apt-get, touch 등을 지정하려면 Ubuntu가 필요합니다.
    MacOS에서는 appt-get을 사용할 수 없습니다.
    FROM은 Docker file의 첫 번째 행에 설명되어 있습니다.

    RUN


    RUN은 image에서 지정된 작업을 수행하는 데 사용됩니다.
    각 RUN에는 레이어가 있으므로 기본적으로 따로 쓰지 말고 이어서 쓰는 것이 좋습니다.
    도면층이 늘어나고 이미지가 커지면 효율이 낮은 용기가 된다.
    예를 들어 다음과 같은 두 가지 문법을 쓰면 후자가 더 좋다.
     # NG
     FROM ubuntu:latest
     RUN touch test
     RUN echo 'ohayo' > test
     RUN cat test
     
     # OK
     FROM ubuntu:latest
     RUN touch test && echo 'ohayo' > test \
     cat test
    
    &&를 통해 명령을 연결할 수 있습니다.\ 줄을 바꿀 수 있습니다.
    여기서 Docker file의 내용을 대략적으로 설명합니다.
    그러면 Docker file을 만들고 docker image를 만듭니다.
     $ cd linux-docker-practice # Dockerfileがあるディレクトリに移動
     $ docker build -t ubuntu-latest . # ubuntu-imageという名前をつけてカレンとディレクトでビルド
     $ docker images
    
    docker build <Dockerfileがあるディレクトリ>docker image를 만들 수 있습니다.
    이때 -t <name> 로 docker 이미지에 이름을 붙여 관리할 수 있습니다.
    시행해 보다.
    [~/Desktop/tameshite-linux] $ docker build -t ubuntu-latest .
    [+] Building 4.0s (7/7) FINISHED                                                                                   
     => [internal] load build definition from Dockerfile                                                          0.0s
     => => transferring dockerfile: 37B                                                                           0.0s
     => [internal] load .dockerignore                                                                             0.0s
     => => transferring context: 2B                                                                               0.0s
     => [internal] load metadata for docker.io/library/ubuntu:latest                                              3.8s
     => [auth] library/ubuntu:pull token for registry-1.docker.io                                                 0.0s
     => [1/2] FROM docker.io/library/ubuntu:latest@sha256:3c9c713e0979e9bd6061ed52ac1e9e1f246c9495aa063619d9d695  0.0s
     => CACHED [2/2] RUN apt-get update &&     apt-get install git binutils build-essential     sysstat strace m  0.0s
     => exporting to image                                                                                        0.0s
     => => exporting layers                                                                                       0.0s
     => => writing image sha256:fd94075efd8f2f56454f55c953b2a35068e989c5846c9f657650cc326140e5df                  0.0s
     => => naming to docker.io/library/ubuntu-latest                                                              0.0s
    [~/Desktop/tameshite-linux]
    
    docker images에서 제작된 이미지를 확인하세요.
    [~/Desktop/tameshite-linux] $ docker images
    REPOSITORY        TAG       IMAGE ID       CREATED       SIZE
    ubuntu-latest     latest    fd94075efd8f   1 hours ago   381MB
    
    그럼 여기까지 Docker file을 만들어서 그 Docker file에서 Docker 이미지를 구축할 수 있습니다.
    그러나 이렇게 되면 사실상 코드를 가동할 수 없기 때문에 운행 환경에 있는 컨테이너를 가동해야 한다.

    docker image에서 컨테이너


    일단 코드부터 실행해.
    $ docker run -it -v ~/Desktop/linux-docker-practice:/workdir ubuntu-latest bash
    root@d374440bc52b:/# cd workdir  
    root@d374440bc52b:/workdir# ls
    Dockerfile
    
    지금까지 다음과 같은 일을 했다.
  • 용기를 만들고 시작합니다.컨테이너에 호스트 폴더 마운트
  • 액세스 용기, 워크스테이션으로 이동
  • ls 명령을 실행하여 Docker file
  • 이 있는지 확인합니다.
    명령 확인해.$ docker run -it -v <hostのディレクトリpath>:<コンテナのファルパス> <name or image id> bash
  • docker run
  • 용기를 만들고 시작합니다
  • -i
  • 키보드의 입력을 호스트에서 컨테이너에 연결할 수 있습니다.이것을 지정하지 않으면 용기 접근 후 cd 닫아도 이동하지 않습니다
  • -t
  • 정리 출력.보완 등도 효과가 있다
  • -it로 docker run에서 거의 모든 상황에서 지정할 수 있음
  • -v <hostのディレクトリpath>:<コンテナのファルパス>
  • 부팅된 컨테이너에서 자신의 PC에 있는 폴더에 액세스할 수 있음
  • : 앞뒤 순서가 다르니 주의하세요
  • 여기서 하는 것처럼 호스트의 파일에 특별히 접근하지 않더라도 컨테이너 안에 폴더를 만들면 되는 거죠.
  • 컨테이너에 파일을 배치하면 컨테이너가 커집니다
  • .
  • 코드는 호스트에 놓고 실행할 때 용기를 사용하는 것이 좋다
  • 이런 이유가 있으니 마운트해야 한다.
    그럼 환경 구축은 여기서 끝났습니다.
    Mac의 경우 command not foundsar도 사용할 수 있습니다.

    총결산


    나는 docker를 제대로 사용한 적이 없어서 설명이 충분하지 않은 부분도 있다고 생각한다.
    마음에 드는 점이 있으면 평론란에 알려주세요🙇‍♀️
    이렇게 하면 아무런 걱정 없이 기술서를 받을 수 있다!!
    여기까지 읽어주셔서 감사합니다!

    참고 자료

  • Dockerfile reference
  • Docker 이미지 이해를 목표로 하는 강좌
  • [연재] 세상에서 가장 뜻깊은 컨테이너 & Docker 입문~ 그 1: 컨테이너는 무엇인가?
  • 좋은 웹페이지 즐겨찾기