Dockerとか使いたくないんやが・・・😇
Dockerのインストール
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
一般ユーザでdocker
コマンドを使えるようにするには、さらに、
sudo usermod -aG docker pi
を実行してからいちどログアウトする。
ただしこれは、sudoのようなもので、dockerコンテナが起動されるのはdockerdが起動しているユーザの権限になる。
本当にユーザ権限でdockerコンテナを起動したい場合は、後述の「ユーザ権限でコンテナを起動する」で紹介しているrootless dockerを使用する。
Dockerfileの書き方
FROM debian:buster
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get -y update && \
apt-get -y install make && \
rm -rf /var/lib/apt/lists/*
COPY . /workdir/
WORKDIR /workdir
CMD make help
イメージをビルドする
buildroot
というタグのついたイメージをビルドするには、
docker build -t buildroot .
build context からファイルを除外する
.dockerignore
を使う。
下記のような.dockerignore
が存在する状態でdocker build
すると、app
ディレクトリだけが build context に含まれるようになる。
*
!app
*/.*.swp
上記の例だと、
- 全部除外する
-
app
だけ含める - 任意のディレクトリにある
.*.swp
というファイル(vimのswapファイル)を除外する
コンテナの起動してシェルを実行する
-
--name
を指定しない場合は自動生成されたコンテナ名が使用される
docker run -it --name container_name image_name /bin/bash
停止したコンテナを再度起動する
-
run
したときに指定したコマンドが実行される(はず)
dokcer start -i container_name
起動中のコンテナで新たにシェルを実行する
-
--login
オプションをつけないと/etc/profile
などを読み込んでくれない模様
docker exec -it container_name /bin/bash --login
ホストから起動中のコンテナにファイルをコピーする
-
etc/apt/trusted.gpg
をコンテナ名wizardly_shockley
のコンテナの/root
以下にコピーする
docker cp etc/apt/trusted.gpg wizardly_shockley:/root
シェルの履歴補完がきかない
https://qiita.com/Yuki-Inoue/items/60ec916383025160fbb8
detach keyがデフォルトでCtrl+Pに割り当てられてるのが原因っぽい。
なぜそこに割り当てたんだ・・・
ユーザ権限でコンテナを起動する
Rootless Dockerが既にリリース版にはいっているのでこれを使う。
$ curl -fsSL https://get.docker.com/rootless | sh
インストール後に表示される指示に従ってパスを追加したら、あとはふつうにdocker build
とかdocker run
とかが使える。
pi-genのような、binfmt-miscを使うコンテナがうまく動かなかった。(やり方がわるいだけかもしれないが)
bashでdockerコマンドの入力補完
- Docker for Mac にバンドルされているものを使うとよいらしい
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completion /usr/local/etc/bash_completion.d/docker
from: http://uorat.hatenablog.com/entry/2017/02/01/163027
--platform
でサポートされているアーキテクチャの一覧を見る
本当にこれでいいのか・・・?
$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS
desktop-linux * docker
desktop-linux desktop-linux running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default docker
default default running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
マルチアーキテクチャでビルドしてdocker hubにpushする
docker buildx create --use
docker buildx build --push --platform linux/amd64,linux/arm64,linux/arm/v7 --tag miminashi/legacy_chat:latest .