Quantcast
Channel: docker - それマグで!
Viewing all articles
Browse latest Browse all 34

Dockerfileを作って試すときのコマンドが長いのでmakefileにした

$
0
0

dockerfile 書いたら負けってのは解る。

でも、dockerfile を書かないと、dockerのボリュームの切り分けタイミングや、entrypoint が理解できないし。

dockerfile を書いたことがないと docker hub から pull してきても使い方がわからない。

dockerfile を書いて実行するのが面倒くさい。

練習がてらに、dockerfileをたくさん書いたけど、コマンドが長くなってしまうので不便だよね。 dockerfile のサンプルをgithubで見ても殆どの人が、Rakefilemakefileを置いているので、やっぱりそうなんだと思った。

Makefile書いた

### dockerfile 単体時の設定

name = takuya-debian
.PHONY: all build run

all: build

build.log: ./Dockerfile
    @docker build -t $(name) .
    date +"%Y-%m-%d %H:%i:%s "> ./build.log

build: build.log

run:
    @docker run -it -d $(name)

## makefile 中での $() は $$() にする
login:
     @docker exec -it $$( docker ps -q  --filter 'ancestor=$(name)' -f 'status=running' )  bash


kill:
     @docker kill $$( docker ps -q  --filter 'ancestor=$(name)' -f 'status=running' ) 

makefileやコマンドを実行するときのポイント

  • 作成中の docker image にはかならず名前をつける
  • 名前を指定して実行する
  • 名前を使って終了する

docker ps の filter オプションを使う。

ubuntuのイメージを全て表示する

docker ps -a  --filter 'ancestor=ubuntu'

ubuntuのイメージで実行中のもの

docker ps -a  --filter 'ancestor=ubuntu' --filter 'status=running'

これらの他にもフィルタが在るのだけど。 docker psをフィルタで使うことでとても楽に管理ができるようになった。

参考資料

https://docs.docker.com/engine/reference/commandline/ps/#filtering


Viewing all articles
Browse latest Browse all 34

Latest Images

Trending Articles





Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596344.js" async> </script>