#alpinelinux
Explore tagged Tumblr posts
Link
#alpinelinux#Fairphone5#GNOMEShell#KDEPlasma#Linux#Linuxcameras#open-sourcedevices#Pixel3A#postmarketOS#UI
0 notes
Text
Alpine Linux: Sistema Operativo Seguro y Versátil
Alpine Linux te da otro sabor para tu sistema Linux: Alpine Linux es ligero y seguro, su uso es lo que quiero promover en esta ocasión. Está diseñado principalmente para routers x86, también, cortafuegos, asi mismo VPNs, y servidores. Y mejor con un enfoque SSS (simple + seguro + sencillo) Ver artículo completo aquí: Alpine Linux #alpinelinux #archlinux #freeBSD #gentoo #kernel #linux #ubuntu #fedora #redhat #centos #debian #macos #unix #windows #gnu #suselinux #linuxmint #kali #hacking #software #hardware #dev #development #hacks #opensource #BitCuco Read the full article
#alpinelinux#archlinux#freeBSD#gentoo#kerneldelinux#linux#linuxdistros#linuxtutorial#paqueteslinux#servidores#sistemaoperativovirtual#sistemasembebidos#sistemasoperativos#sysadmin
0 notes
Text
Alpine Linux 3.11.0 - ese gran desconocido
Alpine Linux 3.11.0 - ese gran desconocido para muchos usuarios. A pesar de llevar casi 10 años entre nosotros, pocos usuarios conocen está distribución linux y aun menos los que se atreven a instalarla. Esta distribución basada en uClibcy y BusyBox fue creada para equipos con pocos recursos, pero también para usuarios expertos en linux. Su instalación es compleja, pero si te atreves con ella dispone de una estupenda wiki que seguro te ayudara. Fue creada por la comunidad para enrutadores, cortafuegos, redes VPN, y servidores VoIP; aunque és para trabajar en consola también permite la instalación de entornos de escritorio como XFCE o Gnome. Su principal virtud es la solidez y cuenta con características proactivas de seguridad como PaX y SSP (System Security Plan). Dicho esto... Alpine a lanzado su ultima versión, la 3.11.0. En este articulo vemos sus principales novedades y los enlaces de descarga.
Alpine Linux XFCE
Alpine Linux 3.11.0 - ese gran desconocido
Alpine es una de las mejores distribuciones linux que puedes encontrar (en su gama). Vemos sus principales novedades. Kernel Linux 5.4 (linux-lts) Ofrece soporte para Raspberry Pi 4 (aarch64 y armv7) Instalación fácil de XFCE, GNOME y KDE Permite agregar Vulkan Soporte MinGW-w64 y DXVK Se dispone de Rust en todas las arquitecturas excepto en s390x Las actualizaciones que más nos llaman la atención: Linux 5.4.5 GCC 9.2.0 Busybox 1.31.1 musl libc 1.1.24 LLVM 9.0.0 Go 1.13.4 Node.js 12.14.0 Python 3.8.0 Perl 5.30.1 Postgresql 12.1 Ruby 2.6.5 Rust 1.39.0 Crystal 0.31.1 Erlang 22.1 Zabbix 4.4.3 Nextcloud 17.0.2 Git 2.24.1 Xen 4.13.0 Qemu 4.2.0 Nota: Se elimina linux-vanilla y Python 2; el contenido de /var/spool/mail ahora lo tenemos en /var/mail; la dependencia clamav-libunrar ya no viene intalada por defecto, si la necesitas debes instalarla tu mismo. Descargar Alpine Linux 3.11.0 Alpine publica ocho versiones diferentes, aquí insertamos los enlaces de descarga de las versiones x86_64 (64bits): STANDART EXTENDED NETBOOT MINI ROOT FILESYSTEM VIRTUAL XEN RASPBERRY P GENERIC ARM Para otras arquitecturas incluyendo x86 (32bits) visita su pagina oficial de descargas. Canales de Telegram: Canal SoloLinux – Canal SoloWordpress Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Read the full article
#Alpine#AlpineLinux#AlpineLinux3.11.0#BusyBox#distribucionlinux#gnome#Linux#PaX#SSP#uClibc#wiki#xfce
0 notes
Link
Alpine Linux is a very popular Linux distro to serve as a base for your containerized applications. But did you know you can run a full XFCE desktop on Alpine?🐧
0 notes
Text
Alpine Linux Minimalist Desktop
https://github.com/git-sgmoore/AlpineLinux-DailyDriverDesktop Comments
0 notes
Photo
Alpine Term: Alpine Linux distro on your Android device | #alpinelinux #distros #termux #scripts
0 notes
Video
youtube
تاكد انك مشترك في القناة 💯 ومفعل الجرس عشان يوصلك كل جديد 🔔 وما تنساش تعمل لايك للفيديو 👍 https://bit.ly/36nGo0L شير مشاركة #BIMarabia اشترك في القناة لمتابعة الشروحات الجديدة videos https://www.youtube.com/channel/UCZYaOLTtPmOQX1fgtDFW52Q?sub_confirmation=1 بيم ارابيا https://bit.ly/1TSqEbr Places to find me! https://bit.ly/OcqQ6x https://bit.ly/2nqASDv Wordpress: https://bit.ly/SsszPw Instagram: https://bit.ly/2JY3wZP Twitter: https://twitter.com/omarselm #4 4mLinux #9 9Front #A AbsoluteLinux AcademiX AirSlax AlpineLinux ALT Linux Anarchy Linux Android-x86 Antergos Antivirus Live CD antiX Linux Aptosid Arabbix ArchBang ArchLabs Archlinux Archman ArchStrike ArcoLinux ArtixLinux AryaLinux Astra Linux Austrumi AV Linux #B BackBoxLinux Bee free BigLinux Bio-Linux BlackArch BlackBox Linux BlackLab BlackPantherOS BlackSlash blag BlankOn Bluestar Bodhi BOSS Linux BunsenLabs ByzantineOS #C CAELinux Caine Caixa Magica Calculate Linux Calculate Linux Desktop Canaima CentOS Chakra ChaletOS ChameleonOS ClearOS Clonezilla CommodoreOS Condres OS ConnochaetOS CRUX Cucumber #D Damn Small Linux Damn Small Linux Not Dapper Linux Daylight Linux Debian Debian facile Debian-FAI DebianEdu deepin DEFT Devil-Linux Devuan DragonFly BSD Dragora DuZeru Dyne:bolic #E EasyOS Edubuntu elementaryOS Elive Linux Emmabuntüs Emmi OS EndeavourOS Endless OS EnsoOS EpiLinux Escuelas Linux Estobuntu Estrellaroja Exe GNU Linux ExTiX #F Fatdog64 Fedora Atomic Fedora Server Fedora Silverblue Ostree Fedora Spins Fedora Workstation FerenOS Finnix FreeBSD FreeDOS FreeNAS Frenzy Frugalware Funtoo FuryBSD #G G4L GeckoLinux Gentoo GhostBSD GNewSense GoboLinux Gparted GreenieLinux GRML GuixSD #H Haiku hamOS Hannah Montana Linux HardenedBSD Heads Huayra Hyperbola #I io GNU Linux #K Kali Linux Kanotix KaOS KDE neon Knoppix Kodachi KolibriOS Korora Kubuntu Kubuntu Focus Kwort #L Linux Lite Linux Mint LinuxConsole Linuxfx LiveRaizo LMDE Lubuntu LuninuxOS LXLE OS #M Macpup Mageia MakuluLinux Manjaro Matriux MauiLinux MenuetOS MidnightBSD MilagrOS MinerOS Minimal Linux MiniNo MINIX Modicia Musix Muslimbuntu MX Linux #N Nanolinux Nas4Free Neptune NetBSD NethServer Netrunner Nitrux NixOs Nova NST NuTyX #O obarun Omni OS OpenBSD openEuler OpenIndiana OpenMandriva openSUSE OPNsense OracleLinux OS108 OSGeo live OviOS #P Parabola CLI Parabola LXDE Pardus Parrot Parrot Home Parrot Security Parrot Studio Parrot Variant Parsix Parted Magic PCLinuxOS PeachOSI PearOS Pentoo Peppermint PeppermintOS Pinguy PinguyOS Pisi Linux Plamo Linux Plasma Mobile PLD Linux plopLinux PNPI-OS PointLinux Pop!_OS PORTEUS PrimTux Puppy Linux PureOS #Q Q4OS QubesOS Quirky #R Raspberry Pi Desktop ReactOS Reborn OS Red Star OS Redcore redox Refracta Regolith Linux Rescatux RevengeOS RoboLinux Rockstor ROSA FRESH Runtu #S Sabayon Sabily SalentOS Salix ScientificLinux SELKS SemiCode OS Septor Siduction Simplicity Linux SimplyMEPIS Slackel Slackware Slax SliTaz Snallinux Solus SolydK SolydX SparkyLinux Springdale Stresslinux SubgraphOS SuperGamer susOS SwagArch SystemRescueCd #T Tails Tanglu TempleOS Tiny Core Trident Trisquel TROM-Jaro TrueOS Tsurugi Linux TurnKey Linux Tux N Vape #U Ubuntu Ubuntu Budgie Ubuntu Cinnamon Ubuntu Mate Ubuntu Server Ubuntu Studio Ubuntu Unity Remix UbuntuDDE UbuntuKylin Ufficio Zero Ultimate Edition Ultimate Linux Uruk #V VectorLinux Venom Linux VineLinux VoidLinux Voyager VyOS #W WattOs #X Xubuntu #Z Zentyal Zenwalk Zevenet
#IFTTT#YouTube https://youtu.be/utp0VVnnqsE BIMarabia تاكد انك مشترك في القناة 💯 ومفعل الجرس عشان يو
0 notes
Photo
Свои контейнеры и сборка на DockerHub. Docker http://ehelpdesk.tk/wp-content/uploads/2020/02/logo-header.png [ad_1] Docker: собираем свои (кастомные... #alpinelinux #androiddevelopment #angular #c #containers #css #dataanalysis #datascience #deeplearning #development #devops #docker #dockercommit #dockermountimage #dockermountvolume #dockerportforward #dockerpull #dockerpush #dockerremovecontainers #dockerremoveimages #dockerrun #dockerstart #dockerдляновичков #dockerдляпрограммиста #dockerдляразработчика #dockerfile #dockerhub #iosdevelopment #java #javascript #letscode #machinelearning #node.js #python #react #unity #webdevelopment #программирование
0 notes
Photo
コンテナイメージのセキュリティチェック&脆弱性診断を簡易的に実施する https://ift.tt/2GBpTSN
どうも、若松です。
最近、コンテナイメージをビルドしまくっており、オレオレなコンテナイメージが増殖しています。 そんなおり、以下の記事が目に止まりました。
DockerHubで公開されているコンテナが安全か確かめてみた結果【人気のコンテナ上位800個】
そりゃあ脆弱性あるわなぁと思いつつ、じゃあオレのコンテナイメージは大丈夫か?と思いました。 というわけで上記の記事で使用されていたdockleとTrivyを使って、オレオレコンテナイメージをチェックしていきたいと思います。
使用ツール
dockle
CISベンチマークやDockerベストプラクティスに準拠したコンテナイメージかをチェックできます。 WARNやFATALの項目には、どのように改善すればよいかのヒントが添えられていて小憎いです
それぞれの基準は以下の通り CISベンチマーク Dockerベストプラクティス
Trivy
OSやアプリケーションに潜む脆弱性をチェックできます。 CVE番号と共に脆弱性の詳細を表示してくれるので、どのように改善するかの計画が立てやすいです。
対象OSとアプリケーションは以下の通り https://github.com/knqyf263/trivy#vulnerability-detection
インストール
今回はMacのローカルにコンテナイメージがあるため、brewでインストールしました。 手順はそれぞれのREADMEに記載があるため、省略します。
dockle https://github.com/goodwithtech/dockle
Trivy https://github.com/knqyf263/trivy
実行結果
前回の記事で作成したLaravelコンテナを対象にしました。 https://cloudpack.media/48301
dockle
$ dockle laravel:latest WARN - CIS-DI-0001: Create a user for the container * Last user should not be root PASS - CIS-DI-0005: Enable Content trust for Docker WARN - CIS-DI-0006: Add HEALTHCHECK instruction to the container image * not found HEALTHCHECK statement PASS - CIS-DI-0007: Do not use update instructions alone in the Dockerfile PASS - CIS-DI-0008: Remove setuid and setgid permissions in the images PASS - CIS-DI-0009: Use COPY instead of ADD in Dockerfile PASS - CIS-DI-0010: Do not store secrets in ENVIRONMENT variables PASS - CIS-DI-0010: Do not store secret files PASS - DKL-DI-0001: Avoid sudo command PASS - DKL-DI-0002: Avoid sensitive directory mounting PASS - DKL-DI-0003: Avoid apt-get/apk/dist-upgrade PASS - DKL-DI-0004: Use apk add with --no-cache PASS - DKL-DI-0005: Clear apt-get caches WARN - DKL-DI-0006: Avoid latest tag * Avoid 'latest' tag PASS - DKL-LI-0001: Avoid empty password PASS - DKL-LI-0002: Be unique UID PASS - DKL-LI-0002: Be unique GROUP
大きな問題はありませんでしたが、WARNが3件出て、改善に向けたアドバイスが表示されていることがわかります。
Trivy
$ trivy laravel:latest 2019-07-16T00:26:44.376+0900 INFO Updating vulnerability database... 2019-07-16T00:26:46.203+0900 WARN You should avoid using the :latest tag as it is cached. You need to specify '--clear-cache' option when :latest image is changed 2019-07-16T00:26:48.159+0900 INFO Detecting Alpine vulnerabilities... 2019-07-16T00:26:48.171+0900 INFO Updating composer Security DB... 2019-07-16T00:26:51.928+0900 INFO Detecting composer vulnerabilities... 2019-07-16T00:26:51.928+0900 INFO Updating composer Security DB... 2019-07-16T00:26:53.211+0900 INFO Detecting composer vulnerabilities... 2019-07-16T00:26:53.214+0900 INFO Updating composer Security DB... 2019-07-16T00:26:54.422+0900 INFO Detecting composer vulnerabilities... 2019-07-16T00:26:54.422+0900 INFO Updating composer Security DB... 2019-07-16T00:26:56.052+0900 INFO Detecting composer vulnerabilities... var/www/laravel/vendor/psy/psysh/vendor-bin/box/composer.lock ============================================================= Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0) var/www/laravel/vendor/hamcrest/hamcrest-php/composer.lock ========================================================== Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0) laravel:latest (alpine 3.10.1) ============================== Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0) var/www/laravel/vendor/phar-io/manifest/composer.lock ===================================================== Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0) var/www/laravel/composer.lock ============================= Total: 0 (UNKNOWN: 0, LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0)
脆弱性は検出されませんでしたが、AlpineLinuxに加えてComposerも対象に診断を行ってくれることがわかります。
引っかかる場合の表示
上記でチェックしたコンテナイメージは最新のベースイメージであったため、引っかかる項目が少ない結果となりました。 しかしながら、これではチェックに引っかかった場合の表示がわからないため、ずいぶん前(docker imagesで見ると9ヶ月前)にpullして手元にあったhttpd:2.4-alpineをチェックしてみます。
dockle
$ dockle httpd:2.4-alpine WARN - CIS-DI-0001: Create a user for the container * Last user should not be root PASS - CIS-DI-0005: Enable Content trust for Docker WARN - CIS-DI-0006: Add HEALTHCHECK instruction to the container image * not found HEALTHCHECK statement PASS - CIS-DI-0007: Do not use update instructions alone in the Dockerfile PASS - CIS-DI-0008: Remove setuid and setgid permissions in the images PASS - CIS-DI-0009: Use COPY instead of ADD in Dockerfile PASS - CIS-DI-0010: Do not store secrets in ENVIRONMENT variables PASS - CIS-DI-0010: Do not store secret files PASS - DKL-DI-0001: Avoid sudo command PASS - DKL-DI-0002: Avoid sensitive directory mounting PASS - DKL-DI-0003: Avoid apt-get/apk/dist-upgrade FATAL - DKL-DI-0004: Use apk add with --no-cache * Use --no-cache option if use 'apk add': /bin/sh -c set -eux; runDeps=' apr-dev apr-util-dev apr-util-ldap perl '; apk add --no-cache --virtual .build-deps $runDeps ca-certificates coreutils dpkg-dev dpkg gcc gnupg libc-dev libressl libressl-dev libxml2-dev lua-dev make nghttp2-dev pcre-dev tar zlib-dev ; ddist() { local f="$1"; shift; local distFile="$1"; shift; local success=; local distUrl=; for distUrl in $APACHE_DIST_URLS; do if wget -O "$f" "$distUrl$distFile" && [ -s "$f" ]; then success=1; break; fi; done; [ -n "$success" ]; }; ddist 'httpd.tar.bz2' "httpd/httpd-$HTTPD_VERSION.tar.bz2"; echo "$HTTPD_SHA256 *httpd.tar.bz2" | sha256sum -c -; ddist 'httpd.tar.bz2.asc' "httpd/httpd-$HTTPD_VERSION.tar.bz2.asc"; export GNUPGHOME="$(mktemp -d)"; for key in A93D62ECC3C8EA12DB220EC934EA76E6791485A8 B9E8213AEFB861AF35A41F2C995E35221AD84DFF ; do gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; done; gpg --batch --verify httpd.tar.bz2.asc httpd.tar.bz2; command -v gpgconf && gpgconf --kill all || :; rm -rf "$GNUPGHOME" httpd.tar.bz2.asc; mkdir -p src; tar -xf httpd.tar.bz2 -C src --strip-components=1; rm httpd.tar.bz2; cd src; patches() { while [ "$#" -gt 0 ]; do local patchFile="$1"; shift; local patchSha256="$1"; shift; ddist "$patchFile" "httpd/patches/apply_to_$HTTPD_VERSION/$patchFile"; echo "$patchSha256 *$patchFile" | sha256sum -c -; patch -p0 < "$patchFile"; rm -f "$patchFile"; done; }; patches $HTTPD_PATCHES; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --prefix="$HTTPD_PREFIX" --enable-mods-shared=reallyall --enable-mpms-shared=all ; make -j "$(nproc)"; make install; cd ..; rm -r src man manual; sed -ri -e 's!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g' -e 's!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g' "$HTTPD_PREFIX/conf/httpd.conf"; runDeps="$runDeps $( scanelf --needed --nobanner --format '%n#p' --recursive /usr/local | tr ',' '\n' | sort -u | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' )"; apk add --virtual .httpd-rundeps $runDeps; apk del .build-deps PASS - DKL-DI-0005: Clear apt-get caches PASS - DKL-DI-0006: Avoid latest tag FATAL - DKL-LI-0001: Avoid empty password * No password user found! username : root PASS - DKL-LI-0002: Be unique UID PASS - DKL-LI-0002: Be unique GROUP
FATALが出ているのが確認できます。 最新のAlpineLinuxでは出ないものなので、定期的にチェックは必要だなと思います。
Trivy
$ trivy httpd:2.4-alpine 2019-07-16T00:48:09.514+0900 INFO Updating vulnerability database... 2019-07-16T00:48:13.096+0900 INFO Detecting Alpine vulnerabilities... httpd:2.4-alpine (alpine 3.7.1) =============================== Total: 13 (UNKNOWN: 0, LOW: 2, MEDIUM: 5, HIGH: 5, CRITICAL: 1) +------------+------------------+----------+-------------------+---------------+--------------------------------+ | LIBRARY | VULNERABILITY ID | SEVERITY | INSTALLED VERSION | FIXED VERSION | TITLE | +------------+------------------+----------+-------------------+---------------+--------------------------------+ | bzip2 | CVE-2019-12900 | HIGH | 1.0.6-r6 | 1.0.6-r7 | bzip2: out-of-bounds write in | | | | | | | function BZ2_decompress | +------------+------------------+ +-------------------+---------------+--------------------------------+ | expat | CVE-2018-20843 | | 2.2.5-r0 | 2.2.7-r0 | expat: large number of colons | | | | | | | in input makes parser consume | | | | | | | high amount... | +------------+------------------+----------+-------------------+---------------+--------------------------------+ | libxml2 | CVE-2018-14404 | MEDIUM | 2.9.7-r0 | 2.9.8-r1 | libxml2: NULL pointer | | | | | | | dereference in | | | | | | | xpath.c:xmlXPathCompOpEval() | | | | | | | can allow attackers to cause | | | | | | | a... | + +------------------+ + + +--------------------------------+ | | CVE-2018-14567 | | | | libxml2: Infinite loop when | | | | | | | --with-lzma is used allows for | | | | | | | denial of service... | + +------------------+----------+ + +--------------------------------+ | | CVE-2018-9251 | LOW | | | libxml2: infinite loop in | | | | | | | xz_decomp function in xzlib.c | +------------+------------------+----------+-------------------+---------------+--------------------------------+ | perl | CVE-2018-18311 | HIGH | 5.26.2-r1 | 5.26.3-r0 | perl: Integer overflow | | | | | | | leading to buffer overflow in | | | | | | | Perl_my_setenv() | + +------------------+ + + +--------------------------------+ | | CVE-2018-18314 | | | | perl: Heap-based buffer | | | | | | | overflow in S_regatom() | + +------------------+ + + +--------------------------------+ | | CVE-2018-18312 | | | | perl: Heap-based | | | | | | | buffer overflow in | | | | | | | S_handle_regex_sets() | + +------------------+----------+ + +--------------------------------+ | | CVE-2018-18313 | MEDIUM | | | perl: Heap-based buffer read | | | | | | | overflow in S_grok_bslash_N() | +------------+------------------+----------+-------------------+---------------+--------------------------------+ | postgresql | CVE-2019-10164 | CRITICAL | 10.5-r0 | 10.9-r0 | PostgreSQL: stack-based | | | | | | | buffer overflow via setting a | | | | | | | password | + +------------------+----------+ +---------------+--------------------------------+ | | CVE-2019-10129 | MEDIUM | | 10.8-r0 | postgresql: Memory disclosure | | | | | | | in partition routing | + +------------------+----------+ + +--------------------------------+ | | CVE-2019-10130 | LOW | | | postgresql: Selectivity | | | | | | | estimators bypass row security | | | | | | | policies | +------------+------------------+----------+-------------------+---------------+--------------------------------+ | sqlite | CVE-2018-20346 | MEDIUM | 3.21.0-r1 | 3.25.3-r0 | CVE-2018-20505 CVE-2018-20506 | | | | | | | sqlite: Multiple flaws in | | | | | | | sqlite which can be triggered | | | | | | | via... | +------------+------------------+----------+-------------------+---------------+--------------------------------+
ライブラリ毎に表示されるので見やすいですね。 CRITICALが出ているので、ここは最低でも塞いで起きたいところです。
まとめ
簡単にイメージスキャンができることがわかっていただけたと思います。 今回は素のままのコマンド実行でしたが、表示形式の変更やファイルへの出力などのオプションもあるので、うまく使って様々な箇所に応用していきましょう。
元記事はこちら
「コンテナイメージのセキュリティチェック&脆弱性診断を簡易的に実施する」
July 30, 2019 at 12:00PM
0 notes
Text
docker-slimを使ってDockerイメージのダイエット
from https://qiita.com/ryuichi1208/items/c96d39a57e11d54f02bf?utm_campaign=popular_items&utm_medium=feed&utm_source=popular_items
背景
https://speakerdeck.com/stormcat24/oqian-falsedockerimezihamadazhong-i
上記のスライドを見て初めて1コンテナ1GBは重過ぎるということに気づかされました。 色々詰め込んでいるしあくまで趣味レベルで触っているだけでまあ良いかとずっと思ってましたが 業務でも触ることを考えて色々減量を考えました。 そんな中「docker-slim」が良いよって話を聞いて使ってみて想像以上に良かったのでご紹介。
公式HPは下記 http://dockersl.im/
Dockerイメージが大きい弊害
スライドの中からの引用です。 大きければビルドもアップ��ード/ダウンロード時間が増える。 当然のことですね。且つ待ち時間が多くなりTwitterする時間も確かに増えますね(笑)
イメージビルド、CI時間が増える
イメージのダウンロード時間が増える
イメージのアップロード時間が増える
生産性が下がる
Twitterする時間が増える
減量方法
減量する方法は色々なところで議論されていますが主に下記が効果的
軽量イメージを使用する (例:Alpineやscratch)
RUNをまとめる ()
マルチステージビルドを使う
マルチステージビルドは、Docker17.05以上で利用できる新機能です。 ビルドで使うコンテナと、最終的な実行可能ファイルだけを詰め込んだコンテナを 分けて使うことが出来ます。
それぞれしっかり調べていくと大量の時間がかかりますね。 そんな中上記を自動でやってくれるツール「docker-slim」がとても便利。
What is docker-slim ?
減量減量言ってましたがdocker-slimはコンテナの最適化ツールといった感じです。 ソースはGitHubで公開されています。ちなみに実装はGo。 スター数は2000程。最新バージョンは1.22で今もリリースされ続けています。 docker-slim/docker-slim
主な機能は下記。 最適化したDockerfileを作ってくれるので取り入れたい項目だけ使えたりするのは良いですね。
静的及び動的解析による最適化
最適化後にDockerfileを自動作成
インストール手順
MacとLinuxのバイナリーがREADMEのINSTALLATIONの欄にあります。 そちらを入手して解凍しパスを通すだけで使えるようです。 自前ビルド無しで使えるのはうれしいですね。 (ローカル構築の場合は手順が違うようなのでご注意を)
docker-slim [version|info|build|profile] [--http-probe|--remove-file-artifacts] <IMAGE_ID_OR_NAME>
色々オプションがありますが、基本的にはREADMEとDEMOの動画でことは足りる感触です。 実行例などでは主にサブコマンドを使って説明されている。
サブコマンド 説明 build 太ったイメージから軽量化されたイメージをビルド profile コンテナレポートを作成 info 実行せずにDockerfileのみを作成 version docker-slimのバージョンを表示
使ってみた
環境
環境はこんな感じ 最新版のdocker-slimを取ってきて使ってます
$ uname -a Linux ubuntu0827 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ docker --version Docker version 18.06.1-ce, build e68fc7a
サンプルDockerfile
使用するDockerfileはこんな感じ とりあえず適当にJava入りコンテナを書いてみ���。
Dockerfile
FROM ubuntu:latest ENV JAVA_HOME /usr/lib/jvm/java-8-oracle RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \ apt-get update && \ apt-get install -y software-properties-common && \ add-apt-repository -y ppa:webupd8team/java && \ apt-get update && \ apt-get install -y oracle-java8-installer CMD "/bin/bash"
導入
$ curl -L -O https://github.com/docker-slim/docker-slim/releases/download/1.22/dist_linux.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 607 0 607 0 0 988 0 --:--:-- --:--:-- --:--:-- 986 100 5199k 100 5199k 0 0 366k 0 0:00:14 0:00:14 --:--:-- 791k $ tar zxvf dist_linux.tar.gz dist_linux/ dist_linux/docker-slim dist_linux/docker-slim-sensor dist_linux dist_linux.tar.gz django_work git-work iog kubernetes omnibus-gitlab-master python.py work $ cd dist_linux/ $ ls docker-slim docker-slim-sensor
導入したら太ったイメージを用意しdocker-slimを実行。 サンプル動画通りの動きです。
# 何もしないコンテナだけど844MB $ docker images java_fat_1 REPOSITORY TAG IMAGE ID CREATED SIZE java_fat_1 latest c7c3170996a5 2 minutes ago 844MB # docker-slimを実行したイメージ $ docker images java_fat_1.slim REPOSITORY TAG IMAGE ID CREATED SIZE java_fat_1.slim latest e3607956321d 2 minutes ago 3.87MB
844MB ⇒ 3.87MBまで凄い圧縮率。 Dockerfileは.imagesにあるので中身を見てみます。 動的解析でインストール類が無くなってますね(例が悪かった←) 当然ですがコンテナ作ってからいろいろやろうとするなって話ですね
$ cat .images/c7c3170996a5c5a62e5544165a9dbd234e2139e5745eec1fc01948a2d2ea396f/artifacts/Dockerfile FROM scratch COPY files / ENV PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ENV JAVA_HOME "/usr/lib/jvm/java-8-oracle" CMD ["/bin/sh","-c","\"/bin/bash\""]
まとめ
レイヤの結合だったりcacheの削除だったりやるべきことや学ぶべきことはたくさんある。 とりあえずAlpineLinuxだとかRUNの結合だ!とかやってましたがこの機械にちょっとだけ知識が増えました。 今回紹介した減量ツールはその取っ掛かりとしてはとてもいいのでは無いでしょうか? 便利さゆえに本質を理解せずに使わないようにしたいですね。
自分もこんな感じの便利ツールで減量したい。。。
参考リンク
https://techblog.ca-wise.co.jp/2016/02/post-17.html https://studygolang.com/articles/13233
https://cdn.qiita.com/assets/qiita-fb-2887e7b4aad86fd8c25cea84846f2236.png
0 notes
Link
0 notes
Text
A tweet
Do you know #docker? PWD is a Docker playground which allows users to run Docker commands in a matter of seconds within your browser. Here is It, an amazing project hacked by @marcosnils and @xetorthio !!! https://t.co/cgZqRSVB90 Powered by @alpinelinux pic.twitter.com/mngANTpWAX
— Kennedy Carvalho (@kndrio) May 7, 2019
0 notes
Link
So I signed up on @alpinelinux bug tracker to report back on https://t.co/djVpknKAck, and now I'm getting 403 forbidden when signed in. #alpine #pls #help via @VojtechVitek
0 notes
Text
0 notes
Photo
RT @nighthacking: Live #jfokus interview - last one today! @heathervc talks w/ @MikaelVidstedt on #portola #java #alpinelinux #contai… https://t.co/sgpFhMigzZ #Java #JavaEE #Java9
0 notes