【Docker】入門：pythonが実行できるubuntuのコンテナを作成し、Dockerhubにpull

# はじめに
UdemyでDockerの学習を進めている最中で、途中経過をアウトプットしたいと考えています。
今回は、
1. ubuntuのコンテナを起動し
2. pythonをインストール
3. コンテナをイメージに保存してDockerHubにpushする

ことをやっていきたいと思います。

# 環境
- Windows10
- Docker version 24.0.6

# １．コンテナを起動
以下のコマンドでubuntuのコンテナを起動します。
```cmd
>docker run --name ubuntu-python -it ubuntu bash
```
# ２．pythonをインストール
apt-getのアップデートをします。 ```apt-get update```
```terminal
root@[id]:/# apt-get update
```
```terminal
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
.
.
Get:18 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [28.1 kB]
Fetched 27.3 MB in 21s (1333 kB/s)
Reading package lists... Done
```

sudoをインストールします。
```terminal
root@[id]:/# apt-get install sudo
```
```terminal
Reading package lists... Done
.
.
Unpacking sudo (1.9.9-1ubuntu2.4) ...
Setting up sudo (1.9.9-1ubuntu2.4) ...
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
```
pythonをインストールします。
```terminal
root@[id]:/# sudo apt install python3
```
```terminal
Reading package lists... Done
.
.
running python post-rtupdate hooks for python3.10...
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
```
インストールされたか確認します。
```terminal
root@[id]/# python3 --version
Python 3.10.12
```
コンソールでpythonを実行してみます。
```terminal
root@5[id]:/# python3
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('aaa')
aaa
>>> exit()
root@[id]:/#
```
### pythonファイルを作成します
workフォルダを作成します。
```terminal
root@[id]/# mkdir work
```
workフォルダに移動します。
```terminal
root@[id]/# cd work/
```
pythonファイル作成します。
```terminal
root@[id]:/work# touch test.py
```
vimをインストールします。
```terminal
root@[id]:/work# apt install vim
```
エディタでpythonファイルを開き、aaaと出力するスクリプトを書いて保存します。
```terminal
root@[id]:/work# vim test.py
```
```python:test.py
print('aaa')
```
コンテナから抜けます。
```terminal
root@[id]:/work# exit
```
# ３．コンテナをイメージに保存してDockerHubにpush
コンテナ一覧を確認します
```terminal
>docker ps -a
```
```terminal
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                     PORTS     NAMES
[id]           ubuntu    "bash"    17 minutes ago   Exited (0) 5 minutes ago             ubuntu-python
```
コンテナをイメージにします。
```terminal
>docker commit ubuntu-python ubuntu-python:updated
```
```terminal
sha256:68bf5bacaf9b952cc652c9486660dc22e473b857ced53a43054715d961e6e2de
```
```terminal
>docker images
```
```terminal
REPOSITORY    TAG       IMAGE ID       CREATED              SIZE
ubuntu-python updated   68bf5bacaf9b   About a minute ago   197MB
```
### DockerHubにリポジトリをつくります
以下のURLからDockerHubにログインします。
[DockerHub](https://hub.docker.com/)

「Create Repositry」をクリックします。
![1_リポジトリ作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610435/465e6cdd-d36a-330d-fefe-0eb79782af4a.png)
「Repositry Name」にリポジトリ名を入力し、「Create」をクリックします。
![2_リポジトリ作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610435/0b513318-3709-5a97-7543-62e50bb89719.png)

ubuntuコンテナにpythonをインストールし、DockerHubにpushすることができました！

pullして確認してみます。
リポジトリの「Tags」をクリックし、pullコマンドをコピーします。
![3_pull.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610435/840249ec-f967-5634-a7c3-d8a1639ce91b.png)

コマンドプロンプトに貼り付け、実行します。
```terminal
>docker pull hirosen/ubuntu-python:latest
```

イメージからコンテナを起動し、pythonが実行できることを確認します。