Skip to content

Instantly share code, notes, and snippets.

@suroegin
Last active April 3, 2021 18:33
Show Gist options
  • Save suroegin/62a8855c360f617f7445c356aadb32f6 to your computer and use it in GitHub Desktop.
Save suroegin/62a8855c360f617f7445c356aadb32f6 to your computer and use it in GitHub Desktop.

Docker cheatsheet, tricks and good practices

Cheatsheet

  • FROM <имя-образа> — какой образ использовать в качестве базы (должна быть первой строкой в любом Dockerfile).
  • MAINTAINER <имя> — имя мантейнера данного Dockerfile.
  • RUN <команда> — запустить указанную команду внутри контейнера.
  • CMD <команда> — выполнить команду при запуске контейнера (обычно идет последней).
  • EXPOSE <порт> — список портов, которые будет слушать контейнер (используется механизмом линковки).
  • ENV <ключ> <значение> — создать переменную окружения.
  • ADD <путь> <путь> — скопировать файл/каталог внутрь контейнера/образа (первый аргумент может быть URL).
  • ENTRYPOINT <команда> — команда для запуска приложения в контейнере (по умолчанию /bin/sh -c).
  • VOLUME <путь> — пробросить в контейнер указанный каталог (аналог опции -v).
  • USER <имя> — сменить юзера внутри контейнера.
  • WORKDIR <путь> — сменить каталог внутри контейнера.
  • ONBUILD [ИНСТРУКЦИЯ] — запустить указанную инструкцию Dockerfile только в том случае, если образ используется для сборки другого образа (с помощью FROM).

Init, restart

Launch docker container earlier (when OS is loading after reboot) than other containers by Docker manager

MySQL for example:

$ vi /etc/systemd/system/docker-mysql-init
[Unit]
Description=MySQL container
Author=Me
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a mysql
ExecStop=/usr/bin/docker stop mysql

[Install]
WantedBy=local.target

And then enable this service:

$ sudo systemctl enable docker-mysql

Other

pass

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment