Skip to content

sleepyfox97/ft_server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 

Repository files navigation

ft_server

This repogitory is for my studying about Docker

基礎動作

What is Docker container?->OSレベルでコンテナイメージを作成し、自信もイメージとして、パッケージ化している。 とりあえず、
docker container run hello-world
のcommandを実効してみると、hello-wordlというイメージかが起動され、コンテナが実効される。
この際以下の流れで物事が起きている。
1:docker クライアント(command)がdockerdemon(サーバ)に命令(demonとかクライアントとかは、docker公式ドキュメントを見ると分かる。)
2:docker demonが[hello-world]イメージをdockerhubから取得
3:docker demonがイメージからコンテナを作成。メッセージを常時するプログラムをここで実効
4:docker demonがメッセージをdockerクライアントに送信し、ターミナルに表示

nginxの展開

docker container run -p 8080:80 nginx
--name
でコンテナに名前をつけられる。つけないと、適当に名前がつく。同じ名前のコンテナは作ることができないので、注意

docker container run --name mynginx -d -p 8081:80 ngix:1.9.15-alpine
-dでコンテナをデーモンとして起動できる(バックグラウンドで実効)

-p 80:80コンテナのhost portが80でmap port が80という意味。nginxというイメージを使っている。

docker contaier ls
で現在動いているコンテナの確認 docker ps
でも可能

起動しているコンテナは
docker container stop <container name>
で停止可能

docker commandについて

docker <サブコマンド> <操作> <オプション>

<サブコマンド>

help, container, image

<操作>

run, stop, rm, pull, image

<オプション>

--help, -d, -it, --name

docker container run <イメージ名> <コンテナで実行するcommand>
コンテナで実行するcommandは、imageごとにデフォルトで実行されるcommandが指定されているため、省略した場合には、それが実行される。
コンテナを直接操作したい場合には、-itを用いる
-t--ttyオプションと-i--interactiveの二つをくっつけたオプション(-が省略形で、--が長い指定系)
-d,--detachは、コンソールを離れ、バックグラウンドで起動するオプション。
フォアグラウンドで起動した場合には、コンソールでCtrl-P Ctrl-Qを行うとバックグラウンドに持っていける。
バックグラウンドで起動しているコンテナ端末に入るためには、container attach <コンテナ名>を用いる。
バックグラウンドでただ、runする場合は、すぐにstopしてしまう。ただ、stopした場合でもコンテナのキャッシュが残るから、同名のコンテナを作ることはできない。
--rmオプションは、コンテナが停止されたらコンテナを即破棄するオプションである。

docker container execですでに稼働しているコンテナに対してcommand操作を行うことができるようになる。

docker container exec nginx_container date
docker container exex -it nginx_container bash
dcoker container exec nginx_container sh -c "echo 'hello docker' > /hello.txt"
docker container exec nginx_conatiner cat /hello.txt

docker conatiner inspect <コンテナ名>で特定のコンテナの情報を知ることができる。
docker container run -d -p 8080:80 nginxで起動したコンテナのlogを docker container logs <コンテナID>でlodで確認できる。
ログを継続して表示したい場合には-fオプションを用いるdocker container logs -f <コンテナID>
-t, --timestampsオプションで、ログにタイムスタンプをつけることができる。
コンテナの統計情報は docker container statsで見れるが、このままだとリアルタイムの情報を出力し続けてしまうので、 docker conatiner stats --no-streamを用いる。 出したい情報を制限する場合には、--formatオプションを用いる。 docker conatier ls --format='tabale {{.ID}}\t{{.Names}}\t{{.Ports}}'
docker stop <コンテナ名>でストップしたコンテナはdocker start <コンテナ名>で再起動することができる。しかし、この場合、コンテナ上で書き込まれたデータなどは停止前の状態を引き継ぐので注意。 docker container restart <コンテナ名>コンテナを再起動できる。この場合も、停止前の状態を引き継ぐ。 コンテナの本質は使い捨てができることなので、これらのcommandの使用はあまり推奨されていない。
停止して、状態を保持する必要があるなら、ボリューム機能などを用いて、データ永続化を行うのがよい。 コンテナの破棄はdocker conatiner rm <コンテナ名> 起動していないコンテナを全て削除する場合にはdocker container pruneを用いる。-fを用いると消去の際の確認がなくなる。

docker helpについて

docker container helpでcontainerカテゴリーのhelpを見ることができる。 docker contaier run --helpdocker contaier runのhelpを見ることができる。

Dockerでしちゃだめなこと

環境依存のイメージを作ること。

イメージはDockerfileを用いて作り、イメージの作成時点でのソースコードもきちんと残す。

docker composeなどを用いて、巨大なアプリは複数のイメージ、コンテナに分散指せる。アプリをマイクロサービス化して、保守点検しやすくするのが大事

Dockerイメージを使いこなす

たとえば、 docker search pythonとすると、Docker Hub上に上がっているレポジトリの検索ができる。discriptionを全て表示する場合にはdocker search python --no-truncを用いる
docker search "is-official=true -f "stars=50" python とかで、細かい指定ができる。

Docker file書き方

docker run -it -p 80:81 debian:buster /bin/bashdebian:busterを土台とした、コンテナが作れる。このコンテナの中で色々操作したいから/bin/bashを入れてる。 最初のdocker runcommandを打った段階で、コンテナの中に入れるので(-itcommandのおかげ)その中でapt getしたりして、必要なファイルを増やしていくのが、課題を進める大まかな流れになる。
-p 80:81はlocalhost:80にアクセスすると、dockerコンテナの内部でポート81に置いて動いているアプリケーションに接続できるという意味になっている。
apt -y update && upgradeをしないと、aptコマンドが使える形にならない。debian"busster/bin/bashの中に入っているバージョンが最新にならず、以降のインストールがうまくいかない。

apt install -y nginxでnginxがコンテナの中にinstallできる。 service nginx startをしないと、サービスがスタートしない
この状況で、http://127.0.0.1:80/にアクセスすると、"Welcome to nginx!"の表示を見ることができ、実際にnginxが堂さしていることを確認できる。

apt-get install wgetを用いてwgetcommandを使えるようにしないといけない。 curlもいない。 
wordpressのためには、mySQLが必要、mySQLのためには、phpMyAdmin(mySQLの操作がwebブラウザ上から可能となる)が必要、そのためには、Nginxが必要みたいな関係性が存在するみたい。

まずこのサイトからhttp://repo.mysql.com/debian:busterの上で動くmysqlを取ってくることを考えた。

ポート番号の指定が大事。

使いそうなapt-get options

-y;処理中に現れるプロンプトに対して常にyesを返す。
-q --quiet;実行時の処理状況の表示を省略
--no-remobe;
update;インデックスファイルの更新を行う。
upgrade;サーバに対してインストールされている全てのパッケージの更新確認を行い、新しいバージョンが存在するパッケージに関しては更新を行う。
clean aptを使用してローカルホストに蓄えられているrpmファイルの削除を行う。rpmファイルとは、多くのLinuxディストリビューションで使用されるバイナリによるソフトウェアのパッケージのこと。(すぐにcleanして問題ないのか?)

set -exがあった方がいい場合があるみたいだが、なんで必要になっているのかよくわからん。
コマンドライン直打ちでできることがdocker fileになるとうまくできない。

config fileの場所について

nginx.confについて:ect/nginx/nginx.confにいる。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published