【Docker-01】미들의 튜닝 어떻게 하는 거야

6180 단어 dockerfilenginx도커

소개



컨테이너로 Nginx 기동하고 있는 환경의 튜닝은 뭐 보통으로 하면 되지만,
이것 장애 대응등으로 컨테이너 재작성이 되었을 때는 설정 돌아온다고?
소유 때는 어떻게 대응하면 좋다! 라고 생각 조사 & 검증했습니다.

이 순간의 내 Docker 힘은 개요 아는 정도입니다. 당당히 쓴다.

제목



TLS1.0, 1.1이 2020년에 주요 브라우저에서 정식으로 무효화됨으로써, Nginx의 컨피그레이션 재기록하여 TLS1.2만 유효화한다.
기동하고 있는 컨테이너의 설정이 아니고, 이미지에 손을 더해 근본으로부터 해결하고 싶다.

환경 및 사용 서적



mac
프로그래머를 위한 Docker 교과서

검증 시작



조사 및 추측



책을 Chapter7까지 가서 읽는다.
연시에 1주 독료하고 있었던 것과 업무의 Production 환경에서 Docker가 사용되고 있었으므로 이전보다 이미지하기 쉬웠습니다. 기술의 업무 이용은 정말 소중하네요.

Docker compose를 사용하는가, docker-compose.yml의 문장에서 기술하면 좋을까? 라고 생각했습니다만, 거기까지 하지 않아도 좋습니다.
브라우저에서의 확인도 필요 없기 때문에 증명서도 불필요.
Dockerfile에 ADD하면 좋을 것 같지만 ADD는 파일이나 디렉토리에 한정한다, 라고 쓰고 있다고 생각하면서 구그하면 설정 파일(이번이라면 nginx.conf라든지의 무엇인가.conf계)를 준비해 그것을 ADD한다 그렇다면 실현할 수 있는 것 같다.
라는 것은 그것을 기술한 Dockerfile을 작성해, 거기로부터 이미지를 만들어 컨테이너 기동하면 반영되는 것은!
선인의 고마운 지혜야. .

다양한 파일 준비



OS는 우분투, 중간은 Nginx, nginx.conf를 ADD하는 1 문장을 기술한 Dockerfile을 준비합니다.
이번 검증에 사용한 Dockerfile은 github에 올려 놓았습니다.
또, 자원의 명명은 프로그래머를 위한 Docker 교과서 (을)를 참고로 했습니다

· Dockerfile
# ベースイメージの設定
FROM ubuntu:latest

# Nginxのインストール
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install nginx

# nginx.confの追加
ADD nginx.conf /etc/nginx/

# ポート指定(書かなくても動作します。なんとなくw)
EXPOSE 443
EXPOSE 80

# Nginxの実行
CMD ["nginx", "-g", "daemon off;"]

· nginx.conf
디폴트의 ​​기술 내용을 통째로 복사해 TLS의 행만 편집한다.
Docker file에서 지정하면 컨테이너 시작 시 덮어쓸 수 있습니다.
/etx/nginx/conf.d/에 배치해도 움직이는 것 같습니다만, 이번의 검증에서는 잘 안 된다.
・編集前
# cat -n nginx.conf
34 ssl_protocols TLSv1.0 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE

・編集後
# cat -n nginx.conf
34 ssl_protocols TLSv1.2; # Dropping SSLv3, ref: POODLE

준비한 파일을 같은 디렉터리에 배치하여 준비 완료.
다음 명령은 현재 디렉토리에서 실행 중입니다.

도커 이미지 만들기



-t는 「'이름:태그' 형식으로 이름과 옵션의 태그를 지정」하는 옵션.
htp // // cs. 도 c r. jp / 엔기네 / 루후 렌세 / こまん d ぃね / 부이 ld. HTML
$ docker build -t base-image .
PIDが出力されます。
$ docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
base-image          latest              xxxxxxxxxxxx        8 seconds ago     152MB

컨테이너 시작



80 포트 매핑 "-p 80:80"은 지정하지 않아도 작동합니다.
$ docker container run --name webserver01 -d -p 80:80 base-image
PIDが出力されます。
$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
xxxxxxxxxxxx        base-image          "nginx -g 'daemon of…"   8 seconds ago       Up 6 seconds        0.0.0.0:80->80/tcp, 443/tcp   webserver01

bash 시작 및 구성 확인


$ docker container exec -it webserver01 /bin/bash
# cat -n /etx/nginx/nginx.conf
34 ssl_protocols TLSv1.2; # Dropping SSLv3, ref: POODLE

성공!
컨테이너의 stop→start나 pause→unpause에서도 사라지지 않습니다.
기쁜 w

결론



가동률 높은 컨테이너의 응급 처치로 프런트 엔드에 설정 넣는 것은, 곧 떠올랐습니다만 이미지에 설정 넣는 수단이 생각나지 않고. . 당초는 Nginx의 공식 이미지가 대응하는 것일까? 라든지 생각했기 때문에 w, 지식의 정리가 되어 좋았다. 거듭한 추측도 다니고 만족합니다!

이번은 local로 실행했으므로, 다음의 과제는 EC2에 Docker 인스톨 하는지, 그것을 구성 관리한다든가,군요. Terraform 아주 좋아하는 세상으로서 Vagrant도 만져보고 싶거나 한다.



이번 검증에서 자주 사용한 명령을 메모해 둡니다.

버전 정보


$ docker -v

# 細かいバージョン情報まで出ます
$ docker version

이미지 생성 및 목록 출력



태그는 생략 가능.
$ docker build -t [任意のイメージ名:タグ] [Dockerfileの配置ディレクトリのパス]
$ docker image ls

컨테이너 시작



-d는 백그라운드에서 컨테이너를 실행하는 옵션입니다.
-p는 포트의 매핑.
$ docker container run --name [コンテナ名] -d -p [コンテナのポート番号:ホストOSのポート番号] [ベースイメージ名]
PIDが出力されます。

프로세스 확인



-a 옵션으로 중지된 컨테이너도 표시됩니다.
$ docker container ps -a
$ docker stats [コンテナ名]

쉘 시작


$ docker container exec -it [コンテナ名] /bin/bash

컨테이너 삭제


$ docker rm [コンテナID]
$ docker rm 'docker ps -a -q'

이미지 삭제


$ docker rmi [イメージ名]もしくは[イメージID]

이상

좋은 웹페이지 즐겨찾기