docker
Docker
起動例
s12v/elasticmq(aws sqsと同じAPIを持ったキュー)を起動してみる
docker run -p -d 9324:9324 s12v/elasticmq
一度runするとコンテナが作成されるので
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 750d1a78dc9f s12v/elasticmq "java -Djava.net.pre…" 25 seconds ago Exited (130) 11 seconds ago confident_keller
以後は docker start CONTAINER_ID
で起動する。IDは一意になる長さまで指定すればOK
docker start 750d1a78dc9f
nginxを起動
- http://localhost:8080/ でアクセス
- htdocsをdocument rootとする
- hoge.confはバーチャルホスト hoge.nullpon.moe の設定
docker run -p 8080:80 -d -v $(pwd)/htdocs:/usr/share/nginx/html -v $(pwd)/hoge.conf:/etc/nginx/sites-enabled/hoge.conf --name web nginx:latest
--nameオプションで名前を指定すると、その名前で停止、再開できる
停止
docker stop web
再開
docker start web
コマンド
イメージ一覧
docker images
コンテナ一覧
docker ps docker ps -a # 起動してないコンテナも表示
起動
docker start コンテナID
コンテナ削除
docker rm コンテナID
イメージ削除(コンテナに使われていると削除できないので、先にコンテナを削除する)
docker rmi イメージID
起動せずにイメージだけ落としたい場合
docker pull イメージ名の名前
ディスク使用量を見る
docker system df docker system df -v
使ってないリソースを掃除
docker system prune
起動中のコンテナに接続
docker exec CONTAINER_ID COMMAND
例)
docker exec -it xxxxx bash
- -iはinteractive、bashやredis-cli等の対話ツールを使う場合に必要
- -tは擬似端末を設定する
docker exec --privileged xxxxx lsof
- --privilegedは特権を与える。bashの中で特権が必要なコマンドを呼ぶ場合も必要(コンテナ内のユーザがrootでも!)
nullpon@local $ docker exec -it xxxxx bash root@docker # lsof -i # 何も得られない!
nullpon@local $ docker exec -it --privileged xxxxx bash root@docker # lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bundle 199 xxxxxx 13u IPv4 234716 0t0 TCP *:3000 (LISTEN) ...
Dockerfile
カスタムイメージの作成。単純にnginx等のサービスを立ち上げるだけなら既存イメージを使うべき
Dockerfileという名前のファイルを作成
FROM ubuntu:16.04 MAINTAINER nyan <nyan@nullpon.moe> RUN apt-get -y update RUN apt-get -y install nginx-full ENTRYPOINT /usr/sbin/nginx -g "daemon off;" -c /etc/nginx/nginx.conf
ビルド
docker build -t nyan:0.3 ./
起動
docker run -d -p 80:80 nyan:0.3
Docker for mac
仮想マシンにログイン
$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
終了は Ctrl-a, k で
docker.txt · 最終更新: 2022/03/08 07:07 by nullpon