ユーザ用ツール

サイト用ツール


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