最近、1年以上灰を食べているサーバーにdockerをインストールしたかったのですが、適切なyumソースが見つかりませんでした。その後、Baiduを使用した後、centos8が寒くなることがわかりました。多くのミラーサイトがCentOS8ソースを削除しました。
まさか、少し考えた後、オペレーティングシステムを再インストールしてcentos7.9に置き換えることにしました。幸い、サーバーには重要なことは何もありません。ブログのネストを移動するだけです。
システムを再インストールした後、Dockerのインストールプロセスは非常にスムーズに進みました。
nginxのインストールを開始します。
1.最新のnginxイメージを直接プルします
docker pull nginx
2.いくつかの新しいディレクトリを作成し、nginxコンテナ内の関連するフォルダをホストにマウントします。これは主に構成の書き換えを容易にするためであり、その後コンテナを削除します。これらのファイルは失われません。
mkdir -p /usr/local/nginx/{conf,html,logs,ssl}
3. nginxコンテナーを起動して、いくつかのファイルをcpし、手順2で新しく作成したフォルダーに配置します。
docker run --name nginx -p 80:80 -d nginx
4.コンテナ内の構成ファイルをホストにコピーします
コンテナ内のフォルダの詳細を簡単に確認できます。ちなみに、yumを使用してnginx-1.20.xバージョンを直接インストールする場合、nginxディレクトリは/ usr / local / nginxの下に配置されますが、dockerのインストール古いものと同じです。バージョンnginxと同じディレクトリです。
docker cp a25b9f301349:/etc/nginx/nginx.conf /usr/local/nginx/conf/
docker cp a25b9f301349:/etc/nginx/conf.d /usr/local/nginx/
复制代码
5.現在のnginxコンテナを停止して削除します
docker stop a25b9f301349
docker rm a25b9f301349
复制代码
6.証明書を生成し、ホストのsslディレクトリに配置します
証明書の生成方法については、acmesh-official/acme.shを参照してください。
7.構成ファイルを変更します
2つの構成ファイルがあることがわかります。これで、default.confファイルを変更するだけで済みます。その理由は以下のとおりです。
vim conf/nginx.conf
つまり、default.confと呼ばれるかどうかに関係なく、conf.dディレクトリにある限りロードされます。
vim conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name www.telami.cn;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name www.telami.cn;
ssl_certificate /etc/nginx/ssl/telami.cn.pem;
ssl_certificate_key /etc/nginx/ssl/telami.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
复制代码
8.新しいnginxコンテナを開始します
docker run \
--name nginx \
-p 443:443 -p 80:80 \
-v /usr/local/nginx/logs:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/conf.d:/etc/nginx/conf.d \
-v /usr/local/nginx/ssl:/etc/nginx/ssl/ \
--privileged=true -d --restart=always nginx
复制代码
簡単に説明してください:
- -v:ホストがマウントされているディレクトリ、コロン「:」の前のディレクトリはホストディレクトリ、次のディレクトリはコンテナ内のディレクトリです。
- -d:バックグラウンドで実行します。
- --restart = always:dockerを再起動するときにコンテナを自動的に再起動します。
これについて言えば、注意すべき点が1つあります。つまり、上記のdefaul.confファイルに表示される絶対パスは、ホストマシンではなく、コンテナー内のパスです。たとえば、sslを構成する場合:
ssl_certificate /etc/nginx/ssl/telami.cn.pem;
ssl_certificate_key /etc/nginx/ssl/telami.cn.key;
复制代码
実行時に、-v / usr / local / nginx / ssl:/ etc / nginx / ssl /がディレクトリをマウントして、コンテナが証明書を読み取れるようにします。この構成に変更された場合:
ssl_certificate /usr/local/nginx/ssl/telami.cn.pem;
nginxを起動できず、ファイルが見つからないというエラーが報告されます。
さて、今日はこれでおしまいです。またお会いしましょう〜