mirror of
https://github.com/m-lamonaca/dev-notes.git
synced 2025-04-06 02:46:39 +00:00
4978 lines
No EOL
139 KiB
HTML
4978 lines
No EOL
139 KiB
HTML
|
||
<!doctype html>
|
||
<html lang="en" class="no-js">
|
||
<head>
|
||
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||
|
||
|
||
<meta name="author" content="Marcello Lamonaca">
|
||
|
||
|
||
<link rel="canonical" href="http://m-lamonaca.github.io/dev-notes/containers/docker.html">
|
||
|
||
|
||
<link rel="prev" href="../index.html">
|
||
|
||
|
||
<link rel="next" href="kubernetes.html">
|
||
|
||
|
||
<link rel="icon" href="../assets/images/favicon.png">
|
||
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.34">
|
||
|
||
|
||
|
||
<title>Docker - Dev Notes</title>
|
||
|
||
|
||
|
||
<link rel="stylesheet" href="../assets/stylesheets/main.35f28582.min.css">
|
||
|
||
|
||
<link rel="stylesheet" href="../assets/stylesheets/palette.06af60db.min.css">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<script src="https://unpkg.com/iframe-worker/shim"></script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
||
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
||
|
||
|
||
|
||
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<meta property="og:type" content="website" >
|
||
|
||
<meta property="og:title" content="Docker - Dev Notes" >
|
||
|
||
<meta property="og:description" content="None" >
|
||
|
||
<meta property="og:image" content="http://m-lamonaca.github.io/dev-notes/assets/images/social/containers/docker.png" >
|
||
|
||
<meta property="og:image:type" content="image/png" >
|
||
|
||
<meta property="og:image:width" content="1200" >
|
||
|
||
<meta property="og:image:height" content="630" >
|
||
|
||
<meta property="og:url" content="http://m-lamonaca.github.io/dev-notes/containers/docker.html" >
|
||
|
||
<meta name="twitter:card" content="summary_large_image" >
|
||
|
||
<meta name="twitter:title" content="Docker - Dev Notes" >
|
||
|
||
<meta name="twitter:description" content="None" >
|
||
|
||
<meta name="twitter:image" content="http://m-lamonaca.github.io/dev-notes/assets/images/social/containers/docker.png" >
|
||
|
||
|
||
|
||
</head>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="deep-orange">
|
||
|
||
|
||
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
||
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
||
<label class="md-overlay" for="__drawer"></label>
|
||
<div data-md-component="skip">
|
||
|
||
|
||
<a href="#docker" class="md-skip">
|
||
Skip to content
|
||
</a>
|
||
|
||
</div>
|
||
<div data-md-component="announce">
|
||
|
||
</div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
|
||
<nav class="md-header__inner md-grid" aria-label="Header">
|
||
<a href="../index.html" title="Dev Notes" class="md-header__button md-logo" aria-label="Dev Notes" data-md-component="logo">
|
||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3"/></svg>
|
||
|
||
</a>
|
||
<label class="md-header__button md-icon" for="__drawer">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
||
</label>
|
||
<div class="md-header__title" data-md-component="header-title">
|
||
<div class="md-header__ellipsis">
|
||
<div class="md-header__topic">
|
||
<span class="md-ellipsis">
|
||
Dev Notes
|
||
</span>
|
||
</div>
|
||
<div class="md-header__topic" data-md-component="header-topic">
|
||
<span class="md-ellipsis">
|
||
|
||
Docker
|
||
|
||
</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<form class="md-header__option" data-md-component="palette">
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="orange" data-md-color-accent="deep-orange" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
|
||
|
||
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
||
</label>
|
||
|
||
|
||
|
||
|
||
|
||
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="orange" data-md-color-accent="deep-orange" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
||
|
||
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
||
</label>
|
||
|
||
|
||
</form>
|
||
|
||
|
||
|
||
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
||
|
||
|
||
|
||
<label class="md-header__button md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
</label>
|
||
<div class="md-search" data-md-component="search" role="dialog">
|
||
<label class="md-search__overlay" for="__search"></label>
|
||
<div class="md-search__inner" role="search">
|
||
<form class="md-search__form" name="search">
|
||
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
||
<label class="md-search__icon md-icon" for="__search">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||
</label>
|
||
<nav class="md-search__options" aria-label="Search">
|
||
|
||
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
||
</button>
|
||
</nav>
|
||
|
||
</form>
|
||
<div class="md-search__output">
|
||
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
||
<div class="md-search-result" data-md-component="search-result">
|
||
<div class="md-search-result__meta">
|
||
Initializing search
|
||
</div>
|
||
<ol class="md-search-result__list" role="presentation"></ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="md-header__source">
|
||
<a href="https://github.com/m-lamonaca/dev-notes" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
GitHub
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
</nav>
|
||
|
||
|
||
|
||
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
|
||
<div class="md-grid">
|
||
<ul class="md-tabs__list">
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../index.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Home
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item md-tabs__item--active">
|
||
<a href="docker.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Containers
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../databases/redis.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Databases
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../languages/html/html.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Languages
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../misc/git.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Misc
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-tabs__item">
|
||
<a href="../linux/filesystem/file-links.html" class="md-tabs__link">
|
||
|
||
|
||
|
||
|
||
Linux
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</div>
|
||
</nav>
|
||
|
||
|
||
</header>
|
||
|
||
<div class="md-container" data-md-component="container">
|
||
|
||
|
||
|
||
|
||
<main class="md-main" data-md-component="main">
|
||
<div class="md-main__inner md-grid">
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
||
<label class="md-nav__title" for="__drawer">
|
||
<a href="../index.html" title="Dev Notes" class="md-nav__button md-logo" aria-label="Dev Notes" data-md-component="logo">
|
||
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3"/></svg>
|
||
|
||
</a>
|
||
Dev Notes
|
||
</label>
|
||
|
||
<div class="md-nav__source">
|
||
<a href="https://github.com/m-lamonaca/dev-notes" title="Go to repository" class="md-source" data-md-component="source">
|
||
<div class="md-source__icon md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"/></svg>
|
||
</div>
|
||
<div class="md-source__repository">
|
||
GitHub
|
||
</div>
|
||
</a>
|
||
</div>
|
||
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../index.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Home
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Containers
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
|
||
<label class="md-nav__title" for="__nav_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Containers
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--active">
|
||
|
||
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Docker
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<a href="docker.html" class="md-nav__link md-nav__link--active">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Docker
|
||
</span>
|
||
|
||
|
||
</a>
|
||
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#images-containers" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Images & Containers
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#containers-vs-virtual-machines" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Containers vs Virtual Machines
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-terminology" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker Terminology
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-cli" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker CLI
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Docker CLI">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-run" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker run
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-container" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker container
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-image" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker image
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-build" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker build
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-push" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker push
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#dockerfile" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Dockerfile
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Dockerfile">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#cmd-vs-entrypoint" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
CMD vs ENTRYPOINT
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-multi-stage-build" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker Multi-Stage Build
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#networking" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Networking
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Networking">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#user-defined-networks" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
User-defined Networks
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#embedded-dns" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Embedded DNS
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#exposing-ports" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Exposing Ports
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-storage" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker Storage
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#file-system" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
File System
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="File System">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#copy-on-write" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Copy-On-Write
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#volumes" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Volumes
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-compose" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker Compose
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="kubernetes.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Kubernetes
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Databases
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Databases
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../databases/redis.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Redis
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../databases/sql.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SQL
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../databases/mongo-db.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
MongoDB
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Languages
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Languages
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/html/html.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
HTML
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/markdown.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Markdown
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/css/css.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
CSS
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/c/c.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
C
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/kotlin/kotlin.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Kotlin
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/swift/swift.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Swift
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_7" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_7" id="__nav_4_7_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Assembly
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_7_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_7">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Assembly
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/assembly/intel.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Intel
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/assembly/riscv.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
RISC-V
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_8" id="__nav_4_8_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Python
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_8_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_8">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Python
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/python.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Python
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_8_2" id="__nav_4_8_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Modules
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_8_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_8_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Modules
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/argparse.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
argparse
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/collections.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
collection
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/csv.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
csv
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/ftplib.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
ftplib
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/itertools.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
itertools
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/json.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
json
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/logging.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
logging
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/shutil.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
shutil
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/smtplib.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
smtplib
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/socket.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
socket
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/sqlite.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
sqlite
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/time-datetime.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
time & datetime
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/modules/unittest.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
unittest
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_8_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_8_3" id="__nav_4_8_3_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Libraries
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_8_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_8_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Libraries
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/libs/tkinter.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
TKinter
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/libs/numpy.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Numpy
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/libs/pandas.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Pandas
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/libs/seaborn.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Seaborn
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/libs/requests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Requests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/python/libs/beautiful-soup.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Beatiful Soup
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_9" id="__nav_4_9_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
.NET
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_9_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_9">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
.NET
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_1" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_9_1" id="__nav_4_9_1_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
C#
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_1_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_9_1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
C#
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/csharp/csharp.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
C#
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/csharp/linq.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Linq
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/csharp/collections.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Collections
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/csharp/reactive-extensions.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Reactive Extensions
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/csharp/async-programming.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Async Programming
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/csharp/unit-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Unit Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_9_2" id="__nav_4_9_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
ASP.NET
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_9_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
ASP.NET
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/asp.net/minimal-api.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Minimal API
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/asp.net/filters.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
FIlters
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/asp.net/middleware.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Middleware
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/asp.net/razor-syntax.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Razor Syntax
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/asp.net/blazor.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Blazor
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/asp.net/signalr.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SignalR
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/asp.net/web-forms.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Web Forms
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_9_3" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_9_3" id="__nav_4_9_3_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Database
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_9_3_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_9_3">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Database
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/database/ado.net.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
ADO.NET
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/dotnet/database/entity-framework.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Entity Framework
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_10" id="__nav_4_10_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Java
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_10_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_10">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Java
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/java/java.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Java
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/java/java-collection-framework.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Java Collection Framework
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/java/dao.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
DAO
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10_4" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_10_4" id="__nav_4_10_4_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Web
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_10_4_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_10_4">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Web
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/java/web/servlet.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Serverlet
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_10_4_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_10_4_2" id="__nav_4_10_4_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Spring
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="4" aria-labelledby="__nav_4_10_4_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_10_4_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Spring
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/java/spring/pom.xml.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
POM
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/java/spring/spring-project.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Project Structure
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_11" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_11" id="__nav_4_11_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PHP
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_11_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_11">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
PHP
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/php.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PHP
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/database.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Database
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/web.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Web
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/dependency-injection.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Dependency Injection
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/unit-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Unit Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/composer.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Composer
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/psr-7.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PSR 7
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/plates-templating.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Plates
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_11_9" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_11_9" id="__nav_4_11_9_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Simple MVC
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_11_9_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_11_9">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Simple MVC
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/simple-mvc/simple-mvc.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Simple MVC
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/php/simple-mvc/rest-api.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
REST API
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_12" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_12" id="__nav_4_12_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Rust
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_12_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_12">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Rust
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/rust/rust.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Rust
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/rust/macros.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Macros
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/rust/cargo.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Cargo
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/rust/concurrency.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Concurrency
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/rust/unit-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Unit Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_13" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_13" id="__nav_4_13_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Javascript
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_13_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_13">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Javascript
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/javascript.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Javascript
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/dom.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
DOM
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/events-animation.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Events & Animation
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/ajax.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
AJAX
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/jquery.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
jQuery
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_13_6" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_13_6" id="__nav_4_13_6_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
React
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="3" aria-labelledby="__nav_4_13_6_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_13_6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
React
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/react/react.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
React
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/react/react-router.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
React Router
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/react/react-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
React Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/react/redux.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Redux
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/react/redux-tests.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Redux Tests
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/javascript/svelte/svelte.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Svelte
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_14" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_14" id="__nav_4_14_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
PowerShell
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_14_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_14">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
PowerShell
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/powershell/scripting.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Scripting
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/powershell/commands.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Commands
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4_15" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_4_15" id="__nav_4_15_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Bash
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_4_15_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_4_15">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Bash
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/bash/scripting.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Scripting
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../languages/bash/commands.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Commands
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Misc
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_5">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Misc
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../misc/git.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Git
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../misc/graph-ql.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
GraphQL
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../misc/regular-expressions.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
RegEx
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../misc/ssh.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
SSH
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../misc/web-components.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
WebComponents
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Linux
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_6">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Linux
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_1" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_6_1" id="__nav_6_1_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Filesystem
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_1_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_6_1">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Filesystem
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../linux/filesystem/file-links.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
File Links
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../linux/filesystem/procfs.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
/proc
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../linux/filesystem/sysfs.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
/sys
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item md-nav__item--nested">
|
||
|
||
|
||
|
||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6_2" >
|
||
|
||
|
||
<label class="md-nav__link" for="__nav_6_2" id="__nav_6_2_label" tabindex="0">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
System Init
|
||
</span>
|
||
|
||
|
||
<span class="md-nav__icon md-icon"></span>
|
||
</label>
|
||
|
||
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_2_label" aria-expanded="false">
|
||
<label class="md-nav__title" for="__nav_6_2">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
System Init
|
||
</label>
|
||
<ul class="md-nav__list" data-md-scrollfix>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../linux/init/systemd.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
Systemd
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<li class="md-nav__item">
|
||
<a href="../linux/init/open-rc.html" class="md-nav__link">
|
||
|
||
|
||
<span class="md-ellipsis">
|
||
OpenRC
|
||
</span>
|
||
|
||
|
||
</a>
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
|
||
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
||
<div class="md-sidebar__scrollwrap">
|
||
<div class="md-sidebar__inner">
|
||
|
||
|
||
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<label class="md-nav__title" for="__toc">
|
||
<span class="md-nav__icon md-icon"></span>
|
||
Table of contents
|
||
</label>
|
||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#images-containers" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Images & Containers
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#containers-vs-virtual-machines" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Containers vs Virtual Machines
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-terminology" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker Terminology
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-cli" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker CLI
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Docker CLI">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-run" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker run
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-container" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker container
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-image" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker image
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-build" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker build
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-push" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
docker push
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#dockerfile" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Dockerfile
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Dockerfile">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#cmd-vs-entrypoint" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
CMD vs ENTRYPOINT
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-multi-stage-build" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker Multi-Stage Build
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#networking" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Networking
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="Networking">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#user-defined-networks" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
User-defined Networks
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#embedded-dns" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Embedded DNS
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#exposing-ports" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Exposing Ports
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-storage" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker Storage
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#file-system" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
File System
|
||
</span>
|
||
</a>
|
||
|
||
<nav class="md-nav" aria-label="File System">
|
||
<ul class="md-nav__list">
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#copy-on-write" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Copy-On-Write
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#volumes" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Volumes
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
</nav>
|
||
|
||
</li>
|
||
|
||
<li class="md-nav__item">
|
||
<a href="#docker-compose" class="md-nav__link">
|
||
<span class="md-ellipsis">
|
||
Docker Compose
|
||
</span>
|
||
</a>
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<div class="md-content" data-md-component="content">
|
||
<article class="md-content__inner md-typeset">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<h1 id="docker">Docker</h1>
|
||
<h2 id="images-containers">Images & Containers</h2>
|
||
<blockquote>
|
||
<p><strong>Containerization</strong> is an approach to software development in which an application or service, its dependencies, and its configuration (abstracted as deployment manifest files) are packaged together as a container image.</p>
|
||
</blockquote>
|
||
<p>Just as shipping containers allow goods to be transported by ship, train, or truck regardless of the cargo inside, software containers act as a standard unit of software deployment that can contain different code and dependencies. Containerizing software this way enables developers and IT professionals to deploy them across environments with little or no modification.</p>
|
||
<p>Containers also isolate applications from each other on a shared OS. Containerized applications run on top of a container host that in turn runs on the OS. Containers therefore have a much smaller footprint than virtual machine (VM) images.</p>
|
||
<p>In short, containers offer the benefits of isolation, portability, agility, scalability, and control across the entire application lifecycle workflow.</p>
|
||
<h2 id="containers-vs-virtual-machines">Containers vs Virtual Machines</h2>
|
||
<p>A container runs <em>natively</em> on Linux and shares the kernel of the host machine with other containers. It runs a discrete process, taking no more memory
|
||
than any other executable, making it lightweight.</p>
|
||
<p>By contrast, a <strong>virtual machine</strong> (VM) runs a full-blown "guest" operating system with <em>virtual</em> access to host resources through a hypervisor. In general,
|
||
VMs incur a lot of overhead beyond what is being consumed by your application logic.</p>
|
||
<p><img alt="container-architecture" src="../img/docker_container-architecture.svg" title="Container Architecture" />
|
||
<img alt="vm-architecture" src="../img/docker_virtual-machine-architecture.svg" title="Virtual Machine Architecture" /></p>
|
||
<h2 id="docker-terminology"><a href="https://docs.docker.com/glossary/">Docker Terminology</a></h2>
|
||
<p><img alt="docker-architecture" src="../img/docker_architecture.svg" title="Docker Architecture" /></p>
|
||
<p><strong>Container image</strong>: A package with all the dependencies and information needed to create a container. An image includes all the dependencies (such as frameworks) plus deployment and execution configuration to be used by a container runtime. Usually, an image derives from multiple base images that are layers stacked on top of each other to form the container’s filesystem. An image is immutable once it has been created.</p>
|
||
<p><strong>Dockerfile</strong>: A text file that contains instructions for building a Docker image. It’s like a batch script, the first line states the base image to begin with and then follow the instructions to install required programs, copy files, and so on, until you get the working environment you need.</p>
|
||
<p><strong>Build</strong>: The action of building a container image based on the information and context provided by its Dockerfile, plus additional files in the folder where the image is built. You can build images with the following Docker command: <code>docker build</code></p>
|
||
<p><strong>Container</strong>: An instance of a Docker image. A container represents the execution of a single application, process, or service. It consists of the contents of a Docker image, an execution environment, and a standard set of instructions. When scaling a service, you create multiple instances of a container from the same image. Or a batch job can create multiple containers from the same image, passing different parameters to each instance.</p>
|
||
<p><strong>Volumes</strong>: Offer a writable filesystem that the container can use. Since images are read-only but most programs need to write to the filesystem, volumes add a writable layer, on top of the container image, so the programs have access to a writable filesystem. The program doesn’t know it’s accessing a layered filesystem, it’s just the filesystem as usual. Volumes live in the host system and are managed by Docker.</p>
|
||
<p><strong>Tag</strong>: A mark or label you can apply to images so that different images or versions of the same image (depending on the version number or the target environment) can be identified.</p>
|
||
<p><strong>Multi-stage Build</strong>: Is a feature, since Docker 17.05 or higher, that helps to reduce the size of the final images. For example, a large base image, containing the SDK can be used for compiling and publishing and then a small runtime-only base image can be used to host the application.</p>
|
||
<p><strong>Repository (repo)</strong>: A collection of related Docker images, labeled with a tag that indicates the image version. Some repos contain multiple variants of a specific image, such as an image containing SDKs (heavier), an image containing only runtimes (lighter), etc. Those variants can be marked with tags. A single repo can contain platform variants, such as a Linux image and a Windows image.</p>
|
||
<p><strong>Registry</strong>: A service that provides access to repositories. The default registry for most public images is <a href="https://hub.docker.com/">Docker Hub</a> (owned by Docker as an organization). A registry usually contains repositories from multiple teams. Companies often have private registries to store and manage images they’ve created.</p>
|
||
<p><strong>Multi-arch image</strong>: For multi-architecture, it’s a feature that simplifies the selection of the appropriate image, according to the platform where Docker is running.</p>
|
||
<p><strong>Docker Hub</strong>: A public registry to upload images and work with them. Docker Hub provides Docker image hosting, public or private registries, build triggers and web hooks, and integration with GitHub and Bitbucket.</p>
|
||
<p><strong>Azure Container Registry</strong>: A public resource for working with Docker images and its components in Azure. This provides a registry that’s close to your deployments in Azure and that gives you control over access, making it possible to use your Azure Active Directory groups and permissions.</p>
|
||
<p><strong>Docker Trusted Registry (DTR)</strong>: A Docker registry service (from Docker) that can be installed on-premises so it lives within the organization’s datacenter and network. It’s convenient for private images that should be managed within the enterprise. Docker Trusted Registry is included as part of the Docker Datacenter product. For more information, see <a href="https://www.docker.com/sites/default/files/Docker%20Trusted%20Registry.pdf">Docker Trusted Registry (DTR)</a>.</p>
|
||
<p><strong>Docker Compose</strong>: A command-line tool and YAML file format with metadata for defining and running multi-container applications. You define a single application based on multiple images with one or more <code>.yml</code> files that can override values depending on the environment. After you’ve created the definitions, you can deploy the whole multi-container application with a single command (docker-compose up) that creates a container per image on the Docker host.</p>
|
||
<p><strong>Cluster</strong>: A collection of Docker hosts exposed as if it were a single virtual Docker host, so that the application can scale to multiple instances of the services spread across multiple hosts within the cluster. Docker clusters can be created with Kubernetes, Azure Service Fabric, Docker Swarm and Mesosphere DC/OS.</p>
|
||
<p><strong>Orchestrator</strong>: A tool that simplifies the management of clusters and Docker hosts. Orchestrators enable you to manage their images, containers, and hosts through a command-line interface (CLI) or a graphical UI. You can manage container networking, configurations, load balancing, service discovery, high availability, Docker host configuration, and more. An orchestrator is responsible for running, distributing, scaling, and healing workloads across a collection of nodes. Typically, orchestrator products are the same products that provide cluster infrastructure, like Kubernetes and Azure Service Fabric, among other offerings in the market.</p>
|
||
<hr />
|
||
<h2 id="docker-cli">Docker CLI</h2>
|
||
<h3 id="docker-run"><a href="https://docs.docker.com/engine/reference/commandline/run/"><code>docker run</code></a></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-0-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-0-10">10</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1"></a>docker<span class="w"> </span>run<span class="w"> </span><image><span class="w"> </span><span class="c1"># run selected app inside a container (downloaded from Docker Hub if missing from image)</span>
|
||
<a id="__codelineno-0-2" name="__codelineno-0-2"></a>docker<span class="w"> </span>run<span class="w"> </span>-d<span class="p">|</span>--detach<span class="w"> </span><image><span class="w"> </span><span class="c1"># run docker container in the background (does not occupy stdout & stderr)</span>
|
||
<a id="__codelineno-0-3" name="__codelineno-0-3"></a>docker<span class="w"> </span>run<span class="w"> </span>-i<span class="p">|</span>--interactive<span class="w"> </span><image><span class="w"> </span><span class="c1"># run docker container in interactive mode (read stdin)</span>
|
||
<a id="__codelineno-0-4" name="__codelineno-0-4"></a>docker<span class="w"> </span>run<span class="w"> </span>-t<span class="p">|</span>--tty<span class="w"> </span><image><span class="w"> </span><span class="c1"># run docker container allocating a pseudo-TTY (show prompts)</span>
|
||
<a id="__codelineno-0-5" name="__codelineno-0-5"></a>docker<span class="w"> </span>run<span class="w"> </span>-p<span class="p">|</span>--publish<span class="w"> </span><host_port>:<container_port><span class="w"> </span><image><span class="w"> </span><span class="c1"># map container ports</span>
|
||
<a id="__codelineno-0-6" name="__codelineno-0-6"></a>docker<span class="w"> </span>run<span class="w"> </span>-v<span class="p">|</span>--volume<span class="w"> </span><existing_host_dir>:<container_dir><span class="w"> </span><image><span class="w"> </span><span class="c1"># map container directory to a host directory (external volumes)</span>
|
||
<a id="__codelineno-0-7" name="__codelineno-0-7"></a>docker<span class="w"> </span>run<span class="w"> </span>-v<span class="p">|</span>--volume<span class="w"> </span><volume_name>:<container_dir><span class="w"> </span><image><span class="w"> </span><span class="c1"># map container directory to a host directory under the docker main folder (external volumes)</span>
|
||
<a id="__codelineno-0-8" name="__codelineno-0-8"></a>docker<span class="w"> </span>run<span class="w"> </span>-e<span class="p">|</span>--env<span class="w"> </span><span class="nv">NAME</span><span class="o">=</span>value<span class="w"> </span><image><span class="w"> </span><span class="c1"># set container env vars</span>
|
||
<a id="__codelineno-0-9" name="__codelineno-0-9"></a>docker<span class="w"> </span>run<span class="w"> </span>--entrypoint<span class="w"> </span><executable><span class="w"> </span><args><span class="w"> </span><image><span class="w"> </span><span class="c1"># run with a non-default entrypoint</span>
|
||
<a id="__codelineno-0-10" name="__codelineno-0-10"></a>docker<span class="w"> </span>run<span class="w"> </span>--name<span class="o">=</span><container_name><span class="w"> </span><image><span class="w"> </span><span class="c1"># set container name</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<blockquote>
|
||
<p><strong>Warn</strong>: <code><image></code> must be last argument</p>
|
||
</blockquote>
|
||
<h3 id="docker-container"><a href="https://docs.docker.com/engine/reference/commandline/container/"><code>docker container</code></a></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-1-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-1-12">12</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1"></a>docker<span class="w"> </span>container<span class="w"> </span>ls<span class="w"> </span><span class="c1"># list of currently running containers</span>
|
||
<a id="__codelineno-1-2" name="__codelineno-1-2"></a>docker<span class="w"> </span>container<span class="w"> </span>ls<span class="w"> </span>-a<span class="p">|</span>--all<span class="w"> </span><span class="c1"># list of all containers, running and exited</span>
|
||
<a id="__codelineno-1-3" name="__codelineno-1-3"></a>docker<span class="w"> </span>container<span class="w"> </span>rm<span class="w"> </span><container><span class="w"> </span><span class="c1"># remove one or more containers</span>
|
||
<a id="__codelineno-1-4" name="__codelineno-1-4"></a>docker<span class="w"> </span>container<span class="w"> </span>prune<span class="w"> </span><span class="c1"># remove stopped containers</span>
|
||
<a id="__codelineno-1-5" name="__codelineno-1-5"></a>
|
||
<a id="__codelineno-1-6" name="__codelineno-1-6"></a>docker<span class="w"> </span>container<span class="w"> </span>inspect<span class="w"> </span><container><span class="w"> </span><span class="c1"># full details about a container</span>
|
||
<a id="__codelineno-1-7" name="__codelineno-1-7"></a>docker<span class="w"> </span>container<span class="w"> </span>logs<span class="w"> </span><container><span class="w"> </span><span class="c1"># see container logs</span>
|
||
<a id="__codelineno-1-8" name="__codelineno-1-8"></a>
|
||
<a id="__codelineno-1-9" name="__codelineno-1-9"></a>docker<span class="w"> </span>container<span class="w"> </span>stop<span class="w"> </span><container><span class="w"> </span><span class="c1"># stop a running container</span>
|
||
<a id="__codelineno-1-10" name="__codelineno-1-10"></a>docker<span class="w"> </span>container<span class="w"> </span>start<span class="w"> </span><container><span class="w"> </span><span class="c1"># start a stopped container</span>
|
||
<a id="__codelineno-1-11" name="__codelineno-1-11"></a>
|
||
<a id="__codelineno-1-12" name="__codelineno-1-12"></a>docker<span class="w"> </span>container<span class="w"> </span><span class="nb">exec</span><span class="w"> </span><container><span class="w"> </span><command><span class="w"> </span><span class="c1"># exec a command inside a container</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="docker-image"><a href="https://docs.docker.com/engine/reference/commandline/image/"><code>docker image</code></a></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-2-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-2-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-2-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-2-4">4</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1"></a>docker<span class="w"> </span>image<span class="w"> </span>ls<span class="w"> </span><span class="c1"># list of existing images</span>
|
||
<a id="__codelineno-2-2" name="__codelineno-2-2"></a>docker<span class="w"> </span>image<span class="w"> </span>rm<span class="w"> </span><image><span class="w"> </span><span class="c1"># remove one or more images</span>
|
||
<a id="__codelineno-2-3" name="__codelineno-2-3"></a>docker<span class="w"> </span>image<span class="w"> </span>prune<span class="w"> </span><image><span class="w"> </span><span class="c1"># remove unused images</span>
|
||
<a id="__codelineno-2-4" name="__codelineno-2-4"></a>docker<span class="w"> </span>image<span class="w"> </span>pull<span class="w"> </span><image><span class="w"> </span><span class="c1"># download an image w/o starting the container</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="docker-build"><a href="https://docs.docker.com/engine/reference/commandline/build/"><code>docker build</code></a></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-3-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-3-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1"></a>docker<span class="w"> </span>build<span class="w"> </span>-t<span class="w"> </span><tag><span class="w"> </span>-f<span class="w"> </span><dockerfile><span class="w"> </span><context><span class="w"> </span><span class="c1"># build image with specific tag (usually user/app:version)</span>
|
||
<a id="__codelineno-3-2" name="__codelineno-3-2"></a>docker<span class="w"> </span>build<span class="w"> </span>-t<span class="w"> </span><tag><span class="w"> </span>-f<span class="w"> </span><dockerfile><span class="w"> </span>--build-arg<span class="w"> </span><span class="nv">ARG</span><span class="o">=</span>value<span class="w"> </span><context><span class="w"> </span><span class="c1"># pass args to ARG steps</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="docker-push"><a href="https://docs.docker.com/engine/reference/commandline/push/"><code>docker push</code></a></h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-4-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1"></a>docker<span class="w"> </span>push<span class="w"> </span><image><span class="w"> </span><span class="c1"># publish image to registry (defaults to Docker Hub)</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h2 id="dockerfile"><a href="https://docs.docker.com/engine/reference/builder/">Dockerfile</a></h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Docker</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-5-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-5-25">25</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1"></a><span class="c"># starting image or scratch</span>
|
||
<a id="__codelineno-5-2" name="__codelineno-5-2"></a><span class="k">FROM</span><span class="w"> </span><span class="s"><base_image>:<tag></span>
|
||
<a id="__codelineno-5-3" name="__codelineno-5-3"></a>
|
||
<a id="__codelineno-5-4" name="__codelineno-5-4"></a><span class="c"># run commands (e.g: install dependencies)</span>
|
||
<a id="__codelineno-5-5" name="__codelineno-5-5"></a><span class="k">RUN</span><span class="w"> </span><command>
|
||
<a id="__codelineno-5-6" name="__codelineno-5-6"></a>
|
||
<a id="__codelineno-5-7" name="__codelineno-5-7"></a><span class="c"># define working directory (usually /app)</span>
|
||
<a id="__codelineno-5-8" name="__codelineno-5-8"></a><span class="k">WORKDIR</span><span class="w"> </span><span class="s"><path></span>
|
||
<a id="__codelineno-5-9" name="__codelineno-5-9"></a>
|
||
<a id="__codelineno-5-10" name="__codelineno-5-10"></a><span class="c"># copy source code into the image in a specified location</span>
|
||
<a id="__codelineno-5-11" name="__codelineno-5-11"></a><span class="k">COPY</span><span class="w"> </span><src><span class="w"> </span><dir_in_container>
|
||
<a id="__codelineno-5-12" name="__codelineno-5-12"></a>
|
||
<a id="__codelineno-5-13" name="__codelineno-5-13"></a><span class="c"># accept args from docker run (--build-arg arg_name=value)</span>
|
||
<a id="__codelineno-5-14" name="__codelineno-5-14"></a><span class="k">ARG</span><span class="w"> </span><arg_name>
|
||
<a id="__codelineno-5-15" name="__codelineno-5-15"></a>
|
||
<a id="__codelineno-5-16" name="__codelineno-5-16"></a><span class="c"># set env values inside the container</span>
|
||
<a id="__codelineno-5-17" name="__codelineno-5-17"></a><span class="k">ENV</span><span class="w"> </span><ENV_VAR><span class="w"> </span><value>
|
||
<a id="__codelineno-5-18" name="__codelineno-5-18"></a>
|
||
<a id="__codelineno-5-19" name="__codelineno-5-19"></a><span class="c"># Exec form (Preferred form)</span>
|
||
<a id="__codelineno-5-20" name="__codelineno-5-20"></a><span class="k">CMD</span><span class="w"> </span><span class="p">[</span><span class="s2">"<executable>"</span><span class="p">,</span><span class="w"> </span><span class="s2">"<arg1>"</span><span class="p">,</span><span class="w"> </span><span class="s2">"<arg2>"</span><span class="p">]</span>
|
||
<a id="__codelineno-5-21" name="__codelineno-5-21"></a><span class="k">ENTRYPOINT</span><span class="w"> </span><span class="p">[</span><span class="s2">"<executable>"</span><span class="p">,</span><span class="w"> </span><span class="s2">"<arg1>"</span><span class="p">,</span><span class="w"> </span><span class="s2">"<arg2>"</span><span class="p">]</span>
|
||
<a id="__codelineno-5-22" name="__codelineno-5-22"></a>
|
||
<a id="__codelineno-5-23" name="__codelineno-5-23"></a><span class="c"># Shell form</span>
|
||
<a id="__codelineno-5-24" name="__codelineno-5-24"></a><span class="k">CMD</span><span class="w"> </span><executable><span class="w"> </span><arg1><span class="w"> </span><arg2>
|
||
<a id="__codelineno-5-25" name="__codelineno-5-25"></a><span class="k">ENTRYPOINT</span><span class="w"> </span><executable><span class="w"> </span><arg1><span class="w"> </span><arg2>
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="cmd-vs-entrypoint"><code>CMD</code> vs <code>ENTRYPOINT</code></h3>
|
||
<p><code>CMD</code> is used to provide all the default scenarios which can be overridden. <em>Anything</em> defined in CMD can be overridden by passing arguments in <code>docker run</code> command.</p>
|
||
<p><code>ENTRYPOINT</code> is used to define a specific executable (and it's arguments) to be executed during container invocation which cannot be overridden.<br />
|
||
The user can however define arguments to be passed in the executable by adding them in the <code>docker run</code> command.</p>
|
||
<h2 id="docker-multi-stage-build"><a href="https://docs.docker.com/develop/develop-images/multistage-build/">Docker Multi-Stage Build</a></h2>
|
||
<p>With multi-stage builds, it's possible to use multiple <code>FROM</code> statements in the Dockerfile. Each <code>FROM</code> instruction can use a different base, and each of them begins a new stage of the build.</p>
|
||
<p>It's possible to selectively copy artifacts from one stage to another, leaving behind everything not wanted in the final image.</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Docker</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-6-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-6-23">23</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1"></a><span class="k">FROM</span><span class="w"> </span><span class="s"><base_image>:<tag></span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="s"><runtime_alias></span>
|
||
<a id="__codelineno-6-2" name="__codelineno-6-2"></a><span class="k">RUN</span><span class="w"> </span><command><span class="w"> </span>#<span class="w"> </span>install<span class="w"> </span>external<span class="w"> </span>dependencies<span class="w"> </span><span class="o">(</span>apt<span class="w"> </span>get<span class="w"> </span>...<span class="o">)</span>
|
||
<a id="__codelineno-6-3" name="__codelineno-6-3"></a>
|
||
<a id="__codelineno-6-4" name="__codelineno-6-4"></a><span class="c"># --- START of BUILD LAYERS --- #</span>
|
||
<a id="__codelineno-6-5" name="__codelineno-6-5"></a><span class="k">FROM</span><span class="w"> </span><span class="s"><base_image>:<tag></span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="s"><build_alias></span>
|
||
<a id="__codelineno-6-6" name="__codelineno-6-6"></a><span class="k">WORKDIR</span><span class="w"> </span><span class="s"><app_path></span>
|
||
<a id="__codelineno-6-7" name="__codelineno-6-7"></a>
|
||
<a id="__codelineno-6-8" name="__codelineno-6-8"></a><span class="c"># install project dependencies</span>
|
||
<a id="__codelineno-6-9" name="__codelineno-6-9"></a><span class="k">COPY</span><span class="w"> </span><src><span class="w"> </span><dir_in_container><span class="w"> </span>#<span class="w"> </span>add<span class="w"> </span>lockfiles
|
||
<a id="__codelineno-6-10" name="__codelineno-6-10"></a><span class="k">RUN</span><span class="w"> </span><command><span class="w"> </span>#<span class="w"> </span>install<span class="w"> </span>project<span class="w"> </span>dependencies<span class="w"> </span>from<span class="w"> </span>lockfiles
|
||
<a id="__codelineno-6-11" name="__codelineno-6-11"></a>
|
||
<a id="__codelineno-6-12" name="__codelineno-6-12"></a><span class="k">COPY</span><span class="w"> </span><src><span class="w"> </span>.<dir_in_container><span class="w"> </span>#<span class="w"> </span>bring<span class="w"> </span><span class="k">in</span><span class="w"> </span>all<span class="w"> </span><span class="nb">source</span><span class="w"> </span>code
|
||
<a id="__codelineno-6-13" name="__codelineno-6-13"></a><span class="k">WORKDIR</span><span class="w"> </span><span class="s"><build_location></span>
|
||
<a id="__codelineno-6-14" name="__codelineno-6-14"></a><span class="k">ARG</span><span class="w"> </span>version
|
||
<a id="__codelineno-6-15" name="__codelineno-6-15"></a><span class="k">RUN</span><span class="w"> </span><command><span class="w"> </span>#<span class="w"> </span>build<span class="w"> </span>project
|
||
<a id="__codelineno-6-16" name="__codelineno-6-16"></a><span class="c"># --- END of BUILD LAYERS --- #</span>
|
||
<a id="__codelineno-6-17" name="__codelineno-6-17"></a>
|
||
<a id="__codelineno-6-18" name="__codelineno-6-18"></a><span class="k">FROM</span><span class="w"> </span><span class="s"><runtime_alias></span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="s"><deploy_alias></span>
|
||
<a id="__codelineno-6-19" name="__codelineno-6-19"></a><span class="k">WORKDIR</span><span class="w"> </span><span class="s"><app_path></span>
|
||
<a id="__codelineno-6-20" name="__codelineno-6-20"></a>
|
||
<a id="__codelineno-6-21" name="__codelineno-6-21"></a><span class="c"># bring in release build files</span>
|
||
<a id="__codelineno-6-22" name="__codelineno-6-22"></a><span class="k">COPY</span><span class="w"> </span>--from<span class="o">=</span><build_alias<span class="p">|</span>stage_number><span class="w"> </span><src><span class="w"> </span><dir_in_container>
|
||
<a id="__codelineno-6-23" name="__codelineno-6-23"></a><span class="k">CMD</span><span class="w"> </span><span class="p">[</span><span class="s2">"executable"</span><span class="p">]</span><span class="w"> </span>#<span class="w"> </span>run<span class="w"> </span>app
|
||
</code></pre></div></td></tr></table></div>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Docker</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-7-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-7-24">24</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1"></a><span class="k">FROM</span><span class="w"> </span><span class="s">mcr.microsoft.com/dotnet/<runtime|aspnet>:<alpine_tag></span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="s">runtime</span>
|
||
<a id="__codelineno-7-2" name="__codelineno-7-2"></a><span class="k">RUN</span><span class="w"> </span><command><span class="w"> </span>#<span class="w"> </span>install<span class="w"> </span>external<span class="w"> </span>dependencies<span class="w"> </span><span class="o">(</span>apt<span class="w"> </span>get<span class="w"> </span>...<span class="o">)</span>
|
||
<a id="__codelineno-7-3" name="__codelineno-7-3"></a>
|
||
<a id="__codelineno-7-4" name="__codelineno-7-4"></a><span class="c"># --- START of BUILD LAYERS --- #</span>
|
||
<a id="__codelineno-7-5" name="__codelineno-7-5"></a><span class="k">FROM</span><span class="w"> </span><span class="s">mcr.microsoft.com/dotnet/sdk:<tag></span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="s">build</span>
|
||
<a id="__codelineno-7-6" name="__codelineno-7-6"></a><span class="k">WORKDIR</span><span class="w"> </span><span class="s">/app</span>
|
||
<a id="__codelineno-7-7" name="__codelineno-7-7"></a>
|
||
<a id="__codelineno-7-8" name="__codelineno-7-8"></a><span class="c"># install project dependencies</span>
|
||
<a id="__codelineno-7-9" name="__codelineno-7-9"></a><span class="k">COPY</span><span class="w"> </span>*.sln<span class="w"> </span>./src
|
||
<a id="__codelineno-7-10" name="__codelineno-7-10"></a><span class="k">COPY</span><span class="w"> </span>src/*.csproj<span class="w"> </span>./src
|
||
<a id="__codelineno-7-11" name="__codelineno-7-11"></a><span class="k">RUN</span><span class="w"> </span>dotnet<span class="w"> </span>restore
|
||
<a id="__codelineno-7-12" name="__codelineno-7-12"></a>
|
||
<a id="__codelineno-7-13" name="__codelineno-7-13"></a><span class="c"># publish app</span>
|
||
<a id="__codelineno-7-14" name="__codelineno-7-14"></a><span class="k">COPY</span><span class="w"> </span>/src<span class="w"> </span>./src<span class="w"> </span>#<span class="w"> </span>bring<span class="w"> </span><span class="k">in</span><span class="w"> </span>all<span class="w"> </span><span class="nb">source</span><span class="w"> </span>code
|
||
<a id="__codelineno-7-15" name="__codelineno-7-15"></a><span class="k">WORKDIR</span><span class="w"> </span><span class="s">/app/src # reposition to build location</span>
|
||
<a id="__codelineno-7-16" name="__codelineno-7-16"></a><span class="k">ARG</span><span class="w"> </span>version
|
||
<a id="__codelineno-7-17" name="__codelineno-7-17"></a><span class="k">RUN</span><span class="w"> </span>dotnet<span class="w"> </span>publish<span class="w"> </span><project><span class="p">|</span><solution><span class="w"> </span>-c<span class="w"> </span>Release<span class="w"> </span>-o<span class="w"> </span>out<span class="w"> </span>/p:Version<span class="o">=</span><span class="nv">$version</span>
|
||
<a id="__codelineno-7-18" name="__codelineno-7-18"></a><span class="c"># --- END of BUILD LAYERS --- #</span>
|
||
<a id="__codelineno-7-19" name="__codelineno-7-19"></a>
|
||
<a id="__codelineno-7-20" name="__codelineno-7-20"></a><span class="k">FROM</span><span class="w"> </span><span class="s">runtime</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="s">final-runtime</span>
|
||
<a id="__codelineno-7-21" name="__codelineno-7-21"></a><span class="k">WORKDIR</span><span class="w"> </span><span class="s">/app</span>
|
||
<a id="__codelineno-7-22" name="__codelineno-7-22"></a><span class="k">COPY</span><span class="w"> </span>--from<span class="o">=</span>build<span class="w"> </span>/app/out<span class="w"> </span>.
|
||
<a id="__codelineno-7-23" name="__codelineno-7-23"></a>
|
||
<a id="__codelineno-7-24" name="__codelineno-7-24"></a><span class="k">ENTRYPOINT</span><span class="w"> </span><span class="p">[</span><span class="s2">"dotnet"</span><span class="p">,</span><span class="w"> </span><span class="s2">"<project>.dll"</span><span class="p">]</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<hr />
|
||
<h2 id="networking"><a href="https://docs.docker.com/engine/reference/commandline/network/">Networking</a></h2>
|
||
<p>Starting container networks: <code>bridge</code> (default), <code>none</code>, <code>host</code>.</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-8-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-8-3">3</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1"></a>docker<span class="w"> </span>run<span class="w"> </span><image><span class="w"> </span>--network<span class="o">=</span>none/host<span class="w"> </span><span class="c1"># specify a non-default network to be used</span>
|
||
<a id="__codelineno-8-2" name="__codelineno-8-2"></a>docker<span class="w"> </span>run<span class="w"> </span><image><span class="w"> </span>--add-host<span class="o">=</span><hostname>:<ip><span class="w"> </span><span class="c1"># add hostname mapping</span>
|
||
<a id="__codelineno-8-3" name="__codelineno-8-3"></a>docker<span class="w"> </span>network<span class="w"> </span>ls<span class="w"> </span><span class="c1"># list all available networks</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<ul>
|
||
<li><strong>Bridge</strong>: Private internal network created by Docker.
|
||
All containers ara attached to this network by default and get an IP in the <code>172.17.xxx.xxx-172.12.xxx.xxx</code> series.<br />
|
||
Containers can access each other by using the IP <code>172.17.0.1</code>.<br />
|
||
It is possible to create multiple sub-networks in the bridge network to isolate groups of containers from each other.</li>
|
||
<li><strong>Host</strong>: Removes any network isolation between the host and the containers. Cannot run multiple containers on the same port.</li>
|
||
<li><strong>None</strong>: Containers are not attached to a network and cannot access other containers or the external network.</li>
|
||
</ul>
|
||
<blockquote>
|
||
<p><strong>Note</strong>: Mapping <code>host-gateway</code> to an hostname allows the container to reach the host network even with networks types different from <code>host</code></p>
|
||
</blockquote>
|
||
<h3 id="user-defined-networks">User-defined Networks</h3>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-9-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1"></a>docker<span class="w"> </span>network<span class="w"> </span>create<span class="w"> </span>--driver<span class="w"> </span>NETWORK_TYPE<span class="w"> </span>--subnet<span class="w"> </span>GATEWAY_TP/SUBNET_MASK_SIZE<span class="w"> </span>NETWORK_NAME
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="embedded-dns">Embedded DNS</h3>
|
||
<p>Docker has an internal DNS that allows finding other container by their name instead of their IP. The DNS always runs at the address <code>127.0.0.11</code>.</p>
|
||
<h3 id="exposing-ports">Exposing Ports</h3>
|
||
<p>By default, containers on bridge networks don't expose any ports to the outside world. Using the <code>--publish</code> or <code>-p</code> flag makes a port available to services outside the bridge network. This creates a firewall rule in the host, mapping a container port to a port on the Docker host to the outside world.</p>
|
||
<p>Here are some examples:</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Flag value</th>
|
||
<th>Description</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>-p 8080:80</code></td>
|
||
<td>Map port <code>8080</code> on the host to <strong>TCP</strong> port <code>80</code> in the container.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>-p 192.168.1.100:8080:80</code></td>
|
||
<td>Map port <code>8080</code> on the host IP <code>192.168.1.100</code> to <strong>TCP</strong> port <code>80</code> in the container.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>-p 8080:80/udp</code></td>
|
||
<td>Map port <code>8080</code> on the host to <strong>UDP</strong> port <code>80</code> in the container.</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>-p 8080:80/tcp -p 8080:80/udp</code></td>
|
||
<td>Map <strong>TCP</strong> and <strong>UDP</strong> port <code>8080</code> on the host to TCP and UDP port <code>80</code> in the container.</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<blockquote>
|
||
<p><strong>Warn</strong>: Publishing container ports is <em>insecure by default</em>. A published port it becomes available not only to the host, but to the outside world as well.<br />
|
||
If the localhost IP address (<code>127.0.0.1</code>, or <code>::1</code>) is included with the publish flag, only the host and its containers can access the published container port.</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-10-1">1</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1"></a>docker<span class="w"> </span>run<span class="w"> </span>--publish<span class="w"> </span><span class="m">127</span>.0.0.1:8080:80<span class="w"> </span>--publish<span class="w"> </span><span class="s1">'[::1]:8080:80'</span><span class="w"> </span>nginx
|
||
</code></pre></div></td></tr></table></div>
|
||
</blockquote>
|
||
<hr />
|
||
<h2 id="docker-storage">Docker Storage</h2>
|
||
<h2 id="file-system">File System</h2>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-11-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-2">2</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-3">3</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-4">4</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-5">5</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-6">6</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-7">7</a></span>
|
||
<span class="normal"><a href="#__codelineno-11-8">8</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1"></a>/var/lib/docker
|
||
<a id="__codelineno-11-2" name="__codelineno-11-2"></a><span class="p">|</span>_<storage_driver>
|
||
<a id="__codelineno-11-3" name="__codelineno-11-3"></a><span class="p">|</span>_containers
|
||
<a id="__codelineno-11-4" name="__codelineno-11-4"></a><span class="p">|</span>_image
|
||
<a id="__codelineno-11-5" name="__codelineno-11-5"></a><span class="p">|</span>_network
|
||
<a id="__codelineno-11-6" name="__codelineno-11-6"></a><span class="p">|</span>_volumes
|
||
<a id="__codelineno-11-7" name="__codelineno-11-7"></a><span class="p">|</span><span class="w"> </span><span class="p">|</span>_specific_volume
|
||
<a id="__codelineno-11-8" name="__codelineno-11-8"></a><span class="p">|</span>_...
|
||
</code></pre></div></td></tr></table></div>
|
||
<h3 id="copy-on-write">Copy-On-Write</h3>
|
||
<p>To modify a file during while the container runs docker creates a local copy in the specific container and the local copy will be modified.</p>
|
||
<h3 id="volumes">Volumes</h3>
|
||
<p><strong>volume mounting</strong>: create a volume under the docker installation folder (<code>/var/lib/docker/volumes/</code>).
|
||
<strong>bind mounting</strong>: link docker to an exiting folder to be used as a volume.</p>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">Bash</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-12-1">1</a></span>
|
||
<span class="normal"><a href="#__codelineno-12-2">2</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1"></a>docker<span class="w"> </span>run<span class="w"> </span>-v<span class="w"> </span><existing_dir>:<container_dir><span class="w"> </span><image>:<tag><span class="w"> </span><span class="c1"># older command for bind mounting</span>
|
||
<a id="__codelineno-12-2" name="__codelineno-12-2"></a>docker<span class="w"> </span>run<span class="w"> </span>--mount<span class="w"> </span><span class="nv">type</span><span class="o">=</span>bind,<span class="w"> </span><span class="nv">source</span><span class="o">=</span>:<existing_dir>,<span class="w"> </span><span class="nv">target</span><span class="o">=</span><container_dir><span class="w"> </span><image>:<tag><span class="w"> </span><span class="c1"># modern command for bind mounting</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
<hr />
|
||
<h2 id="docker-compose">Docker Compose</h2>
|
||
<p>Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.</p>
|
||
<p>Using Compose is basically a three-step process:</p>
|
||
<ol>
|
||
<li>Define the app’s environment with a <code>Dockerfile</code> so it can be reproduced anywhere.</li>
|
||
<li>Define the services that make up your app in <code>docker-compose.yml</code> so they can be run together in an isolated environment.</li>
|
||
<li>Run <code>docker-compose up</code> and Compose starts and runs the entire app.</li>
|
||
</ol>
|
||
<div class="highlight"><table class="highlighttable"><tr><th colspan="2" class="filename"><span class="filename">YAML</span></th></tr><tr><td class="linenos"><div class="linenodiv"><pre><span></span><span class="normal"><a href="#__codelineno-13-1"> 1</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-2"> 2</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-3"> 3</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-4"> 4</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-5"> 5</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-6"> 6</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-7"> 7</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-8"> 8</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-9"> 9</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-10">10</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-11">11</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-12">12</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-13">13</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-14">14</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-15">15</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-16">16</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-17">17</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-18">18</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-19">19</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-20">20</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-21">21</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-22">22</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-23">23</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-24">24</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-25">25</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-26">26</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-27">27</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-28">28</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-29">29</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-30">30</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-31">31</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-32">32</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-33">33</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-34">34</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-35">35</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-36">36</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-37">37</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-38">38</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-39">39</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-40">40</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-41">41</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-42">42</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-43">43</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-44">44</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-45">45</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-46">46</a></span>
|
||
<span class="normal"><a href="#__codelineno-13-47">47</a></span></pre></div></td><td class="code"><div><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1"></a><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">3.x</span>
|
||
<a id="__codelineno-13-2" name="__codelineno-13-2"></a><span class="nt">services</span><span class="p">:</span>
|
||
<a id="__codelineno-13-3" name="__codelineno-13-3"></a><span class="w"> </span><span class="nt"><service_name></span><span class="p">:</span>
|
||
<a id="__codelineno-13-4" name="__codelineno-13-4"></a><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><image_name></span>
|
||
<a id="__codelineno-13-5" name="__codelineno-13-5"></a><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><image_url></span>
|
||
<a id="__codelineno-13-6" name="__codelineno-13-6"></a><span class="w"> </span><span class="nt">build</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><path></span><span class="w"> </span><span class="c1"># path to folder containing a Dockerfile to build the image</span>
|
||
<a id="__codelineno-13-7" name="__codelineno-13-7"></a><span class="w"> </span><span class="nt">build</span><span class="p">:</span>
|
||
<a id="__codelineno-13-8" name="__codelineno-13-8"></a><span class="w"> </span><span class="nt">context</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><path></span>
|
||
<a id="__codelineno-13-9" name="__codelineno-13-9"></a><span class="w"> </span><span class="nt">dockerfile</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><*.Dockerfile></span>
|
||
<a id="__codelineno-13-10" name="__codelineno-13-10"></a><span class="w"> </span><span class="nt">args</span><span class="p">:</span><span class="w"> </span><span class="c1"># pass args to dockerfile</span>
|
||
<a id="__codelineno-13-11" name="__codelineno-13-11"></a><span class="w"> </span><span class="nt">ARG</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><value></span>
|
||
<a id="__codelineno-13-12" name="__codelineno-13-12"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ARG=<value></span>
|
||
<a id="__codelineno-13-13" name="__codelineno-13-13"></a><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w"> </span>
|
||
<a id="__codelineno-13-14" name="__codelineno-13-14"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><host_port>:<container_port></span>
|
||
<a id="__codelineno-13-15" name="__codelineno-13-15"></a><span class="w"> </span><span class="nt">extra_hosts</span><span class="p">:</span><span class="w"> </span><span class="c1"># add hostname mappings to container network interface config</span>
|
||
<a id="__codelineno-13-16" name="__codelineno-13-16"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><hostname>:<ip></span>
|
||
<a id="__codelineno-13-17" name="__codelineno-13-17"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><hostname>:host-gateway</span><span class="w"> </span><span class="c1"># map host machine network</span>
|
||
<a id="__codelineno-13-18" name="__codelineno-13-18"></a><span class="w"> </span><span class="nt">profiles</span><span class="p">:</span><span class="w"> </span><span class="c1"># partition services into sets</span>
|
||
<a id="__codelineno-13-19" name="__codelineno-13-19"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><profile_name></span>
|
||
<a id="__codelineno-13-20" name="__codelineno-13-20"></a><span class="w"> </span><span class="nt">networks</span><span class="p">:</span><span class="w"> </span><span class="c1"># attach container to one or more networks</span>
|
||
<a id="__codelineno-13-21" name="__codelineno-13-21"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><network_name></span>
|
||
<a id="__codelineno-13-22" name="__codelineno-13-22"></a><span class="w"> </span><span class="nt">depends_on</span><span class="p">:</span><span class="w"> </span><span class="c1"># make sure dependencies are running before this container</span>
|
||
<a id="__codelineno-13-23" name="__codelineno-13-23"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><container_name></span>
|
||
<a id="__codelineno-13-24" name="__codelineno-13-24"></a><span class="w"> </span><span class="nt">environment</span><span class="p">:</span><span class="w"> </span><span class="c1"># declare a env vars for this service</span>
|
||
<a id="__codelineno-13-25" name="__codelineno-13-25"></a><span class="w"> </span><span class="nt">ENV_VAR</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><value></span>
|
||
<a id="__codelineno-13-26" name="__codelineno-13-26"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">ENV_VAR=<value></span>
|
||
<a id="__codelineno-13-27" name="__codelineno-13-27"></a><span class="w"> </span><span class="nt">env_file</span><span class="p">:</span>
|
||
<a id="__codelineno-13-28" name="__codelineno-13-28"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><path/to/env/file></span><span class="w"> </span><span class="c1"># reusable env file</span>
|
||
<a id="__codelineno-13-29" name="__codelineno-13-29"></a><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span>
|
||
<a id="__codelineno-13-30" name="__codelineno-13-30"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">"./<rel/path/to/volume>:<in/container/path/to/data>"</span><span class="w"> </span><span class="c1"># service-dedicated volume</span>
|
||
<a id="__codelineno-13-31" name="__codelineno-13-31"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="s">"<volume_name>:<in/container/path/to/data>"</span><span class="w"> </span><span class="c1"># reuseable volume</span>
|
||
<a id="__codelineno-13-32" name="__codelineno-13-32"></a><span class="w"> </span><span class="nt">healthcheck</span><span class="p">:</span>
|
||
<a id="__codelineno-13-33" name="__codelineno-13-33"></a><span class="w"> </span><span class="nt">disable</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain"><bool></span><span class="w"> </span><span class="c1"># set to true to disable</span>
|
||
<a id="__codelineno-13-34" name="__codelineno-13-34"></a><span class="w"> </span><span class="nt">test</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">curl -f http://localhost</span><span class="w"> </span><span class="c1"># set to ["NONE"] to disable</span>
|
||
<a id="__codelineno-13-35" name="__codelineno-13-35"></a><span class="w"> </span><span class="nt">interval</span><span class="p">:</span><span class="w"> </span><span class="c1"># interval between checks (default 30s)</span>
|
||
<a id="__codelineno-13-36" name="__codelineno-13-36"></a><span class="w"> </span><span class="nt">timeout</span><span class="p">:</span><span class="w"> </span><span class="c1"># check fail timeout (default 30s)</span>
|
||
<a id="__codelineno-13-37" name="__codelineno-13-37"></a><span class="w"> </span><span class="nt">retries</span><span class="p">:</span><span class="w"> </span><span class="c1"># num of retries before unhealty (default 3)</span>
|
||
<a id="__codelineno-13-38" name="__codelineno-13-38"></a><span class="w"> </span><span class="nt">start_period</span><span class="p">:</span><span class="w"> </span><span class="c1"># container init grace pediod (default 5s)</span>
|
||
<a id="__codelineno-13-39" name="__codelineno-13-39"></a><span class="w"> </span><span class="nt">start_interval</span><span class="p">:</span><span class="w"> </span><span class="c1"># check interval in start period</span>
|
||
<a id="__codelineno-13-40" name="__codelineno-13-40"></a>
|
||
<a id="__codelineno-13-41" name="__codelineno-13-41"></a><span class="c1"># reusable volume definitions</span>
|
||
<a id="__codelineno-13-42" name="__codelineno-13-42"></a><span class="nt">volumes</span><span class="p">:</span>
|
||
<a id="__codelineno-13-43" name="__codelineno-13-43"></a><span class="w"> </span><span class="p p-Indicator">-</span><span class="w"> </span><span class="nt"><volume_name></span><span class="p">:</span>
|
||
<a id="__codelineno-13-44" name="__codelineno-13-44"></a>
|
||
<a id="__codelineno-13-45" name="__codelineno-13-45"></a><span class="c1"># create networks</span>
|
||
<a id="__codelineno-13-46" name="__codelineno-13-46"></a><span class="nt">networks</span><span class="p">:</span>
|
||
<a id="__codelineno-13-47" name="__codelineno-13-47"></a><span class="w"> </span><span class="nt"><network_name></span><span class="p">:</span>
|
||
</code></pre></div></td></tr></table></div>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
</article>
|
||
</div>
|
||
|
||
|
||
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
||
</div>
|
||
|
||
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
|
||
Back to top
|
||
</button>
|
||
|
||
</main>
|
||
|
||
<footer class="md-footer">
|
||
|
||
|
||
|
||
<nav class="md-footer__inner md-grid" aria-label="Footer" >
|
||
|
||
|
||
<a href="../index.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Home">
|
||
<div class="md-footer__button md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
||
</div>
|
||
<div class="md-footer__title">
|
||
<span class="md-footer__direction">
|
||
Previous
|
||
</span>
|
||
<div class="md-ellipsis">
|
||
Home
|
||
</div>
|
||
</div>
|
||
</a>
|
||
|
||
|
||
|
||
<a href="kubernetes.html" class="md-footer__link md-footer__link--next" aria-label="Next: Kubernetes">
|
||
<div class="md-footer__title">
|
||
<span class="md-footer__direction">
|
||
Next
|
||
</span>
|
||
<div class="md-ellipsis">
|
||
Kubernetes
|
||
</div>
|
||
</div>
|
||
<div class="md-footer__button md-icon">
|
||
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
|
||
</div>
|
||
</a>
|
||
|
||
</nav>
|
||
|
||
|
||
<div class="md-footer-meta md-typeset">
|
||
<div class="md-footer-meta__inner md-grid">
|
||
<div class="md-copyright">
|
||
|
||
<div class="md-copyright__highlight">
|
||
MIT
|
||
</div>
|
||
|
||
|
||
Made with
|
||
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
||
Material for MkDocs
|
||
</a>
|
||
|
||
</div>
|
||
|
||
<div class="md-social">
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://hachyderm.io/@m_lamonaca" target="_blank" rel="noopener me" title="hachyderm.io" class="md-social__link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.5 102.5 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5m-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>
|
||
</a>
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<a href="https://github.com/m-lamonaca" target="_blank" rel="noopener" title="github.com" class="md-social__link">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
||
</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
</div>
|
||
<div class="md-dialog" data-md-component="dialog">
|
||
<div class="md-dialog__inner md-typeset"></div>
|
||
</div>
|
||
|
||
|
||
<script id="__config" type="application/json">{"base": "..", "features": ["navigation.instant", "navigation.indexes", "navigation.tracking", "navigation.pruning", "navigation.sections", "navigation.top", "navigation.tabs", "navigation.tabs.sticky", "navigation.footer", "toc.follow", "content.code.copy"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
|
||
|
||
|
||
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
|
||
|
||
|
||
</body>
|
||
</html> |