docker
の編集
Top
/
docker
[
トップ
] [
編集
|
凍結
|
差分
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
Active
Rubyチートシート
成果物リスト
勉強会ログ
↑
アイデア
Webサービス案
Androidアプリ案
電子工作案
GreaseMonkey案
contribute
編集
↑
Recent
2024-07-04
HDDリスト
2023-11-12
自動車保険
2023-08-03
docker
2023-05-17
Rubyチートシート
2023-03-30
RAID5/トラブル20230324
2023-03-25
PC/misuzu
2023-03-24
PC
2023-03-23
PC/DESKTOP-7SL5J8R
2022-12-16
Linux
2022-11-09
Linux/ディスクイメージ取得
2021-05-23
CTF
2021-03-17
PC/misumi
2020-08-31
COMP
2020-03-28
PC/misumi/ubuntu
Windows 10
2018-06-04
Microsoft decode 2018 2日目
Microsoft decode 2018 1日目
2018-04-07
カメラ
2018-01-06
電力自由化
2017-12-21
CROSS×BEATS
B
I
U
D
H
[[]]
<br>
--
#contents *こちらも参照 https://hackmd.io/ZJWSTrK8R8ium6yqEqgGbA?view *インストール 最近はdocker-composeを別途入れなくていい。プラグインだが公式のEngineのインストール手順に含まれてる インストールページに書いてあるログローテートの設定もやっておく *コンテナをサブドメインに割り当てる -ドメインを取る -DNSのAレコードに*.example.comを設定 -[[jwilder/nginx-proxy>https://github.com/jwilder/nginx-proxy]]を起動 -80番でlistenするコンテナを用意 -下記のオプションで起動 -e VIRTUAL_HOST=
.example.com * PIDからコンテナを特定する topやiotopで重いプロセスがいたときに、そのプロセスが所属するコンテナを知りたい ---( $ docker ps --format '{{.ID}}' | xargs docker inspect -f '{{.State.Pid}} {{.Config.Hostname}} {{.Name}}' ---) docker psの方だけ--formatなのが罠(-fはFilter) * jrcs/letsencrypt-nginx-proxy-companion で証明書の期限を確認 ---( find . -name cert.pem | xargs -n 1 -I{} sh -c 'echo {}; openssl x509 -noout -dates -in {} | grep notAfter' ---) * イメージのバージョンを固定する タグの指定では不十分(後から変更される可能性がある。latestとか特に) ---( $ docker image ls --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE jwilder/nginx-proxy latest sha256:4e6bae63dab0c4d3ebf3bbecbf5cd2700ca99db02e155efaa6e28baa14033bc8 2e769f4d3e9c 2 months ago 148MB そしてdocker-compose.ymlで image: jwilder/nginx-proxy@sha256:4e6bae63dab0c4d3ebf3bbecbf5cd2700ca99db02e155efaa6e28baa14033bc8 ---) *時間が経つとリビルドできない aptとかgemとかのリポジトリからパッケージが消えると、結局リビルドできない。 公開できるものはDocker Hubにビルド済イメージを入れておく。 プライベートのものは自前のDocker Hubを用意するのかなー apt-get update がキャッシュされて、それが古くなってて失敗することもあるようだ。 docker build --no-cache でOK。 *時計がずれる https://www.eucalyptus.com/blog/2014/09/14/docker-strange-dev-how-i-learned-stop-worrying-and-love-vm *お手軽にmongodbの永続化 ---( $ boot2docker ssh $ sudo mkdir -p /var/lib/docker/mongodb $ exit $ docker run --name mongodb --restart=always -d -v /var/lib/docker/mongodb:/data/db mongo mongod --smallfiles ---) で、DBを使うコンテナを起動 ---( docker run ... --link mongodb:mongodb ---) *データバックアップ - バックアップ処理を行うコンテナを作る - バックアップ対象とvolumeをshareする [[If you run SSHD in your Docker containers, you're doing it wrong!>http://jpetazzo.github.io/2014/06/23/docker-ssh-considered-evil/]] - DBの場合、バックアップ対象とlinkしてDBに接続する - その場合、クライアントは同一イメージに入れると綺麗みたい https://github.com/dockerfile/mongodb docker run -it --rm --link mongodb:mongodb dockerfile/mongodb bash -c 'mongo --host $MONGODB_PORT_27017_TCP_ADDR' - gitlabみたいな複雑なコンテナの場合、データをtarに固めるのは誰がやるのがいい? -- gitlabの場合はバックアップ機能があるので、同一イメージからそいつを実行すればいいかな [[Docker Quicktip: Backing up Volumes Container42>http://container42.com/2014/05/05/docker-quicktip-5-backing-up-volumes/]] *Docker volumeの内容をバックアップ **バックアップ docker compose downでサービスを止めてから ---( docker run --rm -v
:/dst -v `pwd`:/backup busybox \ tar cpvf /backup/_`date +%Y%m%d_%H%M%S`.tar -C /dst ./ ---) **レストア 事前にdocker compose upでvolumeを作成し、downでサービスを止める ---( # 一旦中身を消して docker run --rm -v
:/dst busybox \ rm -rv /dst # レストア docker run --rm -v
:/dst -v `pwd`:/backup busybox \ tar xpvf /backup/
-C /dst ./ ---) **もっとちゃんとやるなら https://gist.github.com/nicklegr/9a792c00c02b524501b15ffcd84128e1 *MongoDBのバックアップ・レストア ''最近は docker compose run を使うといい'' ---( docker compose run --rm -v $WORK_DIR:/dst $SERVICE_NAME \ mongodump --host $SERVICE_NAME -o/dst/mongodb ---) json形式でエクスポートするには https://gist.github.com/nicklegr/73d9d0824a8919a9e095e72db2837c9a ''※以下は古い情報。--linkや環境変数のホスト名は非推奨'' [[backup_docker_lets-chat.sh>https://gist.github.com/nicklegr/39a3e39ac8efec5ddfb5feed263b3fe7]] $ sudo docker run -it --rm -v /path/to/backup:/backup --link
:mongodb mongo \ /bin/bash -c 'mongodump --host $MONGODB_PORT_27017_TCP_ADDR -o/backup' $ sudo docker run -it --rm --link
:mongodb -v /path/to/backup:/backup mongo bash $ mongorestore --host $MONGODB_PORT_27017_TCP_ADDR /backup バイナリは互換性がなくなることがあるようなので、 テキストでエクスポートもしとくとよさげ http://stackoverflow.com/a/13550669/1904257 ---( #!/bin/bash if [ ! $1 ]; then echo " Example of use: $0 database_name [dir_to_store]" exit 1 fi db=$1 out_dir=$2 if [ ! $out_dir ]; then out_dir="./" else mkdir -p $out_dir fi tmp_file="fadlfhsdofheinwvw.js" echo "print('_ ' + db.getCollectionNames())" > $tmp_file cols=`mongo --host $MONGODB_PORT_27017_TCP_ADDR $db $tmp_file | grep '_' | awk '{print $2}' | tr ',' ' '` for c in $cols do mongoexport --host $MONGODB_PORT_27017_TCP_ADDR -d $db -c $c -o "$out_dir/${db}_${c}.json" done rm $tmp_file ---) root以外で行う場合は下記のハック ---( # バックアップファイルのオーナーがrootになるので、dockerに変更 # (idコマンドでホスト側のdockerのuid,gidを調べて渡している) docker run -it --rm -v $WORK_DIR:/backup mongo:3.2.6 \ /bin/bash -c "chown -R `id -u`:`id -g` /backup" ---) *PostgreSQLのバックアップ・レストア ここまで来るとバックアップコンテナ作った方がよさそうね $ sudo docker run -it --rm -v /path/to/backup:/backup --link
:postgresql sameersbn/postgresql:9.4 \ /bin/bash -c 'DUMMY=$(echo "*:*:*:$POSTGRESQL_ENV_DB_USER:$POSTGRESQL_ENV_DB_PASS" > ~/.pgpass) && chmod 600 ~/.pgpass && pg_dump -h $POSTGRESQL_PORT_5432_TCP_ADDR -U $POSTGRESQL_ENV_DB_USER $POSTGRESQL_ENV_DB_NAME > /backup/dump.sql' $ sudo docker run -it --rm -v /path/to/backup:/backup --link
:postgresql sameersbn/postgresql:9.4 /bin/bash # psql -h postgresql -U $POSTGRESQL_ENV_DB_USER $POSTGRESQL_ENV_DB_NAME -f /backup/
.sql *docker-compose volumesの設定が間違ってると起きることがある? ---( $ sudo docker-compose up Recreating loftcalendar_mongodb_1... Cannot start container 44ba4c1e27343fcbe77ae1c5e9b17cdec35908395e2890481329b6511f94f954: set app armor profile docker-default: no such file or directory ---) このときは一度コンテナを消す ---( $ sudo docker rm loftcalendar_mongodb_1 ---) *Web UI docker front end & reverse proxy for development https://github.com/acidlemon/mirage * デバッグ用シェル 下記をdocker-compose.ymlに書いておく ---( shell: build: . command: bash working_dir: /app/user environment: - DB接続関連一通り ---) * 開発環境としての利用 - [[Run compass, sass, guard in a Docker container | Brad Jones LLC>https://bradjonesllc.com/blog/run-compass-sass-guard-docker-container]] * 未使用データの削除 - [[How to remove old and unused Docker images - Stack Overflow>https://stackoverflow.com/questions/32723111/how-to-remove-old-and-unused-docker-images/32723127#32723127 "How to remove old and unused Docker images - Stack Overflow"]]
タイムスタンプを更新
テキスト整形のルールを表示する
Last-modified: 2023-08-03(木) 09:27:31