Dockerイメージから内容物を抽出する

docker save | Docker Documentation docker pull alpine:3 docker save -o out.tar alpine:3 mkdir out tar xvf out.tar -C out/ cd out/6709f754bd0ccbbea9a7481e92772a494cca1543b3421978edff62bc5de16662 tar xvf layer.tar -C layer/ cd layer # here is root directory

2020年12月8日 · aoirint

Pythonを追加するDockerfile

pyenvは部品を使うだけで最終的には削除します(Pythonは/usr/localに導入) FROM ubuntu:bionic ARG DEBIAN_FRONTEND=noninteractive ARG PYTHON_VERSION=3.9.0 ARG PYTHON_ROOT=/usr/local ARG PYENV_ROOT=/tmp/.pyenv ARG PYBUILD_ROOT=/tmp/python-build RUN apt update && apt install -y \ build-essential \ libssl-dev \ zlib1g-dev \ libbz2-dev \ libreadline-dev \ libsqlite3-dev \ wget \ curl \ llvm \ libncurses5-dev \ libncursesw5-dev \ xz-utils \ tk-dev \ libffi-dev \ liblzma-dev \ python-openssl \ git \ && git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT \ && PREFIX=$PYBUILD_ROOT $PYENV_ROOT/plugins/python-build/install.sh \ && $PYBUILD_ROOT/bin/python-build -v $PYTHON_VERSION $PYTHON_ROOT \ && rm -rf $PYBUILD_ROOT $PYENV_ROOT

2020年12月8日 · aoirint

Mastodonをdocker-composeで立てる(Ubuntu 18.04)

tootsuite/mastodon: Your self-hosted, globally interconnected microblogging community Mastodon documentation 内容はコミットID44d5c6bc8ffd92cd201380dabe35748e50b6af68、Mastodon Dockerイメージバージョンv3.2.1(Digest:sha256:41cd5fb48d8b15ec806f08ab06fec98df33ec9b83a1f879e0fb30da9994018dc)におけるもの。docker-composeの設定ファイルバージョンは3。 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.5 LTS Release: 18.04 Codename: bionic $ uname -r 5.4.0-56-generic $ docker -v Docker version 19.03.14, build 5eb3275d40 $ docker-compose -v docker-compose version 1.27.1, build 509cfb99 $ docker images tootsuite/mastodon --digests REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE tootsuite/mastodon v3.2.1 sha256:41cd5fb48d8b15ec806f08ab06fec98df33ec9b83a1f879e0fb30da9994018dc 37ca50fc92bd 6 weeks ago 1.86GB 今回はDocker Hub上のイメージを使用し、ローカルビルドをしない想定でいく(ごちゃごちゃするので)。 Mastodonを改造したい場合など、必要に応じてgithub:tootsuite/mastodonをFork/Cloneし、自分で/CIでビルドして信頼できるDockerレジストリに登録すればいいと思う。 ...

2020年12月6日 · aoirint

Docker + Docker Compose on Vagrant Ubuntu Server

Downloads – Oracle VM VirtualBox Downloads | Vagrant by HashiCorp Vagrant box ubuntu/bionic64 - Vagrant Cloud Install Docker Engine on Ubuntu | Docker Documentation Install Docker Compose | Docker Documentation kvm (qemu)を使うこともできるらしいが、対応したboxを用意する必要があるのでVirtualBoxを使う。 KVM用仮想マシンをVagrantで手軽に作る | さくらのナレッジ Commands # 起動 vagrant up # 削除 vagrant destroy # ssh vagrant ssh # 停止(シャットダウン) vagrant halt Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "ubuntu/bionic64" config.vm.hostname = "ubuntu-docker" # config.vm.network "forwarded_port", guest: 80, host: 8080 # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1" config.vm.provider "virtualbox" do |vb| vb.name = "ubuntu-docker" vb.memory = "1024" # vb.gui = true end config.vm.provision "shell", inline: <<-SHELL apt-get update apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository -y \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" apt-get update apt-get install -y \ docker-ce \ docker-ce-cli \ containerd.io curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose adduser vagrant docker SHELL end

2020年10月22日 · aoirint

docker-composeによるPython + Selenium環境

2022-08-06 追記 Seleniumのバージョンが上がって一部非推奨化したりしたので、そちらに対応した版を作成しました。 リポジトリ: https://github.com/aoirint/compose-selenium-python-template 2020-09-28 docker-compose.yml version: '3.8' services: app: build: ./app/ entrypoint: [ "wait-for-it", "selenium:4444", "--", "python3", "/code/main.py" ] volumes: - ./work:/work environment: SELENIUM_URL: http://selenium:4444/wd/hub depends_on: - selenium selenium: image: selenium/standalone-chrome volumes: - /dev/shm:/dev/shm app/Dockerfile FROM python:3 WORKDIR /work RUN apt update && apt install -y \ wait-for-it ADD requirements.txt /tmp/ RUN pip3 install -r /tmp/requirements.txt ADD code/ /code app/requirements.txt requests >= 2.24.0 selenium app/code/main.py from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.desired_capabilities import DesiredCapabilities selenium_url = os.environ['SELENIUM_URL'] website_url: str = None driver = webdriver.Remote( command_executor=selenium_url, desired_capabilities=DesiredCapabilities.CHROME, ) driver.get(website_url)

2020年9月28日 · aoirint

docker-compose run --rm終了時に他のコンテナも削除する

docker-compose run --rm appを実行するとサービスappが起動してコンテナが作られ、実行が終わり次第コンテナは削除される。 このとき削除されるコンテナはforegroundで実行されたもののみで、 depends_onなどの設定からリンクを通じて起動した他サービスのdetachedコンテナは削除されず残り続ける。 docker-compose run <container> –rm does not rm links · Issue #2791 · docker/compose このissueでlinked containersを同時に削除する機能について議論されているが、 runコマンドにオプションを増やしたくない、ということで却下されている。 As mentioned in this thread, docker-compose rm -f –all and docker-compose down already allow cleaning up a project’s containers / resources. We won’t overload run with more options at that point. ひとまずdocker-compose run終了後にdocker-compose downを実行するシェルスクリプトで対応する。 compose_run.sh ...

2020年9月28日 · aoirint

Atom + LaTeX in Docker

概要 LaTeXをホストにインストールせず、Docker内で動かしつつ、 Atomからこれを利用できるようにする。 Requirements Ubuntu 18.04 Docker Atom Atom Packages latex Atom Packages latexを入れれば最低限ビルドコマンドは叩けるようになる。 latex シンタックスハイライト language-latex アウトライン表示 document-outline PDFプレビュー pdf-view(メモリリーク? Atomを一度閉じれば解消する) または pdf-view-plus(メモリリーク対策版らしい。latexとの連携はないので注意) Dockerイメージ paperist/alpine-texlive-jaを使う。 sudo docker pull paperist/alpine-texlive-ja Docker sudoなしでDockerを実行できるようにする。AtomからDockerコンテナを作るのに必要。 注意として、この方法で一般ユーザがDockerを使えるようにすると特権昇格できてしまうため、 共有サーバにおいてはDocker 20.10以降のDocker rootlessを設定する。 https://docs.docker.com/engine/security/rootless/ ユーザをdockerグループに追加したあと再ログインする。新しくdockerグループが作られた直後はnewgrp dockerしなければならないことがあり、シェルごとにこれを実行する必要があるようなのでAtomに反映されず、この場合OSの再起動が必要。 sudo groupadd docker sudo adduser $USER docker latexmkスクリプトを作る /usr/texbin/latexmk(手動でlatexのTeX Pathを設定するか、デフォルトでPATHの通っている場所ならどこでもいい)に以下のシェルスクリプトを作成し、chmod +x /usr/texbin/latexmkしておく。 ${HOME}/.atom/packages/latex/resourcesのマウントはlatexのExtended Build Modeが有効のときに${HOME}/.atom/packages/latex/resources/latexmkrcが読み出されるため設定している(このパスはホストのAtomから渡されるのでマウント先パスもホストと同じ)。この機能を無効にしていれば不要。 #!/bin/sh docker run --rm \ -v "${PWD}:/workdir" \ -v "${HOME}/.atom/packages/latex/resources:${HOME}/.atom/packages/latex/resources" \ paperist/alpine-texlive-ja \ latexmk "$@" サンプルTeXファイル \documentclass[10pt,a4paper]{jsarticle} \title{My Title} \author{Author} \date{2020-09-17} \begin{document} \maketitle \section{サンプル} \end{document} 注意点 カレントディレクトリ以下をマウントするため、外部においた.styなどは読み込めないので注意(デフォルトでロードされるディレクトリがあれば追加のマウントをすればOKと思われる)。 ...

2020年9月17日 · aoirint

VBA-M on Docker

VisualBoyAdvance - MをDocker上で動かすDockerfile(とrunコマンドのオプションセット)を作った。 要X Window System、Pulseaudio。Ubuntu Desktop 18.04(with NVIDIA Driver)で動作確認。 https://github.com/aoirint/vbam-docker Dockerfile # for general machine FROM ubuntu:bionic # for nvidia-driver machine # FROM nvidia/opengl:base-ubuntu18.04 ENV VERSION 2.1.4 ENV SHA1HASH bf6e452b53f47e2fbc4e6e41c92f567aa285cdbe WORKDIR /vbam RUN apt update \ && apt -qq -y --no-install-recommends install \ ca-certificates \ tar \ wget \ # -- from builddeps script build-essential \ g++ \ nasm \ cmake \ ccache \ gettext \ zlib1g-dev \ libgl1-mesa-dev \ libavcodec-dev \ libavformat-dev \ libswscale-dev \ libavutil-dev \ libswresample-dev \ libgettextpo-dev \ libpng-dev \ libsdl2-dev \ libsdl2-2.0 \ libglu1-mesa-dev \ libglu1-mesa \ libgles2-mesa-dev \ libsfml-dev \ libsfml-graphics2.4 \ libsfml-network2.4 \ libsfml-window2.4 \ libglew2.0 \ libopenal-dev \ libwxgtk3.0-dev \ libwxgtk3.0 \ libgtk2.0-dev \ libgtk-3-dev \ zip \ # sound driver to play sound on host pulseaudio \ # build && mkdir /vbam-build && cd /vbam-build \ && wget -O vbam.tar.gz https://github.com/visualboyadvance-m/visualboyadvance-m/archive/v${VERSION}.tar.gz \ && echo "${SHA1HASH} vbam.tar.gz" | sha1sum -c - \ && mkdir src \ && tar xf vbam.tar.gz -C src --strip-components 1 \ && mkdir build && cd build \ && cmake ../src \ && make \ # copy to /usr/local/bin/ && mv visualboyadvance-m /usr/local/bin/ \ # remove build environment && rm -r /vbam-build/ ベースイメージは(とりあえず)基本はubuntu:bionicで、NVIDIAのGPUで動いてるマシンでビルドするときはnvidia/openglにする。これをやらないと描画時にlibGL error: No matching fbConfigs or visuals foundを吐く(逆にubuntu:bionicでの動作確認はしていないが.. 設定で描画をOpenGL以外にすればどちらでも動きそう)。 ...

2020年9月6日 · aoirint

Python Dockerfile

FROM python:3 RUN mkdir /code WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt

2020年3月16日 · aoirint

Install Docker on Ubuntu

Get Docker Engine - Community for Ubuntu | Docker Documentation

2020年3月16日 · aoirint