(명령 의사록)
Docker란?
전체 하드웨어를 가상화하는 기존의 서비스와 달리 특정한 응용 프로그램이나 서비스 단위로 가상화한다.예를 들어 Visual Machine과 VMWare 등은 PC를 모두 가상화(슈퍼 선봉형인 것 같다), Docker는 어떤 Rails의 응용 프로그램이나 Postgresql 등 DB 등 각 서비스의 가상화를 할 수 있다.컨테이너형이라고 합니다.
상세 정보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의 지령은(github와 유사한 Docker 버전. Docker에서 이동할 수 있는 Docker 이미지가 많이 모였고, Ruby와 자바 등 공식적으로 제공된 이미지도 많이 모였다.)
$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 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]
$ docker-compose build
$ 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의 하드디스크 용량을 압박하기 때문에 많은 것을 삭제할 수 있습니다
Reference
이 문제에 관하여((명령 의사록)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/asai0304/items/1fb6ad130f00d80caed8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)