タグ付けされた質問 「docker」

Dockerは、コンテナーを構築して実行するためのツールです。Dockerfile、操作、アーキテクチャに関する質問を受け付けます。本番環境でのdockerの実行に関する質問は、ServerFault(https://serverfault.com/)でより適切な応答を見つける可能性があります。dockerタグが単独で使用されることはめったになく、多くの場合、docker-composeやkubernetesなどの他のタグとペアになります。

3
Docker変更があった場合にのみpiprequirements.txtを実行する方法は?
Dockerfileには、以下をインストールするレイヤーがありますrequirements.txt。 FROM python:2.7 RUN pip install -r requirements.txt Dockerイメージをビルドすると、このファイルに加えられた変更に関係なく、プロセス全体が実行されます。 pip install -r requirements.txtファイルに変更があった場合にのみDockerが実行されるようにするにはどうすればよいですか? Removing intermediate container f98c845d0f05 Step 3 : RUN pip install -r requirements.txt ---> Running in 8ceb63abaef6 Collecting https://github.com/tomchristie/django-rest-framework/archive/master.zip (from -r requirements.txt (line 30)) Downloading https://github.com/tomchristie/django-rest-framework/archive/master.zip Collecting Django==1.8.7 (from -r requirements.txt (line 1))

3
Dockerコマンドの--net = hostオプションは実際に何をしますか?
私はDockerの初心者です。このオプションがdockerrunコマンドで何をするのかについての明確な説明は、深く、少し混乱していました。 ポートを指定せずに、Dockerコンテナで実行されているアプリケーションにアクセスするために使用できますか?例として、-p 8080:8080docker runコマンドのオプションを使用してポート8080のdockerイメージを介してデプロイされたWebアプリを実行すると、Dockerコンテナーip / theWebAppNameの8080ポートでWebアプリケーションにアクセスする必要があることがわかります。しかし、私は--net=hostオプションがどのように機能するかを本当に考えることはできません。

5
Docker CMDを複数回使用して複数のサービスを実行できないのはなぜですか?
centos + sshという名前のDockerfileからベースイメージを構築しました。centos + sshのDockerfileでは、CMDを使用してsshサービスを実行しています。 次に、rabbitmqというDockerfileという名前の別のサービスを実行してイメージを構築します。 FROM centos+ssh EXPOSE 22 EXPOSE 4149 CMD /opt/mq/sbin/rabbitmq-server start rabbitmqコンテナーを起動するには、次を実行します。 docker run -d -p 222:22 -p 4149:4149 rabbitmq sshサービスは機能しません。rabbitmqのDockerfile CMDがcentosのCMDをオーバーライドしていることを検出します。 CMDはdocker image内でどのように機能しますか? 複数のサービスを実行したい場合、どうすればよいですか?スーパーバイザを使用していますか?
96 docker 


3
Dockerと--userns-remap、ホストとコンテナ間でデータを共有するためのボリューム権限を管理する方法は?
Dockerでは、コンテナー内で作成されたファイルは、ホストからそれらを検査している間、予測できない所有権を持つ傾向があります。ボリューム上のファイルの所有者はデフォルトでroot(uid 0)ですが、root以外のユーザーアカウントがコンテナーに関与してファイルシステムに書き込むとすぐに、所有者はホストの観点から多かれ少なかれランダムになります。 dockerコマンドを呼び出しているのと同じユーザーアカウントを使用して、ホストからボリュームデータにアクセスする必要がある場合に問題になります。 一般的な回避策は次のとおりです。 Dockerfiles(非移植可能)での作成時にユーザーにuIDを強制する ホストユーザーのUIDをdocker run環境変数としてコマンドに渡し、chownエントリポイントスクリプトのボリュームでいくつかのコマンドを実行します。 これらのソリューションはどちらも、コンテナー外の実際のアクセス許可をある程度制御できます。 私は、ユーザーの名前空間がこの問題の最終的な解決策になると期待していました。最近リリースされたバージョン1.10と--userns-remapをデスクトップアカウントに設定して、いくつかのテストを実行しました。ただし、マウントされたボリュームのファイル所有権を処理しやすくすることができるかどうかはわかりません。実際には逆になる可能性があります。 この基本的なコンテナを開始するとします docker run -ti -v /data debian:jessie /bin/bash echo 'hello' > /data/test.txt exit そして、ホストからのコンテンツを検査します: ls -lh /var/lib/docker/100000.100000/volumes/<some-id>/_data/ -rw-r--r-- 1 100000 100000 6 Feb 8 19:43 test.txt この番号「100000」はホストユーザーのサブUIDですが、ユーザーのUIDに対応していないため、権限がないとtest.txtを編集できません。このサブユーザーは、docker以外の実際の通常のユーザーとは親和性がないようです。マッピングされていません。 この投稿で前述した、ホストとコンテナ間でUIDを調整することで構成されていた回避策UID->sub-UIDは、名前空間で発生するマッピングのために機能しなくなりました。 次に、(セキュリティを向上させるために)ユーザー名前空間を有効にしてdockerを実行する一方で、dockerを実行しているホストユーザーがボリュームで生成されたファイルを所有できるようにする方法はありますか?
96 docker 


5
Docker Swarmはどのようにボリューム共有を実装しますか?
Docker Swarmは、次の2種類のストレージを管理できます。 volume そして bind 一方でbind、それはタスクに(各群れノード上で)ローカルディレクトリ間の結合を作成するのでドッカードキュメントによって示唆されていない、volume私はボリュームがタスク間で共有されているかを理解していないので、実装は、言及されていませんか? Docker Swarmはノード間でボリュームをどのように共有しますか? ボリュームはどこに保存されますか(マネージャー上?およびマネージャーが複数ある場合?) 異なるネットワーク上の異なるマシンで実行されている場合、ノード間で問題はありませんか? VPNを作成しますか?

1
docker ubuntu / bin / sh:1:locale-gen:が見つかりません
以下のロケール設定コードを私のdockerfileに入れます、 FROM node:4-onbuild # Set the locale RUN locale-gen en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 しかし、それは私にエラーを与えます /bin/sh: 1: locale-gen: not found The command '/bin/sh -c locale-gen en_US.UTF-8' returned a non-zero code: 127 何か案が?
95 ubuntu  docker 

2
docker-composeを介してDockerコンテナに静的IPを提供します
コンテナに静的IPアドレスを提供しようとしています。カスタムネットワークを作成する必要があることを理解しています。私はそれを作成し、ブリッジインターフェイスはホストマシン(Ubuntu 16.x)で起動しています。コンテナはこのサブネットからIPを取得しますが、私が提供した静的なIPは取得しません。 これが私のdocker-compose.ymlです: version: '2' services: mysql: container_name: mysql image: mysql:latest restart: always environment: - MYSQL_ROOT_PASSWORD=root ports: - "3306:3306" networks: - vpcbr apigw-tomcat: container_name: apigw-tomcat build: tomcat/. ports: - "8080:8080" - "8009:8009" networks: - vpcbr depends_on: - mysql networks: vpcbr: driver: bridge ipam: config: - subnet: 10.5.0.0/16 gateway: 10.5.0.1 aux_addresses: …

9
Docker-mysql接続の準備ができているかどうかのcomposeチェック
dbコンテナーが開始され、接続を受け入れる準備ができるまで、アプリコンテナーが移行/開始を実行しないようにしようとしています。 そこで、ヘルスチェックを使用することにし、dockercomposeファイルv2のオプションに依存します。 アプリでは、私は以下を持っています app: ... depends_on: db: condition: service_healthy 一方、dbには次のヘルスチェックがあります db: ... healthcheck: test: TEST_GOES_HERE timeout: 20s retries: 10 私は次のようないくつかのアプローチを試しました: dbDIRが作成されていることを確認する test: ["CMD", "test -f var/lib/mysql/db"] mysqlバージョンの取得: test: ["CMD", "echo 'SELECT version();'| mysql"] 管理者にpingを実行します(dbコンテナーを正常としてマークしますが、有効なテストではないようです) test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] 誰かがこれに対する解決策を持っていますか?


5
Docker-イメージオペレーティングシステム「windows」はこのプラットフォームでは使用できません
私は自分のWindows10マシンでこれを試しました: Dockerfile: From microsoft/nanoserver CMD ["echo", "Hello World"] PS C:\FSD\Docker\Trial1> docker build -t lea/leatest . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM microsoft/nanoserver latest: Pulling from microsoft/nanoserver bce2fbc256ea: Pulling fs layer 58f68fa0ceda: Pulling fs layer image operating system "windows" cannot be used on this platform

10
Dockerを使用してOS Xで開発環境をセットアップする正しい方法は何ですか?
はじめに DockerとBoot2Dockerを使用してOS Xで開発環境をセットアップする良い方法がわかりません。私が直面している問題は、次のようにソースコードを管理する方法です。 インストール済みのツール(テキストエディター、IDE、gitなど)を使用して、OS Xのコードを変更できます。 これらの変更はDockerコンテナーに反映されるため、テストを再実行したり、Webページを更新したりすると、変更をすぐに確認できます。 理論的には、これはソースコードをボリュームとしてマウントすることで簡単に実行できるはずです。 docker run -it -v /path/to/my/source/code:/src some-docker-image 残念ながら、これにはOS Xで完全に使用できなくなる2つの主要な問題があります。 問題#1:VirtualBox(vboxsfを使用)にマウントされたボリュームが非常に遅い たとえば、ソースコードがDockerイメージの一部である場合、Jekyllが私のホームページをコンパイルするのにかかる時間は次のとおりです。 > docker run -it brikis98/yevgeniy-brikman-homepage:v1 bash root@7aaea30d98a1:/src# time bundle exec jekyll build [...] real 0m7.879s user 0m7.360s sys 0m0.600s これがまったく同じDockerイメージですが、今回はOS Xからソースコードをマウントしています。 > docker run -it -v $(pwd):/src brikis98/yevgeniy-brikman-homepage:v1 bash root@1521b0b4ce6a:/src# time bundle exec …


4
DockerFileからdockerインスタンスを実行するにはどうすればよいですか?
ようやくdockerを起動して実行する方法を見つけました。 docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu 私はそれをredisインスタンスにリンクしました。 これは最初からであり、redisインスタンスを作成したときに docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis リモートリポジトリから画像を取得しますか? NodeBBはDockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfileを提供しています。私はそれをどのように使用するか本当にわかりません。私は、リモートでこのDockerfileを呼び出すことによって、どういうわけかローカル環境を作成できると想定しています。 これは正しいです?もしそうなら、リモートを指すローカルインスタンスをどのように作成できますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.