docker로 기술 서적을 제작하는 최소한의 환경!!
요즘 취미는 기술서를 쌓는 것이다.
며칠 전에 이런 트위터를 올렸어요.
기술서에는 수갑이 달린 것이 많다.
다만, 이런 장애물에 자주 빠지는 환경 구축에 있다.
나는 MacOS를 사용하지만 기술서에는 Ubuntu를 사용하는 경우가 많다.
vagrant를 시작하는 데도 시간이 필요하기 때문에 때때로 좀 번거로울 수 있습니다.
그래서 이 기사에서
기술서에 적힌 환경 구축을 신속하게 완성하고, 본론에 들어가고 싶은 사람을 대상으로 docker의 환경 구축 방법을 사용한다.
겸사겸사 쓰다.
목표로 기술서에 적힌 환경을 docker로 쉽게 구축할 수 있다.
또'용기''docker'와 같은 말은 다른 기사에도 양보된다.
글의 마지막 부분에 참고할 기사 목록도 미리 게재해 주세요.
사전 요구 사항(내 환경)
docker를 사용하여 환경 구축
이번 목표는 다음과 같은 환경을 만드는 것이다.
결국 아주 간단한 파일이 될 거야.
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
이 문서는 다음과 같다.apt-get
에 패키지 설치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
지금까지 다음과 같은 일을 했다.명령 확인해.
$ docker run -it -v <hostのディレクトリpath>:<コンテナのファルパス> <name or image id> bash
docker run
-i
cd
닫아도 이동하지 않습니다 -t
-it
로 docker run에서 거의 모든 상황에서 지정할 수 있음-v <hostのディレクトリpath>:<コンテナのファルパス>
:
앞뒤 순서가 다르니 주의하세요그럼 환경 구축은 여기서 끝났습니다.
Mac의 경우
command not found
와sar
도 사용할 수 있습니다.총결산
나는 docker를 제대로 사용한 적이 없어서 설명이 충분하지 않은 부분도 있다고 생각한다.
마음에 드는 점이 있으면 평론란에 알려주세요🙇♀️
이렇게 하면 아무런 걱정 없이 기술서를 받을 수 있다!!
여기까지 읽어주셔서 감사합니다!
참고 자료
Reference
이 문제에 관하여(docker로 기술 서적을 제작하는 최소한의 환경!!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/haga/articles/fadf2adae22db08185bc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)