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

Dockerは、ソフトウェアコンテナー内のアプリケーションの展開を自動化するオープンソースプロジェクトです。

2
Google Kubernetes EngineでKubernetesロードバランサーの外部IPアドレスを選択する方法
Google Kubernetes Engineを使用してWebアプリをデプロイしていますが、使用するドメイン名がGoogle Cloud Platformの同じプロジェクトの一部として制御する既存の静的IPアドレスのロードバランサーを介してアクセスできるようにしたいすでにこのIPを指している。 ポッドに使用したyamlファイルは次のとおりです。 apiVersion: v1 kind: Pod metadata: name: my-pod labels: app: my-app spec: containers: - name: my-container image: gcr.io/my-project/my-app:latest 次を使用してロードバランサーを設定できます。 apiVersion: v1 kind: Service metadata: name: my-load-balancer spec: ports: - port: 80 targetPort: 80 selector: app: my-app type: LoadBalancer これにより、アプリにアクセスできる外部IPが提供されますが、必要なIPを使用するように構成する方法が見つかりません。サービスマニュアルには spec.clusterIP設定に言及したが、これは外部IPに関連していないようです。同様に、ロードバランサーが設定されると、サービスのstatus.loadBalancer.ingress.ipフィールドは外部IPアドレスに設定されますが、これは構成可能な設定ではないようです。 別の方法として、Google Compute Engineコンソールで転送ルールを手動で作成して、静的IPアドレスからKubernetesによって設定されたターゲットプールにトラフィックを転送しようとしましたが、接続しようとすると接続が拒否されます。 私が望むことをする方法はありますか?選択した静的IPアドレスのGoogle KubernetesエンジンでKubernetesポッド(またはレプリケーションコントローラー)を公開する方法はありますか?

7
Docker&Shorewall
サーバーでShorewallを単純なスタンドアロンファイアウォールとして使用していますが、Dockerも使用したいと考えています。 Dockerコンテナとそのポートリダイレクションドッカーを使用することにより、独自のiptablesルール/チェーンをセットアップします。これは、shorewallが再起動されると強制終了されます。そのため、コンテナは到達不能になります。 誰かが岸壁の再起動時にドッカールールを保存/復元できましたか?または別の回避策がありますか? こちらもご覧ください: 同様の質問があるShorewallメーリングリスト GitHub Issue#2801 @ dotcloud / docker
16 shorewall  docker 

2
ルート権限がないDockerコンテナにファイルを追加する方法は?
公式tomcatイメージから作成されたDockerイメージにファイルを追加しようとしています。tomcatbashを実行するとユーザーとしてログインしているため、そのイメージにはルート権限がないようです。 docker run -it tomcat /bin/bash tomcat@06359f7cc4db:/usr/local/tomcat$ Dockerfileファイルをそのコンテナにコピーするように指示した場合、ファイルには権限が644あり、所有者はrootです。私の知る限り、Dockerfile内のすべてのコマンドはrootとして実行されるため、これは妥当なようです。ただし、そのファイルの所有権をに変更しようとするとtomcat:tomcat、Operation not permittedエラーが発生します。 そのイメージにコピーされたファイルの権限を変更できないのはなぜですか? 再現方法: mkdir docker-addfilepermission cd docker-addfilepermission touch test.txt echo 'FROM tomcat COPY test.txt /usr/local/tomcat/webapps/ RUN chown tomcat:tomcat /usr/local/tomcat/webapps/test.txt' > Dockerfile docker build . の出力docker build .: Sending build context to Docker daemon 3.072 kB Sending build context to Docker daemon …

5
再インポートされたdocker image / containerからの「コマンドが指定されていません」
あるマシンからdockerコンテナを取得して別のマシンで実行しようとすると、「デーモンからのエラー応答:コマンドが指定されていません」というエラーが発生します。 以下は、問題を示す簡単な例です。 docker --version Docker version 1.10.1, build 9e83765 docker pull ubuntu docker run --name u1 -dit ubuntu:latest docker export -o exported u1 docker stop u1 docker rm u1 docker import exported ubuntu:imported docker run --name u1 -dit ubuntu:imported docker: Error response from daemon: No command specified. この例では、最初にイメージ(ubuntu)をプルし、u1そこからコンテナーを正常に作成/実行します。次に、そのコンテナをファイルにエクスポートし(exported)、コンテナを停止/削除し、ファイルを新しいイメージにインポートし(ubuntu:imported)、そこから新しいコンテナを実行します。失敗します。
16 docker 

9
Amazon ECS-サービスのすべてのタスクを再起動するにはどうすればよいですか?
外部データソースからいくつかの設定ファイルをロードするタスクがあります。設定がアップロードされた後、設定がすべてのインスタンスに反映されるように、サービス内のすべてのタスクを再起動できるようにします。 すべてのサービスを再起動する最良の方法は何ですか? 「タスクの数」を0に設定してからバックアップする「回避策」がありますが、これは確実に実行されるはずの方法ではなく、ダウンタイムがあります。

2
Docker exec / run shellコマンドのネスト
ユースケースの簡単な紹介: を使用しdockerてgoテストを実行するためにコンテナを使用していgo test ./...ます。これはを使用して簡単に実現できますdocker exec <container> /bin/sh -c "go test ./..."。残念ながらgo test ./...、すべてのサブディレクトリで実行されるため、1つ(ベンダーディレクトリ)を除外したいと思います。 このための推奨される解決策は、次のコマンドを使用するgo test $(go list ./... | grep -v '<excluded>'ことです。 docker run golang:1.6.2-alpine /bin/sh -c "go test " (私はこれをrunとexecの両方でテストしましたが、おそらく同じコアを使用しています)。 docker exec -it <container_id> /bin/shまったく同じコマンドを使用してコンテナにsshして実行すると、それは魅力のように機能します。 docker exec / runでシェルコマンドを実行すると、$()?でネストされたコマンドはサポートされないようです。
15 bash  docker 

2
Docker-外部からアクセス可能な公開ポート-iptablesルールは無視されます
私は次のように実行されているドッカーコンテナを持っています: docker run --name some_container_1 -p 8080:80 -d some_image それはうまくいきます。コンテナはポート80から8080を公開し、localhostからアクセスできます。 しかし、何らかの理由でINPUT iptablesルールを完全に無視しており、外部からアクセスすることもできます。 Dockerコンテナへのアクセスを制限して、IP 123.456.789.0が外部からのみアクセスできるようにするにはどうすればよいですか? ありがとう。 sudo iptables -L -n -v --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 2 …
15 docker  iptables 

2
仮想マシン内でコンテナを実行していますか?
コンテナは、ハードウェアを仮想化せずに、VM上で実行されているソフトウェアをシステム上の他のコンテナで実行されているソフトウェアから隔離するだけなので、VMはVMよりもはるかに軽量であることを理解しています。 私の状況では、追加のサーバーを購入する余裕はなく、所有しているサーバーはすべてハイパーバイザーを実行しています。比較的小さなWebアプリケーションのインスタンスをホストするために、少なくとも6つの「サーバー」をプロビジョニングする必要があります(各インスタンスは異なる顧客用です)。これらの各サーバーに新しいVMをプロビジョニングするのは無駄なので、2つのVMをセットアップし、次のいずれかを実行する予定です。 仮想ホスト(apache)を使用して、各VMでアプリケーションの複数のインスタンスを実行します。または 環境を分離できるように、VMにコンテナーをセットアップします。 これを考慮して、VM内で使用するのは悪い考えになるコンテナシステムに関連する無視できないオーバーヘッドがありますか、またはコンテナを使用したくない他の技術的な理由がありますか?

5
致命的なエラー:特権テーブルを開いてロックできません: 'user'のテーブルストレージエンジンにはこのオプションがありません
このエラーメッセージは、Dockerイメージでubuntu 16.04および最新のmysql 5.7.19-0ubuntu0.16.04.1を使用すると表示されます。 これを修正するために何ができますか? エラーを再現するには 入手Dockerfile: FROM ubuntu:16.04 RUN apt update RUN DEBIAN_FRONTEND=noninteractive apt install -y mysql-server (こちらも利用可能) ビルドして実行: docker build -t mysqlfail . docker run -it mysqlfail tail -1 /var/log/mysql/error.log 次のエラーログが表示されます。 2017-08-26T11:48:45.398445Z 1 [警告] root @ localhostは空のパスワードで作成されます!--initialize-insecureオプションのオフを検討してください。 これはまさに私たちが望んだものでした。ルートパスワードがまだ設定されていないmysqlです。 過去(ubuntu 14.04 / mysql 5.5)service mysql startは可能でした。これを試すと失敗する docker run -it mysqlfail …
15 mysql  docker 

1
Dockerキャッシュの無効化をデバッグする方法は?
Dockerにはキャッシュがありますが、これは素晴らしいことですが、「docker build」の出力に表示されるのは次のいずれかです。 ---> Using cache またはコマンドの出力(これはキャッシュを使用していないことを意味します)。 Dockerfileの1ステップ(COPY)の後、明らかにキャッシュを使用しません。しかし、私はそれがコピーしているフォルダで何も変わっていないことをかなり確信しています。(これは私たちのアプリケーションであり、たとえば、2回続けてデプロイする場合でも、キャッシュなしのケースに遭遇します。) Dockerに変更点を教えてもらう方法はありますか? 私はDockerがこれのタイムスタンプをチェックするために使用したことを知っていますが、それはDocker 1.8で修正され、私はここでDocker 1.9.xにいます。
15 docker 

2
AWS ECSでのCannotPullContainerError
私のAWS ECSのDocker Hubイメージのイメージ[registry-url]/[namespace]/[image]:[tag]URLを完全に理解することはできません。 Dockerクライアントを使用すると、わずかdocker run -it hendry/countです。 では、画像のDocker HubのURLは何でしょうか?

1
api-get Dockerの下の「サーバーからの読み取りエラー」
Bashで次のコマンドを実行しています。 DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && apt-get install -y build-essential git libncurses5-dev openssl \ libssl-dev fop xsltproc unixodbc-dev curl 実行されますが、途中で失敗します: Get:96 http://security.debian.org/ jessie/updates/main linux-libc-dev amd64 3.16.7-ckt9-3~deb8u1 [991 kB] Get:97 http://security.debian.org/ jessie/updates/main curl amd64 7.38.0-4+deb8u2 [200 kB] Get:98 http://security.debian.org/ jessie/updates/main openjdk-7-jre amd64 7u79-2.5.5-1~deb8u1 [176 kB] Get:99 http://http.debian.net/debian/ jessie/main libgtk2.0-0 amd64 …
14 debian  docker 

3
Dockerコンテナーのネットワークアクセスを制限する
私は、SFTP専用のDockerコンテナを作成中です。このコンテナは、独自のchrooted環境でファイルをアップロードおよび管理するためだけに複数の人が使用するコンテナです。 紙の上では、かなり安全です。bashログインのすべての形式を無効にし、その中で他のプロセスを実行しません。ただし、もう少し強化したいと思います。 このコンテナがSFTPサーバーであるという目的を除いて、このコンテナが内部からインターネットにアクセスするのを防ぎたい。 物事を明確にするために:私は外の世界が私のコンテナにアクセスするのを防ぐ方法を知っています-私は入ってくるiptablesルールを設定でき、Docker runコマンドでSFTPポートのみを公開できます。 ただし、コンテナ内で実行されたときに、次のコマンドを(例として)失敗させたいと思います。 curl google.com 私の意図は、ハッキングされたコンテナが受ける可能性のある損害を減らすことです(スパムメールの送信などに使用することはできません)。
14 ssh  security  sftp  docker 

1
Dockerコンテナーで許可されているCPUの数をカウントする
私の具体的なシナリオは次のとおりです。特定のcpusetでdockerコンテナーを起動します。 docker run --cpuset-cpus="0-2" # ... そのコンテナ内で、エントリポイントとしてシェルスクリプトを実行makeします。シェルスクリプトは、ある時点で実行されます。かなりの数の仕事(-j)がどうなるかを考えたいと思います。もちろん、割り当てられたCPUの数を環境に渡すこともできますが、自動的に検出する方法の方がはるかに望ましいでしょう。 現在のプロセスのを使用しtaskset -c -p $$たりcat /proc/self/status | grep Cpus_allowed_list取得したりできることCpus_allowedは知っていますが、許可されているCPUの実際の数を取得する方法はわかりません。これらのコマンドの出力を解析したり、Cpus_allowedマスクをいじったりすることは避けたいのですが、オプションがない場合はそれを行います。

3
結果が0で終了した場合にすべてのスーパーバイザプロセスを終了する方法
私はこのようなスーパーバイザーでドッカーコンテナーを実行します: Dockerfile CMD ["/run.sh"] run.sh #!/usr/bin/env bash exec supervisord -n supervisor-serf.conf [group:job] programs=serf,producer [program:serf] command=/start-serf-agent.sh numprocs=1 autostart=true autorestart=unexpected stopasgroup=true killasgroup=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 start-serf-agent.sh #!/bin/bash exec serf agent --join=serf:7946 -tag role=producer supervisor-servce.conf [program:producer] command=/start.sh numprocs=1 stopasgroup=true killasgroup=true stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 stderr_logfile=/dev/stderr stderr_logfile_maxbytes=0 start.sh #!/bin/bash exec /producer --project=${NAME} プロデューサーが停止した後、私は持っています: producer_1 | …

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