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

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

4
Kubernetesは常に503サービスを提供しますが、複数のTLS Ingressでは一時的に利用できません
Amazon Web Servicesでkopsによってkubernetesクラスターをセットアップしています 2つのサイトを設定しています。1つはSSL / TLS / httpsで保護され、もう1つはhttpのみです。どちらもWordpressサイトです。サイトIDを保護するためにドメインが変更されました 入力構成: apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-rules spec: tls: - hosts: - site1.com secretName: site1-tls-secret - hosts: - www.site1.com secretName: site1-tls-secret rules: - host: site1.com http: paths: - path: / backend: serviceName: site1 servicePort: 80 - host: www.site1.com http: paths: - …

1
Docker swarmモードでプライベート物理ネットワークを使用する
私は、スウォームモードでDockerを使用した運用セットアップに取り組んでいます(Docker 17.03.1-ceを使用)。2つのデータセンターが関与します。両方のデータセンターでは、すべてのマシンがプライベートネットワーク上にパブリックIPとプライベート(データセンターのローカル)IPの両方を持っているため、2つのプライベートネットワークがあります。 プライベートネットワークインターフェイスを介したネットワークトラフィックは無料ですが、パブリックインターフェイスを介したトラフィックは一定の制限を超えていないため(低速です)、可能であれば、プライベートトラフィックを介してネットワークトラフィックを使用することをお勧めします。 今私が理解していることから(私は思う)、スウォームモードのDockerノード間のすべてのトラフィックは、スウォームマスターとの通信に使用される同じネットワークインターフェースを通過しますが、私の場合はマルチDCネットワーキングを作成するためにパブリックのものでなければなりません可能。ただし、最も予想されるトラフィックは同じDC内のノード間であり、ソースノードとターゲットノードが同じプライベートネットワーク上にある場合、Dockerが何らかの方法でプライベートネットワークを経由してトラフィックをルーティングできれば非常に便利です。 群れのマスターはこれらのプライベートネットワークとノードが持っているIPを知らないので、これはすぐには使えないかもしれません。 私が考えられる解決策の1つは、VPNをセットアップし、その上にswarmを展開することですが、これにより複雑さが増し、純粋なDocker swarmソリューションが好まれます。 更新:コメントで示唆されているように、ソリューションの基礎は、iptablesを使用して発信トラフィックをパブリックIPではなくプライベートIPにルーティングすることです。ただし、これを実行する場合、次の問題は、これらすべてのルールを管理する方法です。DCに10台のサーバーがある場合、すべての可能なローカルトラフィックをプライベートネットワーク経由でルーティングするには、10 * 9 = 90台が必要です。そのようなタスクを支援するツールが存在するか、作成できるツールがあると想像できますが、もっと簡単な方法があるかもしれません。

2
Dockerの下のChrome:CAP_SYS_ADMIN対特権?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、話題のサーバー障害のため。 9か月前に閉鎖されました。 テスト環境のDocker内でchromedriver + chromeを実行しています。 最新のCoreOSアップグレードまで、すべてが正常に機能していました。 動作しているように見えるバージョンは次のとおりです。 VERSION=1185.5.0 VERSION_ID=1185.5.0 BUILD_ID=2016-12-07-0937 そして、これはchromeをコアダンプさせる新しいバージョンです: VERSION=1235.4.0 VERSION_ID=1235.4.0 BUILD_ID=2017-01-04-0450 変更を見ると、dockerが1.11.xから1.12.xにアップグレードされたようで、これによりsetns()コンテナー内の呼び出しが中断されました。setns()Chromeは名前空間を作成するために使用されます。 これは出力例です: jsosic-coreos-test-20161207 ~ # docker --version Docker version 1.11.2, build bac3bae このボックスの1つのコンテナ内から: [root@2939f21ecfaa /]# /opt/google/chrome/google-chrome [57:57:0107/015130:ERROR:browser_main_loop.cc(261)] Gtk: cannot open display: これは新しいバージョンがそれを壊した方法です: jsosic-coreos-test-2017-01-04 ~ # docker --version Docker version 1.12.3, build 34a2ead [root@13ab34c36c82 /]# …

3
docker、alpine、およびmatplotlib
現在、アルパインを使用してドッカー画像の1つを縮小しようとしています: FROM python:2.7-alpine ただし、matplotlib.hをインストールするpipの問題があります。 EOF warning: no previously-included files matching '*.pyo' found anywhere in distribution warning: no previously-included files matching '*.pyd' found anywhere in distribution numpy/core/src/multiarray/numpyos.c:18:21: fatal error: xlocale.h: No such file or directory compilation terminated. numpy/core/src/multiarray/numpyos.c:18:21: fatal error: xlocale.h: No such file or directory compilation terminated. Traceback (most recent …
11 python  docker 

5
Docker-nginxとphp-fpmを別々にスケーリングする
私はdockerとdocker-composeをいじくり回してきましたが、質問があります。 現在、私のdocker-compose.ymlは次のようになっています。 app: image: myname/php-app volumes: - /var/www environment: <SYMFONY_ENVIRONMENT>: dev web: image: myname/nginx ports: - 80 links: - app volumes_from: - app アプリには、ポート9000のphp-fpmとアプリケーションコードが含まれています。Webはnginxであり、設定は数ビットです。 これは、nginxをphp-fpmに接続するために私がそれを期待する方法を機能します:私はこの行を持っています: fastcgi_pass app:9000; これを効果的にスケーリングするにはどうすればよいですか?たとえば、1つのnginxコンテナを実行し、3つのアプリコンテナを実行したい場合、3つのphp-fpmインスタンスがすべてポート9000でリッスンしようとします。 php-fpmの各インスタンスを異なるポートに配置し、どの時点でもnginx構成のどこにあるのかを知るにはどうすればよいですか? 私は間違ったアプローチを取っていますか? ありがとう!
11 nginx  php  php-fpm  docker 

2
複数のdockerコンテナーのIAMセキュリティ認証情報の管理
プレーンなEC2環境内では、IAMロールと認証情報(インスタンスのメタデータから自動的に取得される)を使用して、他のAWSリソースへのアクセスを管理するのは非常に簡単です。CloudFormationを使用するとさらに簡単になり、特定のアプリケーションロールをインスタンスに割り当てると、その場でロールを作成できます。 Dockerに移行し、Mマシンとその上で実行されるNアプリケーションがあるようなM-to-N展開を行う場合、アプリケーションごとのAWSリソースへのアクセスを制限するにはどうすればよいですか?インスタンスのメタデータにはホスト上の誰でもアクセスできるため、すべてのアプリケーションが同じデプロイメント環境内の他のすべてのアプリケーションのデータを表示/変更できるようにします。 そのような環境で実行されているアプリケーションコンテナにセキュリティ資格情報を提供するためのベストプラクティスは何ですか?

2
更新後にDockerデーモンが「404ページが見つかりません」と応答する
最近、ドッカーを1.4から1.5に更新しました(パッケージを使用lxc_docker)。 それ以来、dockerデーモンは次のようなエラーを送信します(すべてのコマンドに対して): $ docker version Client version: 1.5.0 Client API version: 1.17 Go version (client): go1.4.1 Git commit (client): a8a31ef OS/Arch (client): linux/amd64 FATA[0000] Error response from daemon: 404 page not found しかし、以前のバージョンのクライアントを使用する場合、私は良い答えを得る: $ /usr/bin/docker-old version Client version: 1.4.0 Client API version: 1.16 Go version (client): go1.3.3 Git commit (client): …

1
Docker Swarmモードのすべてのノードからコンテナーを一覧表示する
いくつかのノードでスウォークモードでDockerを実行しています。 マネージャーノードから、スウォーム内のすべてのコンテナー(できればステータス付き)を一覧表示する迅速かつ簡単な方法が見つかりませんでした。オーバーレイネットワークと、これらのネットワークに接続されているローカルで実行されているコンテナ、サービスも表示されますが、コンテナの詳細などは表示されません。 それはすでに利用可能なものですか、それともREST APIを使用する唯一の利用可能なオプションですか?(ただし、必要なすべての情報がそこにあるかどうかはわかりません)

3
スクリプトからdockerコンテナーにrootパスワードを設定するにはどうすればよいですか?
ホストで実行され、Dockerコンテナーを作成/開始/停止するスクリプトがあります。コンテナ内のrootユーザーのパスワードを変更するスクリプトが欲しいのですが。 コンテナーはsshサーバーなので、私は試してみました: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root' しかし、それは機能しません。先に進み、デバッグに時間をかける前に、よりスマートな方法があるかどうかを知りたいと思います。 適切な「ドッカーの方法」は、Dockerfileによって実行されるスクリプトを作成することであることを理解しています。このスクリプトは、共有ボリュームからパスワードをプルし、それをルートパスワードとして設定します。これは複雑に聞こえますが、私はそれを行う方法を知っており、私が使用する別のDockerイメージでうまく機能します。しかし、私はこれのためにそれをしたくありません。 Dockerまたはsshを使用して非対話的にユーザーのパスワードを変更するコマンドが必要です。
11 ssh  bash  docker  passwd 

1
Dockerコンテナーがホストトンネルインターフェース上のOpenVPNクライアントに接続することを許可する
私は次の設定をしています: Dockerサービスを実行しているCentOSホスト ユーザー定義のドッカーブリッジネットワーク そのユーザー定義のブリッジネットワークに接続された2つのDockerコンテナー OpenVPNインストール(現在ホスト上で実行されています。Dockerコンテナーでも実行できます) OpenVPNに接続されている一部のクライアント docker bridgeネットワーク上のdockerコンテナーがtun0ネットワーク上のopenvpnクライアントと通信できるようにするにはどうすればよいですか? docker1(10.10.0.3)とvpn(172.19.0.xの範囲)に接続されたクライアントとの間のtcpベースの通信を透過的に行えるようにしたいと思います。 docker(networking / iptables / ...)側とホスト(iptables?)で何をセットアップする必要がありますか?
11 openvpn  docker 

1
DockerコンテナーからのIPv6接続なし
dockerでIPv6を有効にすると深刻な問題が発生します。 環境 ホストはDebian Jessieを実行しています。 これは仮想サーバー(KVM)です。 eth0は、w:xy:z :: / 64のようなネットワークで静的に構成されたアドレスw:x:y:z :: 1を持っています。これは、私のホスティング会社によってmyに割り当てられています。 私のホストはIPv6を問題なく使用できます。外界へのpingは機能し、コンテナー(ホストにバインドされたポート80)で実行されているWebサイトはipv6を介してアクセスできます。 問題 しかし、コンテナの中から外の世界にアクセスすることはできません!以下のパラメーターでdockerを再起動した後、私のdocker0ブリッジにIPv6アドレスがありません。ルートもゲートウェイもありません(ipv6アドレスがなければ意味がありません)。 私のDockerセットアップ:DockerはDOCKER_OPTSのこれらのパラメーターで開始されます DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ipv6 --fixed-cidr-v6=w:x:y:z:a::/80" 一部のipv6ホスト構成パラメーター: net.ipv6.conf.all.forwarding = 1 net.ipv6.conf.default.forwarding = 1 これが私が自分で作成したネットワークの1つです。 root@wopr:~# docker network inspect wopr6 [ { "Name": "wopr6", "Id": "ddc192d4af2a8edc809975e84cf3e4cb82c24d4cfe970dd8e3fc7d6ff31e20ee", "Scope": "local", "Driver": "bridge", "EnableIPv6": true, "IPAM": { "Driver": "default", …

3
Docker-ルートのcrontabなし
私のDockerfileは正しくビルドされているように見えます(そのように指示されています)。コンテナを実行すると、次のエラーメッセージが表示されます。CMDサービスのディレクトリを使用して、または使用せずにコマンド()を実行してみました。 crontab.sh基本的には、cronスケジュールをテキストファイル(cron.jobs)に書き込み、そのテキストファイルをcrontabにインポートします。 Dockerfile: FROM node:0.10 MAINTAINER Tom VOLUME /var/log/ RUN mkdir /pulse ADD . /pulse WORKDIR /pulse RUN apt-get update && apt-get install -y cron ADD *.sh /pulse/ RUN chmod 750 /pulse/crontab.sh && chmod 750 /pulse/ RUN chmod 644 /etc/crontab CMD cron -f CMD touch /var/log/cron.log && sh /pulse/crontab.sh && …
10 cron  docker 

3
Debian / IPv6:デフォルトルートは1800秒後に期限切れになり、接続が失われます
私はvServerでDebian 8を実行しています。DockerをインストールしてIPv6を有効にした後、何か奇妙なことに気付きました。dockerがこれと関係があるかどうかはわかりませんが、インストール後にこの問題に気付いただけです。 デフォルトルートは、caの後に期限切れになるように構成されています。1800秒。このタイムアウトの後、私は実際に消えます。これは私が(明らかに)IPv6接続を失ったときです。 root@wopr:~# ip -6 route xxxx:yyyy:zzz:xxxx::/64 dev eth0 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 fe80::/64 dev br-5c1ce68ea951 proto kernel metric 256 fe80::/64 dev br-61f6bbfdbe87 proto kernel metric 256 [a lot more routed for my docker containers] default via fe80::1 dev eth0 proto ra …

2
ホスト名でssh接続をdockerコンテナーに転送する
私は非常に特殊な状況に陥っています。これを行う方法は他にもありますが、これに夢中になり、次のように正確に行う方法を見つけたいと思います。 バックグラウンド サーバーがいくつかのサービスを実行していて、分離されたDockerコンテナーに隠れているとします。これらのサービスのほとんどはhttpであるため、nginxプロキシを使用して各サービスに特定のサブドメインを公開しています。たとえば、ノードサーバーは、ポートがホスト上に80バインドさ127.0.0.1:8000れたDockerコンテナーで実行されています。私はそのプロキシすべての要求にnginxのでバーチャルホストを作成しますmyapp.mydomain.comしますhttp://127.0.0.1:8000。このようにして、を介して以外から外部からDockerコンテナーにアクセスすることはできませんmyapp.mydomain.com。 ここで、gogsコンテナーを指すような方法でgogs Dockerコンテナーを開始したいと思いgogs.mydomain.comます。ホストでバインドされたポートでこのgogsコンテナを開始します。そして、要求にプロキシnginxのサイトに、それがうまく機能し...8000127.0.0.1:8001gogs.mydomain.comhttp://127.0.0.1:8001 しかし、gogsはgitコンテナーなので、経由でリポジトリにアクセスしたいのgit@gogs.mydomain.com:org/repoですが、現在の設定では機能しません。その作業を行う1つの方法22は、コンテナーのポート0.0.0.0:8022をホストのポートにバインドすることですgit@gogs.mydomain.com:8022/repo。その場合、git ssh urlは次のようになります。 (それはうまくいかないようです。そのようなuriでオリジンにプッシュすると、git gitはgogs.mydomain.com-ではなく-のユーザーのパスワードを要求しますgogs.mydomain.com:8022が、それはおそらく私が間違っていることであり、この質問の範囲外です私もその診断をお願いします) 問題 私の主な懸念は、<gogs container>:22nginxを使用してhttpポートをプロキシするのと同じように、sshポートをプロキシ化することです。つまりgogs.mydomain.com、コンテナのポートに渡されるssh接続22。すでにホストでsshdが実行されているため、コンテナーのsshポートをホストのsshポートにバインドできません。また、これは、接続*.mydomain.comがコンテナのsshdに渡されることを意味します。 にssh接続したい: mydomain.com host.mydomain.com または受け入れられ、ホスト上のsshdに転送されるmydomainのIPアドレス gogs.mydomain.comまたはgit.mydomain.comgogsコンテナのsshdに渡されたものを受け入れる *.mydomain.com(*上記の可能性以外のものはどこですか)拒否されます httpの場合、nginxを使用して簡単に機能させることができます。SSHでそれを行う方法はありますか? (また、外に出て尋ねたいと思います:一般的にTCPサービスでそれを達成する方法はありますか?) ここで私がやろうとしている方法についての洞察も歓迎します。私がやろうとしていることがまったくばかげていると言われてもかまわない。 私がすでに頭に浮かんだこと: たぶん私はホスト上のsshdソケットをコンテナとしてroボリュームとして共有できますか?これは、コンテナ内のsshdがへのすべての接続を取得できることを意味し*.mydomain.comます。または以外のすべての接続をコンテナ内のsshdに拒否させる方法はありますgogs.mydomain.comかgit.mydomain.com?ただし、ホスト上のsshdは、*.mydomain.comとにかくすべての接続を取得しgogs.mydomain.comます。ですから対立が起こります わからないけど、実際に試したことはありません。必要があります私はそれを試してみてください?

4
Amazon Elastic Container RegistryをJenkinsと統合する
Amazonの新しいElastic Container Registry(ECR)をJenkinsビルドサービスと統合しようとしています。Cloudbees Docker Build&Publishプラグインを使用してコンテナーイメージをビルドし、それらをレジストリに公開しています。 プライベートレジストリの代わりにECRを使用するために、実行aws --region us-east-1 ecr get-loginするdocker loginコマンドを実行するAWS CLIコマンドを実行しましたが、パスワードをコピーし、そのパスワードから「ユーザー名とパスワード」タイプのJenkins認証情報を作成しました(ユーザー名は常に「AWS」)。 そしてそれはうまくいきます!問題は、AWS CLIによって生成されるECRパスワードが12時間のみ有効であることです。現在、1日2回手動でパスワードを再生成し、Jenkinsの認証情報画面を手動で更新する必要があります。そうしないと、ビルドが失敗します。 永続的なECRログイントークンを生成する方法、またはトークンの生成を何らかの方法で自動化する方法はありますか?

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