【実戦】uuntu使用docker構築:Ngix+NodeJS+MongoDB

3574 ワード

開始
偶然にDockerと縁ができました.dockerを勉強してから、この神器をだんだんサーバーに使うつもりです.始めましょう
選択と思考
自分はこの小さいサーバーしか持っていません.私はdockerの使い方についてどう位置づけますか?dockerを遊ぶのは環境を素早く構築して、dockerを遊ぶためではなく、開発に力を使うためです.すべてのサービスをdockerに変えて、複雑な構造を配置するために、まずいくつかの小さな目標を達成する必要があります.足りたらいいです.徐々に実戦を深化させる
小さい目標の1:uuntuの下でdocker環境をインストールします.
uuntuにdockerをインストールして、初心者の教程を参考にしました.Ubuntu Dockerインストールに使用するコマンドはありますか?
uname -r                                //3.10       
wget -qO- https://get.docker.com/ | sh  //   ,   
sudo usermod -aG docker ubuntu          //  docker    sudo
sudo vim /etc/docker/daemon.json        //  163     :

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

docker run hello-world                  //hello-world  
小さい目標の2:docker+mongodb
はい、これは私の初志です.
安全について
hub.docker.comでmongodbを検索して、公式の鏡像を見つけましたが、ほとんどがThis image has vulnerabilitiesと表示されています.つまり、この鏡像には穴があります.インターネットで調べたら、多くの人が心配していましたが、後で鏡像に対して安全対策を行うという人もいます.そこで私も先に使うつもりです.何しろ開発テストだけです.
小さな穴
4.0以降は互換事務が開始されるので、モンゴ:4.0.12のバージョンを選択しました.計画上、データの恒久化を考慮して、ログ、プロファイル、データベース保存ディレクトリをマッピングします.
そこで、ミラーに行って、mongodb.comを探してみると、全体のミラーにはこの構成ファイルがなく、/etc/mongod.conf.origは単なる例であることがわかった.本物のデータベースは/data/dbとして保存されていますが、ログファイルは見つかりませんでした.その後、hb.docker.comで確認しました.
The MongoDB Server log is available through Docker's container log:
$ docker logs some-mongo
これは簡単です.ログマップは必要ありません.
配置ファイルは必要ならば-v /youconf/mongod.conf:/etc/mongod.confだけでいいです.しかし、ミラーのデフォルトの設定が良いので、設定ファイルを再マッピングする必要はありません.
私達はコンテナを作るにはこのように書くしかないです.(バックアップフォルダを追加しました.)
docker run -d -p 27017:27017 --name mymgdb -v /youdata/db:/data/db -v /youdata/backup:/data/backup mongo:4.0.12
それから--always、--rm、-hなどの常用パラメーターは調べて、具体的に参考します.Docker命令詳細解(run編)
docker占有空間の注意
volumeメカニズムの存在によって、いくつかのミラーはmongodb、mysqlのようになりますが、もしdocker runの時にディレクトリをマッピングしていないと、dockerは自動的にvolumeを作成しますが、nginx、httd、alpineはデフォルトではvolumeを作成しません.パラメータ資料:Docker学習ノート(6)——Docer Volume
volumeの目的は恒久化ですので、容器を削除したらvolumnは保存されます.シロとしては、この数日何度もモンゴdbの作成、削除を試みました.ハードディスクの容量が急激に下がる.これはやっとvolumeの原因だと発見しました.dockerでサービスを満杯にするという状況に遭遇したネットユーザーもいます.以下のいくつかのコマンドは、dockerがリソースを占有している状況を確認してくれます.
docker system df        //  image、  、volume           
docker system prune     //         ,  、volume、  、     
docker volume ls        //    volume
docker volume rm id     //    volume
docker volume prune     //        volume
docker image prune      //        image
docker container prune  //        prune
pruneについては、Prune unused Docker objectを見ることができます.
小さい問題に遭遇しました.mongodbが起動できなくて、エラーコード(code=exited、status=100)
ネット上の方法は、monogod.lockとstorge.bsonを削除させて、最初だけ削除して問題を解決します.二つとも削除しましたが、やはりだめです.このモントサービスstart exits with code 100の下に54票の答えがあります.方法は簡単です.
cd /var/lib/mongodb             //cd          
sudo chown -R mongodb:mongodb * //          ll         , 999
バックアップと復元
公式hu.docker.comは、
$ docker exec some-mongo sh -c 'exec mongodump -d  --archive' > /some/path/on/your/host/all-collections.archive
そして試してみました.成功しました.
docker exec mymgdb sh -c 'exec mongodump -d test --archive' > /data/backup/test.archive
しかし、回復すると、バックアップファイルを転送するのは難しいです.この方法を放棄します.
以下の方法を採用します.DockerがMongoDBを構築します.
docker exec mymgdb sh -c "exec mongorestore --archive=/data/backup/xx.archive"    //    
【未完次号】
拡張読み:
MongoDbステップアップ実践の9つのMongodbのバックアップとMongoDBの容器化を復元します.
【未完次号】