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?

【Dockerfile】docker build/docker runを用いたDockerの起動の流れ

0
Last updated at Posted at 2026-10-26

基本トピックの確認

Dockerの概要

Dockerはコンテナ型の仮想環境の構築にあたって用いられるオープンプラットフォームです。Docker以前の仮想環境の構築にあたってはVirtualBox(ホスト型)などが用いられていましたが、仮想環境毎にOSをインストールする必要があるなど冗長だったのでDockerが用いられることが多くなっています。

Dockerを動かすにあたってはdocker-composeを使う方法が紹介されていることが多いですが、当記事ではDockerfileからdocker buildを用いて環境を構築しdocker runを用いて起動とログインを行う流れをご紹介します。

用いるDockerのコマンド

コマンド名 動作
docker run ベースに用いるimageの指定
docker images imageの一覧の確認
docker image pull ベースに用いるimageの指定
docker image rm ベースに用いるimageの指定
docker build ベースに用いるimageの指定

Dockerfileに用いられる基本コマンド一覧

コマンド名 動作
FROM ベースに用いるimageの指定
ENV Docker内で使用する環境変数の指定
WORKDIR Dockerfileに書かれたコマンドを実行する作業用ディレクトリの指定
COPY ホストのファイルをDocker内にコピー
RUN Docker内でのコマンドの実行
USER Dockerファイルに記載したコマンドを実行するユーザの指定
CMD デーモンの実行

Docker環境の構築とdocker runによる起動の流れ

Dockerfileの作成と環境のビルド

./Dockerfile
FROM nvidia/cuda:12.4.0-runtime-ubuntu22.04

WORKDIR /app

たとえば上記のようなDockerfileをカレントディレクトリに保存し、下記のようなコマンドを実行することでDocker環境を構築することができます。

$ docker build . -t docker_name:latest

上記のdocker_nameは作成するDocker環境毎に変える必要があります。Docker環境が構築されたかどうかは下記のようにCLIからdocker imagesを実行することで確認できます。

$ docker images

・CLIの出力

IMAGE                           ID             DISK USAGE   CONTENT SIZE   EXTRA
docker_name:latest             xxx...xx       xxxGB             0B

docker runによる起動

IMAGE                           ID             DISK USAGE   CONTENT SIZE   EXTRA
docker_name:latest             xxx...xx       xxxGB             0B

docker imagesの実行時に上記のような出力が得られる場合、下記のようなシェルスクリプトを実行することでDockerの起動とDocker内へのログインを行うことができます。

・シェルスクリプト

start_docker.sh
#!/bin/bash

XAUTH=/tmp/.docker.xauth

rm -fR $XAUTH
touch $XAUTH
xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge -
chmod a+r $XAUTH

docker run -it --rm \
	--gpus all \
	-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
	--shm-size=8gb \
	--net=host \
	--ipc host \
	-h="pc1" \
	--name pc1 \
	--env="DISPLAY=$DISPLAY" \
	--env="QT_X11_NO_MITSHM=1" \
	--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
	--env="XAUTHORITY=$XAUTH" \
	--volume="$XAUTH:$XAUTH" \
	--volume="./file_dir:/work" \
	docker_name \
	/bin/bash --login

・実行コマンド

$ sh start_docker.sh

ローカル環境のfile_dirディレクトリとDocker内のworkディレクトリが対応する点などに注意しておくと良いと思います。

複数コンテナの起動

同じ名称のコンテナを複数起動しようとするとコンフリクトが起きるので注意が必要です。

$ docker ps

・実行結果

CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS     NAMES

上記のようにdocker psを実行した際のNAMESの項目(前項のdocker runの-h="pc1"のpc1に対応)が同じものが複数となるとコンフリクトとなります。

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?