markdown Dockerfileチートシート

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown Dockerfileチートシート相关的知识,希望对你有一定的参考价值。

## FROM

Dockerfile の一番最初に書いてベースにするイメージ

```Dockerfile
FROM ubuntu:14.04
```

のように書く。イメージ:タグ で、タグは省略できる。

## MAINTAINER

お名前とメールアドレスを書くのがお作法っぽい。多分自由。

```Dockerfile
MAINTAINER Sayo SHIGURE <sayo@example.com>
```

## ADD

ADD はローカルまたは URL からコンテナにファイルやディレクトリをコピーする機能

```
ADD spam.txt src/egg.txt
```

### HTTP 経由

```
ADD http://example.com/spam.txt src/egg.txt
```

http からも直接落とせる。ローカルホストだけでは無い。

### 自動解凍

ローカルからファイルをコピーした際そのファイルが gzip、 bzip2、 xz の場合は自動で解凍して移動してくれる。

ただし HTTP 経由は解凍してくれない。

以外にはまりどころなので要注意。

### COPY との違い

COPY は純粋にローカルからホストにコピーする。解凍もしない。HTTP 経由もできない。

### ワイルドカードとマッチング

```
ADD spam* /egg/
ADD spam?.txt /egg/
```

* や ? などが使える。この仕様は golang の filepath の Match に依存している。

http://golang.org/pkg/path/filepath/#Match

## WORKDIR

カレントディレクトリを移動して固定する。

```
WORKDIR /tmp
```

docker run で起動したときはこのパスがカレントディレクトリになる

## ONBUILD

この Dockerfile を使って作成したイメージを使ってビルドするときに実行されるようにする。

```
ONBUILD RUN git clone ...
```

このイメージをベースに新しくイメージをビルドしたときに git clone でレポジトリが追加される。

**あんまり賢い使い方では無い気がした ...**

### 参考

- [DockerfileのONBUILD | SOTA](http://deeeet.com/writing/2014/03/21/docker-onbuild/)

## Docker コンテナから GitHub プライベートリポジトリへのアクセスする方法

docker コンテナから GitHub プライベートリポジトリにアクセスするキレイな方法がわからなかった。結局、自動化用の GitHub のアカウントを専用にとってその鍵を使う事にした。自動化を考えるとパスフレーズなしの秘密鍵を使わざるを得ないのが現状。ssh-agent 使う案も一応考えたが挫折。

綺麗な方法があれば教えて欲しい。
最初はソースを git archive でとか考えたが依存関係があったりして面倒くさかった。

- ssh フォルダの中に秘密鍵が入っている
	- ssh/rsa_id
- sources.list がある

### sources.list

```
deb http://jp.archive.ubuntu.com/ubuntu trusty main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu trusty main restricted
deb http://jp.archive.ubuntu.com/ubuntu trusty-updates main restricted
deb-src http://jp.archive.ubuntu.com/ubuntu trusty-updates main restricted
```

### Dockerfile

```Dockerfile
FROM ubuntu 

ADD sources.list /etc/apt/sources.list

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install git -y
RUN apt-get clean && rm -rf /var/cache/apt/archives/* /var/lib/apt/lists/*

ADD ssh/ /root/.ssh/
RUN chmod 600 /root/.ssh/*

RUN ssh-keyscan -t rsa github.com > ~/.ssh/known_hosts
RUN echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /root/.ssh/config

WORKDIR /root/
RUN git clone git@github.com:<Username>/<Repository>.git
```

とりあえずこれで動いた。

未だにコンテナの中に鍵を入れるの気持ち悪いので何かいい方法が無いか考えてみてる。

### 参考

- [Software Criollo](http://softwarecriollo.com/thoughts/sinatra-docker-private-github-repo)
- [Docker: go get from a private GitHub repo - Stack Overflow](http://stackoverflow.com/questions/26161541/docker-go-get-from-a-private-github-repo)
- [How to clone a private git repo from a docker container — /dev/blog](http://slash-dev-blog.me/docker-git.html)

## 参考

こちらにまとめてある

[docker コマンド チートシート - Qiita](http://qiita.com/voluntas/items/68c1fd04dd3d507d4083#%E5%8F%82%E8%80%83)

以上是关于markdown Dockerfileチートシート的主要内容,如果未能解决你的问题,请参考以下文章

markdown GASチートシート

markdown テストコードの关数名チートシート

ruby Rubocopチートシートref:http://qiita.com/kitaro_tn/items/abb881c098b3df3f9871

markdown Markdown记法チートシート

markdown 泊坞窗コマンドチートシート

c_cpp 的HelloWorldコンピュートシェーダ