かべぎわブログ

ブログです

Docker

ghcr.ioにイメージをPush,Pullする

概要 GitHubのコンテナレジストリ(ghcr.io)にイメージをプッシュしたりプルしたりする手順です。 プッシュする手順 プッシュしたいイメージのタグ付け とりあえず今回はビルドからやってしまいます。 以下のようなDockerfileをつかってみます。 FROM alpine:…

追記

この記事を見返してて、いちいちコマンド入力するのめんどくさいなぁとおもった。 DockerでAnsibleをうごかす - かべぎわブログ docker-composeならこんなかんじ。 version: "3.9" services: local_ansible: build: context: . dockerfile: Dockerfile volum…

docker volumeでPermission deniedが発生したとき

dockerでボリュームマウントしたときにPermissionDeniedとなってマウントしたものにアクセスできない事象が発生した。 $ docker run -v /home/vagrant/docker_ansible/playbooks/:/work local_ansible ls ls: cannot open directory '.': Permission denied …

DockerでAnsibleをうごかす

ローカルで適当にうごかすかーみたいなときによくやる構成。 ディレクトリ構成 . ├── Dockerfile └── playbooks └── playbook.yml Dockerfile FROM python:3.8 RUN pip install pip --upgrade RUN pip install ansible WORKDIR /work ビルドして docker buil…

Docker outside of Docker

Docker outside of Dockerです。 ローカルで docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock docker ash コンテナ内で echo $(hostname) > ./hostname.txt # hostname = 9efa8fda8add 以下のようなDockerfileをつくる FROM centos ADD h…

Ubuntuでsudoなしでdockerコマンドをうてるように

dockerグループにユーザを追加 sudo gpasswd -a $USER docker dockerサービスをrestart sudo service docker restart

DockerでCentOS8のAWSCLI環境を作成する

概要 DockerでCentOS8のイメージをつかってAWSCLIの動作環境を作ってみたいと思います。 Dockerfile こんなかんじ。 FROM centos:8 RUN dnf install -y wget python3 RUN wget https://bootstrap.pypa.io/get-pip.py RUN python3 get-pip.py RUN pip install…

VagrantでDockerホスト(Docker入りCentOS)を作成する

概要 VagrantでDocker入りのCentOSを作成してみたいと思います。 なんかWindows環境でDockerつかうのがめんどくさくなったのでLinux動かしてその上で動かしたくなった。 Vagrantfile こんなかんじ。 まあshellでいろいろ書いてあげているだけだけれど。 おわ…

DockerでVOLUMEと--volumes-fromをつかって別のコンテナの出力するログを集約してみる

概要 DockerfileのVOLUME命令をつかって別のいろいろなコンテナが出力するログファイル的なものを集約してみたいと思います。 手順 手順はこんなかんじ。 ログ格納用コンテナとログを出力するコンテナを作成してみます。 ログ格納用コンテナの準備 ログ用の…

DockerfileのADDでローカルのtarアーカイブをコンテナ内に展開する

概要 DockerfileでつかえるADD命令をつかってローカルにあるtarファイルをコンテナ内に展開してみたいと思います。 事前準備 こんなかんじのDockerfileを用意する。 FROM centos ADD test_archive.tar /root/ 用意したアーカイブはこんなかんじ。 ADDで指定…

DockerfileのCOPYでローカルのファイルをDockerイメージにコピーする

概要 DockerfileでCOPY命令をつかってローカルにおいてあるファイルをDockerイメージのファイルシステムのなかにコピーしてみたいと思います。 事前準備 今回はローカルにwawawa.txtというテキストファイルを作成しておいて、それをDockerイメージの/root/配…

DockerfileのONBUILDの動きをみてみる

概要 Dockerfileで記載できるONBUILD命令がいまいちよくわからなかったので実際に動かしてやってみようと思います。 そもそもONBUILDとは 以下Dockerの公式ドキュメントより(Google翻訳) このONBUILD命令は、イメージが別のビルドのベースとして使用されると…

Dockerコンテナ実行時にコマンドの引数を任意に指定する

概要 コンテナを実行したときにDockerfile内にかかれているコマンドの引数を指定して実行させて見たいと思います。 準備 ENTRYPOINTとCMDを利用します。 たとえば、以下のようなDockerfileがあったとします。 FROM centos ENTRYPOINT [ "echo" ] CMD [ "nani…

DockerfileのCMDとENTRYPOINTの違い 使い分け

概要 Dockerfileを書いていて、CMDとENTRYPOINTという命令があって、どっちもコマンドを実行できて、これなんやねんと思ったので雑まとめ。 CMD 単純にコマンドを実行できる。 ただし、docker run時にコマンドを指定すると処理がうわがかれる。 たとえば以下…

DockerfileのRUNとCMDの違い 使い分け

概要 DockerfileでRUNとCMDという命令があって、どちらもコマンドを実行できるらしく、なんでこれふたつあるんだろうなーと思ったので雑まとめ。 RUN docker buildのときに実行される。 なのでyum installとかapt-getとかはこの処理で記載するとよい。 CMD d…

Dockerfileのなかで変数を利用する

概要 Dockerfileを書いていて、あーここあとで変更入りそうだしかんたんに変えられるようにしたいなー何回も書くのめんどくさいなー変数つかいたいなーと思ったので調べてみた。 ARGをつかえばいい Dockerfile内でARGというところで変数を定義してあげるとい…

任意の名前のDockerfileでdocker buildする

概要 docker buildするときに利用するDockerfileはそのままファイル名でDockerfileとなっていないと読み込まれませんが、これだとファイル名で管理ができません。 docker buildするときにオプションとして-fをわたしてあげると任意の名前のDockerfileを読み…

docker buildでDockerfileからイメージを作成してみる

概要 docker buildコマンドを利用してDockerファイルからイメージを作成してみたいと思います。 今回はベースイメージを指定しただけの超シンプルなやつでやってみます。 Dockerファイル DockerファイルにはもととなるイメージをFROMで記載と、MAINTAINERで…

Dockerコンテナを一発ですべて停止する

概要 Dockerコンテナがたまりにたまっていたのでそれらを一括停止してみる。 コマンド例 以下コマンドを実行することでコンテナをすべて停止することができます。 $ sudo docker stop $(sudo docker ps -aq) ちょっとした説明 docker ps -aqコマンドで停止し…

Dockerコンテナをexportして別のサーバでimportして動作させる

Dockerコンテナを一旦exportして別のサーバ上でimportして動作させて見たいと思います。 環境が変わってもDockerイメージさえあれば同じ環境がすぐにできあがるよ。 みたいなことを確認してみたいと思います。 docker commit でイメージを作成する docker ex…

docker diffでコンテナ内の変更を確認する

概要 docker diffコマンドをつかってコンテナ起動からのコンテナ内の変更を確認してみます。 コマンド例 たとえばこんなかんじでコンテナ内にいろいろファイルをつくってみるとする。 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAM…

docker cpでコンテナ内とホスト間でファイルをコピーする

概要 docker cpコマンドを利用してコンテナとホスト間でファイルをコピーしてみたいと思います。 コマンド例 たとえばこんなかんじのコンテナがあるとする。 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5bc287372e97 centos "…

docker renameでコンテナの名前を変更する

概要 docker renameコマンドを利用して既存のDockerコンテナの名前を変更してみます。 コマンド例 たとえば以下のようなコンテナがあったとする。 $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6a4c710d54ac centos "/bin/ba…

docker attachとdocker execで現在稼働中のコンテナに接続する

概要 docker attachコマンドを利用して現在稼働中のコンテナに接続してみたいと思います。 docker attach たとえば以下のようにping localhostを実行し続けているコマンドがあるとする。 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …

docker ps -f でよくつかうフィルタリングまとめ【随時更新】

コンテナ名でフィルタリングする コンテナIDでフィルタリングする 終了ステータスが0のものをフィルタリングする ラベルでフィルタリングする ステータスでフィルタリングする 実行中(running)のものをフィルタリングする 終了済み(exited)のものをフィルタ…

docker run -e --env-file で環境変数を設定してコンテナを起動する

#概要 docker runコマンドでコンテナを起動する際に、環境変数を設定してコンテナを起動してみたいと思います。 コマンド例 2種類あります。 docker run -e docker runに-eオプションを指定して実行してあげます(-itは確認用でつけてます) $ sudo docker ru…

Dockerコンテナを一発ですべて削除する

概要 Dockerコンテナがたまりにたまっていたのでそれらを一括削除してみます。 コマンド例 以下コマンドを実行することでコンテナをすべて削除することができます。 $ sudo docker rm $(sudo docker ps -aq) ちょっとした説明 docker ps -aqコマンドで停止し…

docker run -v でホストとコンテナのディレクトリを共有する

概要 docker runコマンドに-vオプションをつけてホストとコンテナでディレクトリを共有してどちらからも参照できるようにしてみたいと思います。 コマンド例 docker run -vホストのPATH:コンテナのPATHでホストとコンテナでディレクトリを共有することができ…

docker run --cpu-shares --memoryでCPU/メモリのリソース利用を制限して起動させる

概要 docker runコマンドに--cpu-sharesと--memoryオプションを指定して、CPUとメモリのリソース利用を制限して起動してみたいと思います。 コマンド例 以下のようにすることでコンテナのリソースを制限して起動することができます。 $ sudo docker run --cp…

docker run --hostnameでコンテナにホスト名を設定する

概要 docker runコマンドの--hostnameオプションでDockerコンテナにホスト名を設定してみたいと思います。 コマンド例 --hostname=ホスト名でコンテナにホスト名を設定することができます。 今回はそれにプラスして確認用として-itオプションでコンテナの中…