Docker パラメータ – 最高のパラメータ!

経験豊富なシステム管理者であれば、聞いたことがあるかもしれません。 「ドッカー」 聞いて、それが何であるかをすでに知っています。知らない人のために説明すると、Docker は、アプリケーションを分離されたコンテナーで実行できるようにするオープン ソース テクノロジーです。

Dockerパラメータとは何ですか?

Docker パラメーターは、Docker コマンドに渡される値です。この値は、環境変数の形式で指定することも、コマンド自体で直接指定することもできます。

さまざまな種類の Docker パラメータ

docker run コマンドには、ニーズに合わせてカスタマイズできるさまざまなオプションとパラメーターがあります。この中で 記事 さまざまな種類の Docker パラメータに焦点を当てます。

Docker パラメーターには、環境変数、単一のコマンド、コマンドとファイルの組み合わせの 4 つの主なタイプがあります。それぞれのタイプには独自のものがあります 利点と欠点それを考慮する必要があります。

環境変数は使いやすく、コードを変更せずに環境の特定の部分をカスタマイズできます。ただし、単純なデータ型のみを保存できるため、より複雑なアプリケーション構成には適していません。

単一コマンドを使用すると、ファイルを作成せずにコマンドを簡単に実行できます。これは、完全なアプリケーションを構築せずに特定のアクションだけを実行したい場合に便利です。ただし、個々のコマンドはスケーラブルではないため、大規模なアプリケーションには適さない可能性があります。

コマンドを組み合わせると、複数のコマンドをファイルに保存して実行できます。これは、コードを毎回変更せずに複数のアクションを実行したい場合に便利です。ただし、コマンドの組み合わせは混乱を招くことが多く、デバッグが困難です。

ファイルは、コードを保存して実行するための最も柔軟な方法です。ファイルは簡単に作成および変更できるため、あらゆる種類のアプリケーションに適しています。ただし、ファイルは多くの場合わかりにくく、デバッグが困難です。

最適な Docker パラメータ

最適な Docker パラメータ

Docker を使用する場合、さまざまなオプションを指定してコンテナーの動作を制御できます。この記事では、最も一般的に使用される最適な Docker パラメーターについて説明します。

–name: このパラメータはコンテナに名前を付けます。名前を指定しない場合は、ランダムな名前が生成されます。コンテナーを簡単に識別できるように、名前は一意である必要があります。

–detach / -d: このパラメータはコンテナをバックグラウンドで実行します。デフォルトでは、コンテナーはフォアグラウンドで実行され、コンテナーが終了するか Ctrl+C でキャンセルされるまで、コマンド ラインはブロックされたままになります。コンテナーをバックグラウンドで実行する場合は、-detach パラメーターを指定する必要があります。

–publish / -p: このパラメーターは、コンテナー ポートとホスト ポート間の接続を確立します。接続しないと外部からコンテナのポートにアクセスできなくなります。複数のポートを公開する場合は、-publish パラメーターを複数回指定できます。

–interactive / -i: このパラメーターにより、コンテナーがフォアグラウンドで実行され、コンテナーが終了するか Ctrl + C で中止されるまでコマンド ラインがブロックされなくなります。

–tty / -t: このパラメータはコンテナ内の端末をシミュレートします。このパラメーターを指定すると、コンテナーに入力してコマンドを実行できるようになります。このパラメーターが指定されていない場合、コンテナーに入力したり、コマンドを実行したりすることはできません。

–rm: このパラメータは、コンテナの終了後にコンテナを削除します。このパラメーターを指定しない場合、コンテナーはそのまま残り、後で復元できます。

–volume / -v: このパラメーターは、ホスト フォルダーとコンテナー フォルダー間の接続を作成します。接続すると、ホスト フォルダーからコンテナーにファイルをコピーしたり、その逆を行うことができます。

–workdir / -w: このパラメータはコンテナ内の作業ディレクトリを設定します。デフォルトでは、作業ディレクトリは /root に設定されます。

–user / -u: このパラメータはコンテナ内のユーザーを設定します。デフォルトでは、ユーザー root が使用されます。
これらは、使用可能な多数の Docker パラメーターのうちのほんの一部です。詳細については、Docker のドキュメントを参照してください。

–restart: このパラメータは、コンテナが終了またはクラッシュした場合に、Docker がコンテナを再起動する方法を指定します。このパラメータには、「いいえ」、「失敗時」、「常に」、「停止しない限り」というさまざまなオプションがあります。デフォルトは「no」で、コンテナが再起動されないことを意味します。 「on-failure」を指定すると、コンテナーが実行されている場合にコンテナーが再起動されます。 エラー (クラッシュなどにより) 終了します。 「常に」は、コンテナーが正常にシャットダウンされた場合でも、コンテナーが常に再起動されることを意味します。 「停止しない場合」は「常に」と似ていますが、ここではコンテナーが無人で実行されたままになるわけではありません。 「docker stop」コマンドを実行してコンテナを停止すると、コンテナは再起動しなくなります。

–hostname: 名前が示すように、このパラメータはコンテナのホスト名を設定します。デフォルトはコンテナーの名前、または -name が指定されていない場合はランダムな名前です。

–interactive または -i: このパラメーターを使用すると、実行中のコンテナーにログインして操作することができます。たとえば、コンテナ内でターミナルを起動し、コマンドを実行できます。このパラメータを指定しない場合、ログインしてコンテナと対話することはできません。

–volume または -v: このパラメーターは、ホスト フォルダーとコンテナー フォルダー間の接続を作成します。接続すると、ホスト フォルダーからコンテナーにファイルをコピーしたり、その逆を行うことができます。

Docker パラメータの長所と短所

おそらく、Docker パラメーターの最も重要な利点は、アプリケーションの柔軟性と適応性が向上することです。たとえば、特定の環境変数を特定のアプリケーションに渡すことができます。ホスト システム リソースへのアクセスもパラメータを介して制御できます。

もう 1 つの利点は、Docker パラメータを使用して特定のセキュリティ機能をアプリケーションにバインドできることです。たとえば、許可されたユーザーのみがアプリケーションにアクセスできるようにすることができます。

Docker パラメーターの欠点の 1 つは、通常、これらのパラメーターを使用できるのは開発者とシステム管理者のみであることです。通常、これらは通常のユーザーには表示されず、理解することもできません。したがって、Docker パラメーターを知らない場合、アプリケーションをカスタマイズするのは難しい場合があります。

Docker 実行リファレンス

ほとんどの Docker コマンドは、「docker」コマンドで始まり、その後にサブコマンドが続きます。 docker run は典型的なサブコマンドで、新しいコンテナーを実行するために使用されます。

docker run コマンドには、実行するコンテナーを作成および構成するために指定できるさまざまなオプションとパラメーターがあります。この記事では、docker run コマンドに最適なパラメーターを見ていきます。

オペレータ専用オプション

ほとんどのオペレータ オプションはオペレータ専用ではなく、他のユーザーも利用できます。ただし、オペレータ専用のオプションがいくつかあります。これらには次のものが含まれます。

–log-level : ログレベルを設定します。オペレータのみがこのオプションにアクセスして、インストールのログをカスタマイズできます。

–storage-opt : オペレーターがインストール用の追加のストレージ オプションを構成できるようにします。これは、オペレーターが Docker でサポートされていない特定のストレージ バックエンドを使用する場合に便利です。

–format : オペレーターが docker 情報出力の形式をカスタマイズできるようにします。これは、オペレーターが特定の形式で情報をさらに処理したい場合に役立ちます。

独立型 vs フォアグラウンド

docker run コマンドを使用してコンテナーを実行すると、コンテナーは常にフォアグラウンドで実行されます。これは、コンテナーに コンソール コンテナを停止しないとコマンドを終了できません。

コンテナをバックグラウンド (デタッチ) で実行したい場合は、「-d」パラメータを使用して実行できます。その後、コンテナーが独自のプロセスで実行され、コンソールの制御がホストに返されます。

コンテナの識別

コンテナ ID は、Docker コンテナの一意の識別子です。これは docker ps コマンドを使用して表示でき、通常は 8 文字の長さです。コンテナ ID の最初の 3 文字は、コンテナを作成したイメージの ID です。

UTS 設定 (-uts)

UTS モードは、コンテナが自身の ID を管理する方法を指定します。通常、各コンテナは独自の UID と GID を取得します。ただし、このモードは、特に複数のコンテナが同じコンテナにアクセスしている場合には、必ずしも意味があるわけではありません。 データベース または他のリソースにアクセスする必要があります。この場合、UTS モードを無効にして、すべてのコンテナーが同じ UID と GID を持つようにできます。

IPC 設定 (-ipc)

IPC 設定 (-ipc) を使用すると、コンテナ間の通信に共通領域を使用できます。これにより、2 つ以上のコンテナが同じファイルとソケットにアクセスできるようになります。 IPC 設定を指定しない場合、Docker はデフォルトの通信範囲を設定します。

ネットワーク設定

Docker には、知っておくべき便利なパラメータがいくつかあります。これらのパラメータの 1 つは –net です。このパラメータは、特定のアプリケーションに対してネットワークをどのように構成するかを決定します。

–net=host – このオプションを使用すると、コンテナがホストのネットワークに直接アクセスできるようになります。これは、コンテナがすべてのネットワーク サービスにアクセスできることを意味します (DNS、HTTP など)ホストによって提供されます。

–net=bridge – このオプションは、指定されたコンテナが他のコンテナおよびホストと通信できるようにする内部ネットワーク ブリッジ コンテナを作成します。これは、-net のデフォルトのオプションです。

–net=container: – このオプションを使用すると、同じネットワーク オプションを使用する別のコンテナにコンテナを接続できます。たとえば、同じ –net=bridge オプションを使用して 2 つのコンテナを接続し、それらを接続することができます。

–net=none – このオプションはコンテナのネットワークを無効にします。このオプションを使用するコンテナはネットワークにアクセスできないため、ネットワーク サービスを使用できません。

2 つのコンテナーが相互に通信できるようにするには、 docker network create コマンドを使用します。

$ docker network create my-network

このコマンドは、my-network という名前の新しいネットワークを作成します。コンテナーをこのネットワークに接続するには、 –net オプションを指定して docker run コマンドを使用できます。
$ docker run –net=my-network…

コンテナーを削除するには、docker rm コマンドを使用できます。

$ docker rm マイコンテナ

このコマンドは、my-container コンテナーを削除します。ネットワークを削除するには、docker network rm コマンドを使用できます。
$ docker network rm my-network

このコマンドは、my-network という名前のネットワークを削除します。

再起動ポリシー (-restart)

Docker の再起動ポリシーは、コンテナの再起動後にコンテナを再起動する方法を指定します。 エラー 再起動する必要があります。再起動オプションは次のとおりです。

–restart=no: コンテナは再起動されません。
–restart=always: コンテナーは、正常に閉じられた場合でも、常に再起動されます。
–restart=on-failure: コンテナーが実行されている場合、コンテナーは再起動されます。 エラー 終了しました。
–restart=unless-stopped: コンテナーは、docker stop コマンドを使用して手動で停止しない限り、常に再起動されます。

終了ステータス

終了ステータスは、コマンドまたは関数によって返される値で、コマンドまたは関数が正常に完了したかどうかを示します。

コマンドが終了ステータス 0 で完了した場合、通常はコマンドが成功したことを意味します。終了ステータスが異なる場合は、通常、コマンドが失敗したことを意味します。

終了ステータスを使用して、特定のエラー コードを生成することもできます。これは、特定の条件がある場合に役立ちます。 エラーを見つけて修正する 欲しい。たとえば、出口 1 を使用すると、「ファイルが見つかりません」エラーが表示されます。

クリーンアップ (-rm)

ほとんどの Docker コマンドは 1 つ以上のパラメーターを受け取ります。最も重要なものの 1 つは「-rm」です。このコマンドは、コマンドの完了後に、Docker によって作成されたすべての一時オブジェクトを確実に削除します。これにより、環境内に不要なオブジェクトが残らないことが保証されます。

セキュリティ構成

Docker を使用する場合、セキュリティ構成は非常に重要な側面です。このセクションでは、 セキュリティ Docker によって提供されました。

まず、Docker コンテナは密閉されていますが、隔離されていないことに常に注意する必要があります。これは、攻撃者が 1 つのコンテナに侵入すると、他のすべてのコンテナとホスト システムにアクセスできることを意味します。したがって、コンテナを適切に構成し、保護することが非常に重要です。

Docker セキュリティにとって最も重要なパラメータの 1 つは「-cap-add」です。このパラメーターを使用すると、特定のカーネル容量をコンテナーに渡すことができます。これにより、ホスト システムの特定の機能へのアクセスを制御できるようになり、セキュリティが向上します。たとえば、「-cap-add=NET_RAW」を使用すると、コンテナがネットワーク パケットを傍受できないようにすることができます。

もう 1 つの重要なパラメータは「-security-opt」です。このパラメータを使用すると、ホスト システムの特定の機能へのアクセスを制限できます。たとえば、「–security-opt=apparmor:unconfined」を使用すると、AppArmor がコンテナに適用されないようにすることができます。これにより、攻撃者は AppArmor による制限がなくなるため、大きな利点が得られます。

もう 1 つの非常に重要なパラメータは、SELinux の「-label」パラメータです。このパラメータを使用すると、ホスト システムの特定の機能へのアクセスを制御できます。たとえば、「-label=type:」の場合:
「container_runtime_t」により、Docker がコンテナに SELinux を適用しないようにします。これにより、攻撃者は SELinux による制限を受けなくなるため、大きな利点が得られます。

最後の重要なパラメータは「-privileged」です。このパラメータを使用すると、ホスト システムのすべての機能にアクセスできるようになります。これは非常に危険なので、絶対に必要な場合にのみ使用してください。

今日はここまでです!この記事がお役に立てば幸いです 基本 Dockerを理解するために。

初期化プロセスを指定する

Docker デーモンは、指定された init プロセスを引数として受け取ります。このプロセスは、コンテナー内で実行される最初のプロセスです。 init プロセスが指定されていない場合は、デフォルトの init プロセス init が使用されます。

指定された init プロセスは、コンテナー内で 1 つのプロセスのみが実行されていることを保証する必要があります。複数のプロセスが実行されている場合、予期しないエラーが発生する可能性があります。指定された init プロセスは、コンテナーの終了時にコンテナーが適切にシャットダウンすることも保証する必要があります。

カスタム cgroup の指定

アプリケーションにカスタムの cgroup メモリ制限を設定したい場合は、-cgroup-memory フラグを使用して設定できます。たとえば、制限を 512MB に設定する場合は、次のようにします。

–cgroup-memory=”512m”

カスタムを設定するにはどうすればよいですか DNS 私のコンテナのサーバー?

カスタムDNSがある場合 、これはアプリケーション仕様ファイルまたは dcosmarathon app add コマンドで設定できます。この例は、DNS を設定する方法を示しています アプリケーション仕様ファイルを使用して:

{ "id": "/my-service", 「DNS」: { "ネームサーバー": [ "10.0.0.1" ] } }

この例は、DNS を設定する方法を示しています dcosマラソンアプリの追加コマンドを使用します。
$ dcos マラソン アプリ add { "id": "/my-service", 「DNS」: { "ネームサーバー": [ "10.0.0.1" ] } }

詳細については DNS、マラソンのドキュメントの DNS 設定を参照してください。

カスタムを設定するにはどうすればよいですか seaRchの ドメイン 私のコンテナ用ですか?

カスタムがある場合 seaRchの ドメイン、これはアプリケーション仕様ファイルまたは dcosmarathon app add コマンドで設定できます。この例では、 seaアプリケーション仕様ファイルを使用した rch ドメイン:

{ "id": "/my-service", 「DNS」: {“search”: [ “.example.com” ] } }

この例では、 seadcosマラソンアプリ追加コマンドを使用したrchドメイン:$ dcosマラソンアプリ追加{ "id": "/my-service", "dns": { "search”: [ “.example.com” ] } }

DNS の詳細については、Marathon ドキュメントの「DNS 設定」を参照してください。

コンテナーのカスタム ネットワークを構成するにはどうすればよいですか?

カスタム ネットワークがある場合は、アプリケーション仕様ファイルまたは dcosmarathon app add コマンドでこれを設定できます。次の例は、アプリケーション仕様ファイルを使用してネットワークを設定する方法を示しています。

{ "id": "/my-service", "ネットワーク": [ { "モード": "コンテナ/ブリッジ" } ] }

次の例は、dcosmarathon app add コマンドを使用してネットワークを設定する方法を示しています。
$ dcos マラソン アプリ add { "id": "/my-service", "networks": [ { "mode": "container/bridge" } ] }
ネットワークの詳細については、Marathon ドキュメントの「ネットワーク」を参照してください。

リソースに対する実行時の制約

「リソースの実行時制約」は、実行中のコンテナーのリソース管理を制御する Docker パラメーターです。このパラメータを使用すると、コンテナの CPU 使用率、メモリ フットプリント、およびファイル システムを制限できます。

ユーザーメモリの制約

ほとんどの Docker パラメータはメイン メモリの管理専用です。これは主にコンテナとイメージを実行するために使用されます。ネットワーク構成などの他のパラメータもあります 資源 ヴェラントワートリッヒ・シンド。

Docker のメイン メモリは非常に限られています。したがって、コンテナーまたはイメージを作成する場合は、これらのパラメーターを指定する必要があります。そうしないと、パフォーマンスの問題やイメージのダウンロード エラーが発生する可能性があります。

コンテナーのストレージ容量を増やしたい場合は、次のコマンドを実行できます。

docker run -it –memory=”4g” ubuntu /bin/bash

このコマンドは、4GB の RAM を備えた新しいコンテナーを作成します。さらに多くのメモリが必要な場合は、それに応じて値を増やすことができます。

あるいは、次のコマンドを実行して、より多くのメモリを備えたイメージを作成することもできます。

docker build –memory=”4g” -t my_image 。

このコマンドは、4 GB の RAM を備えた新しいイメージを作成します。さらに多くのメモリが必要な場合は、それに応じて値を増やすことができます。

カーネルメモリの制約

カーネル メモリの制約は、Docker にとって重要なパラメータです。これらは、コンテナーが使用できるカーネル メモリの量を決定します。このパラメータの値を指定しない場合は、デフォルト値が使用されます。

カーネル メモリ パラメータの値を調整する場合は、まず現在の値を見つける必要があります。これは「docker info」コマンドを使用して実行できます。その後、必要な新しい値を指定できます。

このパラメータを変更すると、コンテナの再起動が必要になる場合があることに注意してください。

スワピネス制約

スワップネス設定は、システムがメモリの内容をスワップ領域に書き込む頻度を決定する 0 ~ 100 の値です。スワップネスの値が高いと、スワップがより頻繁に発生することを意味し、その逆も同様です。デフォルトは 60 です。 データベース メモリができるだけ長くメモリ内に留まるようにするには、通常、スワップ性を低くすることをお勧めします。

CPU シェアの制約

CPU 使用率シェアは、コンテナーが指定された数を超えるコアを使用しないようにするために Docker が使用する Linux カーネルに組み込まれた構造です。これは、コンテナとホスト間の分離だけでなく、システム全体の信頼性にとっても重要です。

CPUセットの制約

CPUset 制約は、コンテナーが使用できる CPU の数に制限を設けます。これは、コンテナがホスト システム上の他のコンテナと干渉しないようにするのに役立ちます。

CPU クォータの制約

CPU クォータ制限 (cgroup_cpu_shares) は、異なるプロセス間の CPU 使用量を制限できる Linux カーネル機能です。このパラメーターは、Docker で「-cpu-shares」コマンドを使用して指定できます。

たとえば、値 512 を指定すると、コンテナーは値 256 のコンテナーの XNUMX 倍の CPU 時間を受け取ります。 したがって、高い値を指定しても、必ずしもコンテナーが受け取る CPU 時間が増えることを意味するわけではありませんが、あくまで相対的なものです。他のコンテナはより低い値を持ちます。

ブロック IO 帯域幅 (Blkio) 制約

ブロック IO 帯域幅スロットルは、コンテナーの I/O スループットの帯域幅を制限できるツールです。これは、コンテナがホスト上の他のコンテナに過負荷をかけないようにするのに役立ちます。ブロック IO 帯域幅は 1 秒あたりのバイト数で測定され、すべてのデバイスまたは特定のデバイスに設定できます。

–blkio-weight

blkio 重みは、コンテナーがシステム全体から受け取る I/O 帯域幅の量を示します。たとえば、値 100 を指定すると、コンテナはデフォルト値 50 の別のコンテナと比較して XNUMX 倍の I/O 帯域幅を受け取ります。このパラメータは、特定のコンテナが最適なパフォーマンスを達成できるようにする場合に役立ちます。

追加のグループ

単一のコンテナーで複数のサービスを実行する場合は、追加のグループを作成できます。これは、たとえば、Web サーバーとデータベース サーバーを単一のコンテナーで実行する場合に便利です。追加のグループを作成するには、 docker run コマンドにコマンド –group-add を追加します。

実行時権限と Linux 機能

「実行時権限」は、実行時に特定の権限を変更できるようにする Linux のコア機能です。これは、アプリケーションの起動または実行にさまざまな権限が必要な場合に特に便利です。

この機能は「sudo」コマンドで利用できます。例: sudo chmod 777 /path/to/file。このコマンドにより、すべてのユーザーに指定されたファイルへの完全なアクセス権が与えられます。
ただし、sudo 関数にはいくつかの制限があります。たとえば、ユーザーはまだ持っていない権限を変更することはできません。これは、ユーザーが持つべきではないアクセス許可を想定することを防ぐためのセキュリティ予防措置です。

sudo 関数のもう 1 つの欠点は、コマンドごとに関数を再実行する必要があることです。ユーザーが異なる権限でコマンドを頻繁に実行する必要がある場合、これは非常に面倒になる可能性があります。

Linux Capabilities は、特定の権限を設定できるようにする Linux カーネルの拡張機能です。 プログラム および割り当てるアプリケーション。これにより、ユーザーはプログラムまたはアプリケーションの権限を設定し、必要に応じてそれらの権限を変更できるようになります。

sudo 関数よりもはるかに柔軟な Linux 機能を使用すると、ユーザーはプログラムまたはアプリケーションの権限を微調整できます。たとえば、Linux 機能を持つユーザーは、プログラムが読み取りとしてのみファイルにアクセスできるようにアクセス許可を設定できます。これは、プログラムがファイルに変更を加えないようにするのに非常に役立ちます。

Linux Capabilities は、sudo 関数よりもはるかにユーザーフレンドリーです。 Linux 機能を使用すると、すべてのコマンドに権限を設定する必要はありません。プログラムまたはアプリケーションをインストールするだけで、そのプログラムまたはアプリケーションのアクセス許可を設定できます。

ロギングドライバー (-log-driver)

Docker イメージを構築するときに、使用するログ ドライバーを指定できます。デフォルトのロギングドライバーは「json-file」です。ただし、他にもさまざまなオプションがあります。例としては、syslog、journald、fluentd などがあります。

「-log-driver」パラメータを使用してログドライバを指定できます。たとえば、syslog ロギング ドライバーを使用したい場合は、次のように実行できます。

docker run –log-driver=syslog…

このパラメータは、コンテナのログを集中ログ システムに保存する場合に非常に便利です。

Dockerfile イメージのデフォルトをオーバーライドする

新しい Docker イメージを作成するときに、そのイメージのデフォルト設定をオーバーライドできます。これは、イメージ全体を再構築せずに特定の設定を変更する場合に便利です。たとえば、イメージ全体を再構築せずに、新しいイメージのデフォルトのユーザー名を変更できます。

新しい Docker イメージのデフォルト値を変更するには、まずプロジェクト ディレクトリに「.dockerignore」というファイルを作成する必要があります。このファイルでは、イメージの作成時に無視するすべてのディレクトリとファイルを指定する必要があります。このファイルを作成したら、次のコマンドを実行してイメージを作成できます。

docker build -t your_image_name 。
このコマンドは、「your_image_name」という名前の新しい Docker イメージを作成し、デフォルトで定義されている値を上書きします。

Fazit

最適な Docker パラメーターは、ニーズによって大きく異なります。この記事では、ほとんどのユースケースに関連する最も重要なパラメーターのいくつかを紹介しました。もちろん、この記事で説明されていない他にも多くの優れたオプションがあります。時間をかけてすべてのオプションを調査し、どれが自分にとって最適かを確認してください。

注意..は重要!

このウェブサイト上でリンクされているすべての外部サイトは独立した情報源です。 
これらのリンクにはスポンサーは付いておらず、リンクを含めるために金銭的な寄付も受けていません。 
このウェブサイト上のすべての情報は無保証で提供されます。
このサイトは、による個人プロジェクトです。 Jan Domke 個人的な意見や経験のみを反映しています。

Jan Domke

プロンプトエンジニア |ソーシャルメディアマネージャー |ホスティングマネージャー |ウェブ管理者

2021年末からオンラインマガジンを個人運営しています SEO4Business こうして私の仕事は趣味に変わりました。
2019年から社員として働いています Senior Hosting Manager、ドイツ最大のインターネットおよびマーケティング代理店の 1 つで、常に視野を広げています。

Jan Domke