質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

863閲覧

docker imageの共有

hfjdsfh_48

総合スコア13

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/30 07:10

ホストPCで作成したimageファイルをdocker hubにpushし、他のpcからも使用できるようにしたいのですがつまづいています。

ファイル構成は下記の通りです。

docker-python/ ├ Dockerfile ├ docker-compose.yml └ opt/ └ sample.py

Dockerfile

FROM python:3 USER root RUN apt-get update RUN apt-get -y install locales && \ localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 ENV LANG ja_JP.UTF-8 ENV LANGUAGE ja_JP:ja ENV LC_ALL ja_JP.UTF-8 ENV TZ JST-9 ENV TERM xterm RUN apt-get install -y vim less RUN pip install --upgrade pip RUN pip install --upgrade setuptools RUN python -m pip install jupyterlab

docker-compose.yml

version: '3' services: python3: restart: always build: . container_name: 'python3' working_dir: '/root/' tty: true volumes: - ./opt:/root/opt

sample.py

import math import sys def main(): val = float(sys.argv[1]) print(math.radians(val)) if __name__ == "__main__": main()

イメージ作成→コンテナ作成→コンテナ起動

docker compose up -d --build

コンテナへの接続

docker compose exec python3 bash

pyファイル実行

python sample.py →3.14.....

Push

docker tag IMAGE ID 「リポジトリ名/イメージ名」

他のPCで上記のimageをpullし、そのimageを基にコンテナ起動→接続まではうまくいくのですが、
pyファイルを実行できません。

コンテナに接続しても、volumesで記載した通りになりません。(localのoptフォルダがコンテナのoptフォルダに同期されない。)

他のpcのローカルにもDockerfileやymlを作成する必要があるのでしょうか。

ご教示お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

docker-compose.yml で指定したvolumesはですが、docker-compose.ymlを使ってコンテナを実行したホストの./optディレクトリをコンテナ内の/root/optにマウントするだけです。
そのためイメージファイルそのものにsample.pyが追加されるわけではありません。

sample.pyをイメージ内に追加したいのであれば、質問最初の方に記載されたDockerfileでCOPYコマンドを使いファイルを追加してください。

ここから加筆

もしイメージをpullしたホスト側で改めてマウントし直したい場合、例えばdocker run実行する際のオプションに-v ./opt:/root/optを追加してください。
イメージ内に /root/opt/sample.py があることを期待する場合、先述の通りイメージを作成する際のDockerfileでファイルをコピーしてください。

投稿2021/07/30 09:15

編集2021/07/30 09:19
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問