【実戦】uuntu使用docker構築:Ngix+NodeJS+MongoDB
開始
偶然にDockerと縁ができました.dockerを勉強してから、この神器をだんだんサーバーに使うつもりです.始めましょう
選択と思考
自分はこの小さいサーバーしか持っていません.私はdockerの使い方についてどう位置づけますか?dockerを遊ぶのは環境を素早く構築して、dockerを遊ぶためではなく、開発に力を使うためです.すべてのサービスをdockerに変えて、複雑な構造を配置するために、まずいくつかの小さな目標を達成する必要があります.足りたらいいです.徐々に実戦を深化させる
小さい目標の1:uuntuの下でdocker環境をインストールします.
uuntuにdockerをインストールして、初心者の教程を参考にしました.Ubuntu Dockerインストールに使用するコマンドはありますか?
はい、これは私の初志です.
安全について
hub.docker.comでmongodbを検索して、公式の鏡像を見つけましたが、ほとんどが
小さな穴
4.0以降は互換事務が開始されるので、モンゴ:4.0.12のバージョンを選択しました.計画上、データの恒久化を考慮して、ログ、プロファイル、データベース保存ディレクトリをマッピングします.
そこで、ミラーに行って、mongodb.comを探してみると、全体のミラーにはこの構成ファイルがなく、
配置ファイルは必要ならば
私達はコンテナを作るにはこのように書くしかないです.(バックアップフォルダを追加しました.)
docker占有空間の注意
volumeメカニズムの存在によって、いくつかのミラーはmongodb、mysqlのようになりますが、もしdocker runの時にディレクトリをマッピングしていないと、dockerは自動的にvolumeを作成しますが、nginx、httd、alpineはデフォルトではvolumeを作成しません.パラメータ資料:Docker学習ノート(6)——Docer Volume
volumeの目的は恒久化ですので、容器を削除したらvolumnは保存されます.シロとしては、この数日何度もモンゴdbの作成、削除を試みました.ハードディスクの容量が急激に下がる.これはやっとvolumeの原因だと発見しました.dockerでサービスを満杯にするという状況に遭遇したネットユーザーもいます.以下のいくつかのコマンドは、dockerがリソースを占有している状況を確認してくれます.
小さい問題に遭遇しました.mongodbが起動できなくて、エラーコード(code=exited、status=100)
ネット上の方法は、monogod.lockとstorge.bsonを削除させて、最初だけ削除して問題を解決します.二つとも削除しましたが、やはりだめです.このモントサービスstart exits with code 100の下に54票の答えがあります.方法は簡単です.
公式hu.docker.comは、
以下の方法を採用します.DockerがMongoDBを構築します.
拡張読み:
MongoDbステップアップ実践の9つのMongodbのバックアップとMongoDBの容器化を復元します.
【未完次号】
偶然に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の容器化を復元します.
【未完次号】