(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

DevOps-Docker

【RHEL/Docker】yumコマンドでdockerデーモンをインストールする

はじめに Red Hat Enterprise Linux ServerにてDockerデーモンを動かす際の手順とログを記載しました。 尚、yumを利用しますがオフラインの場合は以下のように別サーバを介して行う必要があります。 環境情報 NAME="Red Hat Enterprise Linux Server" VERSIO…

【Lift&Shift】オンプレミスのアプリケーションをコンテナ化する流れ

はじめに オンプレミス(非クラウド)のシステムをそのままクラウドに乗せる流れをリフト(Lift)、アーキテクチャの変更を加える流れをシフト(Shift)と言ったりしますが本記事ではその流れを参考程度に解説しました。尚、シフトとリフトの意味は以下。 コ…

【Docker/RHEL】コンテナをsystemctlで自動起動化する方法

はじめに Podmanではpodman generate systemdでsystemdユニットファイルを生成ができますが、同じようにdockerでも手動でファイルを作成すればsystemctlでコンテナを操作できます。本記事ではRHELにて特定コンテナを自動起動するための手順をメモしました。…

【Docker】ファイルをコンテナにマウントする際の注意点

事象 コンテナに以下のようにファイルをマウントしようと起動するも # docker run -it -v test.txt:/tmp/test.txt ubuntu /bin/shコンテナ内ではディレクトリができている。 # ls -l /tmp total 4 drwxr-xr-x 18 root root xx test.txt 環境情報 Docker vers…

DockerDesktopをUpgrade時にWSL2を求められる事象

事象 DockerDesktopのアップデート時に以下メッセージが出る。 WSL 2 installation is incomplete The WSL 2 Linux kernel is now installed using a separate MSI update package. Please click the link and follow the instructions to install the kerne…

【Docker】プライベートレジストリを最小限の設定で利用する

はじめに ローカル環境にコンテナ用のプライベートレジストリを立ててPush操作の検証を行った際の動作確認メモを記しておきます。 尚、環境としてはdockerインストール済のLinux仮想マシンの上でレジストリを起動しました。 環境情報 RedHat Enterprise Linu…

【Linux】Failed to start Docker Application Container Engineでdocker.serviceが起動しない

事象 DockerEngineの起動に失敗している。 # systemctl status docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: failed (Result: start-limit) …

【Docker/Linux】CAP_NET_RAWを無効にしてコンテナを起動する

はじめに 「CAP_NET_RAW」というケーパビリティがありますが、セキュリティを考慮してコンテナ起動時に削除することができます。 このケーパビリティは「RAWソケットとPACKETソケットの使用を許可」を司っていいて、任意のパケットの送受信を行うために必要…

【Docker】pids-limitをかけたコンテナでプロセス数上限を超過させる

はじめに コンテナ内のプロセス数の上限を制限するdocker runのオプション--pids-limitを利用するハンズオンです。 --pids-limit int Tune container pids limit (set -1 for unlimited)個人利用では指定することはないと思いますが、本番システムのコンテナ…

【Docker】Outside of Dockerでコンテナ内からコンテナを操作する

はじめに コンテナからホスト上のコンテナを操作する「Docker Outdide of Docker」という手法を実際に利用した結果をまとめました。 環境情報 Debian GNU/Linux 9 Docker Version:19.03.5 コンテナ内でDockerコマンドを利用する コンテナ内でDockerコマンド…

【Docker】複数バージョンのイメージを取得する

やりたいこと docker pull IMAGE_NAMEでlatestのタグが付いたイメージが入手できるが、最新のイメージではなく古いイメージを入手したい。 環境情報 Docker Version:19.03.5 やり方 --all-tags=trueを付与する。 $ docker pull --all-tags=true IMAGE_NAME以…

【Docker】デバッグツールを持ったSideCarを別コンテナにつける方法

やりたいこと 例えば以下のようなnetstatコマンドが打てないコンテナにて > docker run -t -i ubuntu root@652f2bab700c:/# netstat bash: netstat: command not found同コマンドが打てるようにする。 環境情報 Docker Version:19.03.5 やり方 接続したいコ…

【Docker】execでコマンド実行するユーザを変更する

やりたいこと 例えば以下のようにdb2コンテナにログインするとrootコマンドとなるが > docker exec -it db2 /bin/bash [root@62959d1446c6 /]#db2inst1ユーザで接続したい。 環境情報 > docker --version Docker version 19.03.5, build 633a0ea やり方 --us…

【Docker】コンテナイメージをアイランド環境に持ち込み起動する

はじめに インターネットに接続していない環境、いわゆるアイランド環境にてコンテナイメージを展開する方法を説明します。流れとしてはインターネットに接続している環境にてイメージをpullし、そのイメージをtarに固めて持ち込んで利用します。 環境情報 D…

【Docker】docker runコマンドのPオプションとpオプションの違い

はじめに dockerコマンドのハンズオンにてnginxはよく利用されますが、コンテナ起動時のオプションにてPオプションやpオプションの付与が求められることがあります。本記事では初学者の方に向けて簡単なハンズオンとp/Pオプションがないと何が困るのかについ…

【Docker】コンテナの停止と削除を同時に行う

やりたいこと 起動中コンテナをdocker stop→docker rmではなく一文で消したい。 やり方 rm -fにて削除する。 > docker rm -f d12efd253e60 d12efd253e60以下、補足です。 補足 停止済みのコンテナを一気に消す方法は以下記事で解説しましたが 今回は起動中の…

【Windows】DockerDesktop2.2をインスール&起動する

はじめに DockerToolboxの後継ツールである「DockerDesktop」をWindows端末にインストールしました。 Hyper-Vを有効化する必要がありますが、本記事ではそれらのインストールと簡単な動作検証を行いました。 環境情報 Windows 10 Enterprise Docker Desktop …

ストレージ容量を圧迫しているdocker不要ファイルを削除する

事象 GoogleCloudPlatformにて利用しているマシンにて容量が逼迫しつつある root@instance-1:~# df ... /dev/sda1 10253588 8052492 1660528 83% / ... 原因 du -h --max-depth=1 PATHにて調査する。rootディレクトリ直下 # du -h --max-depth=1 / ... 2.6G …

【Docker入門】Overlayfsによる複数層の重ね合わせハンズオン

はじめに 以下の記事にてDockerで利用される基盤技術を簡単に紹介しましたが 今回はコンテナ技術で採用される「overlayfs」というファイルシステムについて実際にコマンド発行しながら解説します。 Overlayfsハンズオン 以下のように二つのディレクトリを作…

ミルクボーイのネタ風にDockerを紹介する

好きな技術? DevOps界隈で注目? 利用に敷居が高い? 起動速度が速い? 基幹システムでの利用? 憧れ? 勉強は不要? 画面いっぱいのコンテナ でも... 終わりに 好きな技術? ボケ「うちのオカンがね、好きな技術があるらしいんやけど、その名前をちょっと…

【Docker】MultiStageBuildを用いたDockerfileによるイメージ作成

はじめに 以下の記事にてコンテナイメージを作成する手法の一つとしてDockerfileを利用する方法について説明しました。 今回は、従来のDockerfileを利用した手法からDockerイメージのサイズを削減する機能であるmulti-stage buildについて解説します。主にラ…

【Docker】runCによる脆弱性ってなに?

はじめに Dockerを語る上でセキュリティは気になるポイントですがCVE-2019-5736と呼ばれる脆弱性が報告されたことがありました。現在は既に修正版がリリースされていますが、昔話としてどのような話だったのかを簡単に解説します。 何が問題? この問題は「r…

【Docker入門】CGROUPによるプロセスリソースの管理

はじめに Dockerを始めとしたコンテナ型仮想化を、技術として捉えた際に出てくる用語に「Namespace」と「CGROUP」があります。 Dockerとは? 本記事ではCGROUPとはなんぞや?といった層を対象に、分かりやすく説明してみました。 このあたりを抑えてなくても…

【Docker入門】Namespaceによる名前空間の分離

はじめに Dockerを始めとしたコンテナ型仮想化を技術として捉えた際に出てくる用語に「Namespace」と「CGROUP」があります。 Dockerとは? 本記事ではNamespaceとはなんぞや?といった層を対象に、分かりやすく説明してみました。 このあたりを抑えてなくて…

【Docker】コンテナを一気に消すワンライナーとその解説

停止しているコンテナをまとめて削除するワンライナー docker rm -v $(docker ps -q -f status=exited) 以下、補足です。 補足 以下コマンドで停止済みのコンテナ含めて確認可能です。 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAME…

【Docker】linkオプションでコンテナ間を接続する

はじめに オプションを指定せずにコンテナを作成するとそのコンテナはbridgeに接続されます。 よって、特段手当をせずとも同一ホスト上ではコンテナ間で通信可能です。 参考記事 一方で、コンテナを作成する際に接続先のコンテナが判明している場合はdocker …

【Docker】docker start/runをしてもコンテナの状態がExitedになる

事象 コンテナイメージを利用してコンテナをrunした際に即時でコンテナ終了がする。 原因 docker run -tiでコンテナを作成していない以下、補足です。 補足 まずは基礎知識としてdocker startはコンテナの起動を意味し、docker runは新規コンテナの立ち上げ…

【Docker】docker0のbridgeを用いてコンテナ間通信を行う

はじめに Dockerインストール時に自動的に作成されるbridgeですが、オプションを指定せずにコンテナを作成するとそのコンテナはbridgeに接続した構成となります。本記事ではDockerのネットワーク理解の第一歩として,同一ホストで作成した二つのコンテナ間で…

【Docker】コンテナ上のディレクトリをホストと共有する

はじめに コンテナ上で作成したファイルは、コンテナを破棄すれば消えてしまいます。 ホスト上で管理しているファイルをコンテナ側で利用したいケースもあります。そのような場合はコンテナの外に置いたデータをコンテナにマウントして見せる必要があります…

【Docker】変更を加えたコンテナをイメージとして別名保存する

はじめに Dockerの世界にて「イメージは読み取り専用のコンテナテンプレート」ですが、 例えば以下のように元のイメージをベースに修正を加えたものを新たなテンプレートとしたいケースがあります。 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE d…