なんとなくは理解していたつもりですが、JenkinsのビルドをDockerコンテナ内で実行する方法を改めて調査しました。環境構築手順と合わせてまとめ記事にしました。
「Docker」タグの記事が15件件あります
全てのタグを見るOSS版のSensu GoとSensu Go Webの使い方
Sensuとは
Sensu is a complete solution for monitoring and observability at scale. Sensu Go is designed to give you visibility into everything you care about: traditional server closets, containers, applications, the cloud, and more.
Sensuは、大規模な監視と観測のための完全なソリューションです。Sensu Goは、従来のサーバークローゼット、コンテナ、アプリケーション、クラウドなど、気になるものをすべて可視化できるように設計されています。
Go言語で書かれた実装がSensu Go
となります。
Sensu Goには商用版とOSS版があります。機能の差異があるのと、バイナリ提供が商用版のみで、OSS版はソースからビルドする必要があります。今回はOSS版のビルドから実際に試してみました。
WSL2の上のDocker環境を構築する(2022/04)
- Windows 10 Pro 21H2
Jenkinsを起動するDocker Composeがこちらです
過去にQiitaに投稿した内容のアーカイブです。
今日わかったこと
- Docker Hubの
Official Image
のJenkinsはDEPRECATED。代わりにjenkins/jenkins:lts
を使ってねとのこと - 公式サイトには以下の記載あり。
The recommended Docker image to use is the Official jenkins/jenkins image (from the Docker Hub repository). This image contains the current Long-Term Support (LTS) release of Jenkins (which is production-ready). However this image doesn’t have docker CLI inside it and is not bundled with frequently used Blue Ocean plugins and features. This means that if you want to use the full power of Jenkins and Docker you may want to go through described below installation process.
DeepL翻訳
使用する推奨Dockerイメージは、Official jenkins/jenkinsイメージ(Docker Hubリポジトリより)です。このイメージには、Jenkinsの現在のLong-Term Support(LTS)リリースが含まれています(これは本番環境に対応しています)。しかし、このイメージにはdocker CLIが内蔵されておらず、頻繁に使用されるブルーオーシャンのプラグインや機能がバンドルされていません。つまり、JenkinsとDockerのパワーをフルに使いたい場合は、以下のようなインストール手順を踏むことになるでしょう。
JenkinsとDockerのパワーをフルに使う
方法をDocker Composeで試したので、その時のログを残します。
作業ログ
mkdir ~/jenkins-docker
cd ~/jenkins-docker/
FROM jenkins/jenkins:2.303.2-jdk11
USER root
RUN apt-get update && apt-get install -y apt-transport-https \
ca-certificates curl gnupg2 \
software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository \
"deb [arch=arm64] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable"
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean:1.25.0 docker-workflow:1.26"
※注:Raspberry Pi 4で試したので[arch=arm64]
になってますが、多くの場合は[arch=amd4]
だと思います。
version: '3.9'
services:
docker:
image: docker:dind
privileged: true
networks:
- jenkins-network
environment:
DOCKER_TLS_CERTDIR: /certs
volumes:
- ./jenkins-docker-certs:/certs/client
- ./jenkins-data:/var/jenkins_home
expose:
- "2376"
jenkins-blueocean:
build: .
depends_on:
- docker
networks:
- jenkins-network
environment:
DOCKER_HOST: "tcp://docker:2376"
DOCKER_CERT_PATH: /certs/client
DOCKER_TLS_VERIFY: 1
expose:
- "8080"
- "50000"
ports:
- "8080:8080"
- "50000:50000"
volumes:
- ./jenkins-docker-certs:/certs/client:ro
- ./jenkins-data:/var/jenkins_home
networks:
jenkins-network:
driver: bridge
mkdir jenkins-data
mkdir jenkins-docker-certs
docker compose up -d
しばらくすると、Jenkinsが起動し、8080ポートで接続できます。
Administrator password
はログに出ているので、docker compose logs
で確認しましょう。
あとはこんな感じです。
macでもDocker Desktopなしでいい感じにDocker環境を構築する
過去にQiitaに投稿した内容のアーカイブです。
自分用の構築メモです。
VirtualBox の設定
ホストネットワークマネージャーを作成する
仮想マシンを作成する際にNICを
NAT
とホストオンリーアダプター
の2つ設定する
Ubuntu Server 20.04をインストール
インストールが始まったら、NICを2つとも切断するとUpdateが失敗するのでインストールが早く終る
Ubuntuの設定
- SSHの設定
sudo sed -i 's/#PubkeyAuthentication/PubkeyAuthentication/g' /etc/ssh/sshd_config
sudo sed -i 's/#AuthorizedKeysFile/AuthorizedKeysFile/g' /etc/ssh/sshd_config
sudo systemctl restart sshd.service
ssh-keygen -t rsa -b 4096 -C "moritalous"
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- Dockerインストール
curl -fsSL https://get.docker.com -o get-docker.sh && \
sudo sh ./get-docker.sh && \
sudo usermod -aG docker $USER
- VirtualBoxゲストツールインストール
sudo apt update && \
sudo apt install -y virtualbox-guest-dkms virtualbox-guest-utils && \
sudo usermod -aG vboxsf $USER
## macと同じパスで共有するため
sudo mkdir -p /Users/Shared/VBox
macの設定
- 鍵でSSHログインする設定
Host Ubuntu-VirtualBox-Docker
HostName xxx.xxx.xxx.xxx
User ubuntu
IdentityFile ~/.ssh/xxxxxxxxxx/id_rsa
- Docker Clientをインストール
curl https://download.docker.com/mac/static/stable/x86_64/docker-20.10.9.tgz -o docker-20.10.9.tgz
tar xzvf docker-20.10.9.tgz
sudo xattr -rc docker
mkdir ~/bin
cp -rf docker/* ~/bin/
echo 'export PATH=$PATH:~/bin' >> ~/.zshrc
docker context create vbox --docker "host=ssh://ubuntu@Ubuntu-VirtualBox-Docker"
docker context use vbox
VSCodeの.devcontainerの設定
- workspaceFolderを追加
- workspaceMountを追加
- mountsを追加
- remoteUserを削除(rootで動くようにする)
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.202.1/containers/ubuntu
{
"name": "Ubuntu",
"runArgs": ["--init"],
"build": {
"dockerfile": "Dockerfile",
// Update 'VARIANT' to pick an Ubuntu version: hirsute, focal, bionic
// Use hirsute or bionic on local arm64/Apple Silicon.
"args": { "VARIANT": "focal" }
},
// ここから追加
"workspaceFolder": "/workspace",
"workspaceMount": "source=workspace,target=/workspace,type=volume",
"mounts": [
"source=/Users/Shared/VBox,target=/workspace/VBox,type=bind,consistency=cached"
],
// ここまで追加
// Set *default* container specific settings.json values on container create.
"settings": {},
// Add the IDs of extensions you want installed when the container is created.
// "extensions": [],
"extensions": []
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "uname -a",
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
// rootユーザーで動かす
// "remoteUser": "vscode"
// rootユーザーで動かす
}
VirtualBoxの起動(コマンドラインでヘッドレス)
VBoxManage startvm Ubuntu20.04-docker --type headless