LoginSignup
0
0

More than 3 years have passed since last update.

docker 復習 イメージ作成~コンテナ起動

Last updated at Posted at 2021-01-16

初めに

最近 python や Vue.js の勉強ばかりで EC2 や docker を使っていなかったのでイメージ作成からコンテナ起動までの復習をしてみた。

EC2インスタンス起動

イメージは Amazon Linux2 を使用。

image.png

image.png

docker コマンドをインストール

公式ドキュメントをそのままコピペしてインストール。

$ sudo yum update -y
$ sudo amazon-linux-extras install docker
$ sudo service docker start
$ sudo usermod -a -G docker ec2-user

ビルド~コンテナ起動

EC2インスタンスログイン後、~/my_dir で Dockerfile まで作成。

$ mkdir my_dir
$ cd my_dir
$ vi enigma.py
$ vi test.sh
$ vi Dockerfile
  • enigma.py

image.png

  • test.sh

image.png

  • Dockerfile

image.png

ビルドする。

$ docker build -t original_image .

image.png

マウント用に ディレクトリ mnt_dir を作成し、ファイルを移動する。

mkdir mnt_dir
$ ls
Dockerfile  enigma.py  mnt_dir  test.sh
$ mv `ls | grep -v 'Docker' | grep -v 'mnt'` ./mnt_dir/
$ ls ./mnt_dir/
enigma.py  test.sh

docker 起動。

$ docker run -it -v `pwd`/mnt_dir:/mnt original_image /bin/bash

マウントできていることを確認。

root@67ac0dab37f2:/# ls /mnt/
enigma.py  test.sh

python ファイル実行。

root@67ac0dab37f2:/# python3 /mnt/enigma.py | tee /mnt/output.txt
FRZXI JFDRX. XV SYXU LV BZEXX. SJXO AG NLDE KEN.
HELLO WORLD. MY NAME IS ALICE. NICE TO MEET YOU.
root@67ac0dab37f2:/# cat /mnt/output.txt
FRZXI JFDRX. XV SYXU LV BZEXX. SJXO AG NLDE KEN.
HELLO WORLD. MY NAME IS ALICE. NICE TO MEET YOU.

Ctrl + P + Q で起動した状態を保ちつつコンテナを抜ける。

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
67ac0dab37f2        original_image      "/bin/bash"         3 minutes ago       Up 3 minutes                            recursing_wozniak

python 実行も問題なし。

$ cat ./mnt_dir/output.txt
FRZXI JFDRX. XV SYXU LV BZEXX. SJXO AG NLDE KEN.
HELLO WORLD. MY NAME IS ALICE. NICE TO MEET YOU.

コンテナ実行時にシェル実行

Dockerfile に CMD を追加する。

$ vi ./mnt_dir/test.sh 
$ vi Dockerfile

image.png

image.png

ビルド再実行。その後、何回かコンテナを起動してみる。

$ docker build -t original_image .
$ docker run -v `pwd`/mnt_dir:/mnt original_image
$ docker run -v `pwd`/mnt_dir:/mnt original_image
$ docker run -v `pwd`/mnt_dir:/mnt original_image
$ docker run -v `pwd`/mnt_dir:/mnt original_image

シェルが実行されていることを確認。

$ ls ./mnt_dir/
enigma.py                       mnt_file_20210116-05:25:01.txt  mnt_file_20210116-05:29:38.txt  test.sh
mnt_file_20210116-05:24:47.txt  mnt_file_20210116-05:25:47.txt  output.txt
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