0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker備忘録

0
Last updated at Posted at 2022-08-11

コンテナと仮想マシン

VMwareの仮想マシンとは使い方がかなり違うので、そちらに慣れていると初めたてのころは戸惑うかもしれない。

VMwareの仮想マシンではインスタンスを生成した後、依存パッケージやプログラムをインストールした状態を保存して使うが、Dockerはインスタンスを生成するときにdockerfileに従って必要な依存パッケージやプログラムをインストールする。

生成したインスタンスはイメージと呼ばれ、イメージを元にコンテナを生成する。生成したコンテナは、タグやダイジェストを指定して外部からアクセスできる。

docker runで生成したコンテナ内で作業した内容は、docker commitでイメージに保存することができるが、-vオプションを使ってホストとコンテナのディレクトリを共有することができるのでdocker commitはあまり使われない。

一般的にDocker単体で使うことは少なく、Docker Composeというツールを使って複数のコンテナを管理することが多い。ソースコードに加えて、docker-compose.ymlgitで管理し、コンテナやイメージにソースコードが含まれることは少ない。

サブコマンド

ps

稼働中のコンテナの一覧を出す

$ docker ps
CONTAINER ID   IMAGE             COMMAND       CREATED         STATUS         PORTS     NAMES
923f3e2a1d15   centos:7.8.2003   "/bin/bash"   2 minutes ago   Up 2 minutes             nervous_cartwright

images

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE  
ubuntu       latest    ba6acccedd29   9 months ago   72.8MB

ローカルに保有しているコンテナ一覧

pull

Docker Hubからコンテナイメージをダウンロードしてくる。gitと違ってfetchはない。
Docker Hub以外にもローカルからダウンロードすることもできる。

$ docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# :の後ろがタグ ubuntuの20.04をダウンロード
$ docker pull ubuntu:20.04
# ダイジェスト指定でダウンロード
$ docker pull ubuntu@sha256:82becede498899ec668628e7cb0ad87b6e1c371cb8a1e597d83a47fac21d6af3
  • タグ指定
    • 対象のタグに最新があれば、最新のものが入れられる
  • ダイジェスト指定
    • タグに更新があっても、固定のバージョンがインストールされるのでイメージの動作に再現性がある

run

コンテナイメージを元にコンテナを生成して起動する

docker run -it ubuntu:20.04

Ctrl+Dで終了するとルートプロセスから終了していまうのでデタッチという操作で抜けます

cp

コンテナからローカルにファイルをコピーすることができる

data.sqlをカレントディレクトリにコピーする
docker cp {{コンテナ名}}:/data.sql ./

デタッチ

ctrl+Pとctrl+Q

キーバインド削除

vscodeを使っている場合ショートカットキーが重複してるので変更します

基本設定のキーボードショートカットで[ctrl p と ctrl q]でそれぞれ検索してdeleteキーでキーバインドを消します

rename

パラメーター指定なしで起動したコンテナには変な名前がついてます。気に食わないので変えたい人は

docker rename old_contena_name new_contena_name

コマンドラインにアタッチ

起動しているコンテナで、コマンドラインで操作したい場合は、次のコマンドを実行する

docker exec -it contena_name /bin/bash

alphine版のコンテナ

ubutuベースのコンテナはサイズが大きいので、軽量版のLinuxであるalphineがよく使われている

bashは使えない

alphineは/bin/bashのバイナリを持っていないので、/bin/ashを使う

/bin/bashを指定すると
$ docker run -it python:3.6.9-alpine /bin/bash
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown.

- docker run -it python:3.6.9-alpine /bin/bash
+ docker run -it python:3.6.9-alpine /bin/ash

dockerfile

既存のコンテナをカスタマイズして、新たにイメージをビルドするための設定ファイル

FROM python:3.6.9-alpine
WORKDIR /app
ENV FLASK_APP=app
COPY ./app /app
RUN pip install --upgrade pip
RUN pip install -r ./requirements.txt

コンテナを停止して削除

docker rm -f {container_id}

便利な拡張機能

sshで開発するのは面倒なので、Remote - Containersを使うとremote sshと似たような開発環境が作れる

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?