Используем systemd для запуска docker-контейнеров
#systemd #docker
[Unit]
Description=My Awesome Service
Requires=docker.service
After=docker.service
[Service]
Restart=always
RestartSec=3
ExecStartPre=/bin/sh -c "/usr/bin/docker rm -f my-awesome-service 2> /dev/null || /bin/true"
ExecStart=/usr/bin/docker run --rm -a STDIN -a STDOUT -a STDERR --env-file=/etc/default/my-awesome-service -p 0.0.0.0:3301:3301 -v /etc/project/service:/etc/wallarm -v /var/lib/blacklist:/var/lib/blacklist -v /var/log/project/service:/var/log/wallarm --name my-awesome-service wallarm-dkr.jfrog.io/my-awesome-service:v0.17.0.0
ExecStop=/usr/bin/docker stop my-awesome-service
[Install]
WantedBy=multi-user.target
#systemd #docker
Билдим собственный однобинарный образ на примере hello-world
все примеры взяты с гитхабчика докера и изменены в пользу упрощения.
Для задачи будет использоваться слой scratch, который представляет из себя слой без какой-либо начинки. Использование образа scratch сигнализирует билд-процессу, что следующая команда в Dockerfile будет вашим первым слоем в образе. Таким образом мы получаем контейнер, состоящий как бы из одного вашего бинаря.
Все что нам нужно - запуск одного бинарника, поэтому при использовании scratch итоговый образ получается легким как перышко.
1) Возьмем С-код, которые выведет на экран слова приветствия
2) сбилдим:
3) Dockerfile:
4) билдим образ:
5) проверяем:
и ответ:
Сравнение
если запросить
Благодарности Михаилу за помощь с Си =)
#docker #hello_world
все примеры взяты с гитхабчика докера и изменены в пользу упрощения.
Для задачи будет использоваться слой scratch, который представляет из себя слой без какой-либо начинки. Использование образа scratch сигнализирует билд-процессу, что следующая команда в Dockerfile будет вашим первым слоем в образе. Таким образом мы получаем контейнер, состоящий как бы из одного вашего бинаря.
Все что нам нужно - запуск одного бинарника, поэтому при использовании scratch итоговый образ получается легким как перышко.
1) Возьмем С-код, которые выведет на экран слова приветствия
#include <unistd.h>
#include <sys/syscall.h>
const char message[] =
"\n"
"hello world\n"
"\n";
void main() {
//write(1, message, sizeof(message) - 1);
syscall(SYS_write, 1, message, sizeof(message) - 1);
//_exit(0);
syscall(SYS_exit, 0);
}
2) сбилдим:
gcc hello.c -o hello -static
3) Dockerfile:
FROM scratch
COPY hello /
CMD ["/hello"]
4) билдим образ:
docker build -t hello ./
5) проверяем:
docker run hello
и ответ:
hello world
Сравнение
если запросить
du -hs hello
и посмотреть docker images hello
их разница будет всего в пару десятков КБ. (792K -> 810К в моем случае)Благодарности Михаилу за помощь с Си =)
#docker #hello_world
Список тегов, используемых в канале:
—-------------------------------
Лекции и материалы
—-------------------------------
#Занятие
#Лекции
Лекция
#junior
—---------
Linux
—---------
#ssh
#bash
#bash_tips_and_tricks
#awk
#tmux
#console
#utils
#troubleshooting
#nmap
#apt
#bind
#sound
#power_management
—----------
DevOps
—----------
#jenkins
#ansible
#git
#kubernetes
#deploy
#ceph
#docker
#puppet
—------------------
Virtualization
—------------------
#vmware
vagrant
—------------------
Networking
—---------------—
#networking
#proxy
#socks
—---------
InfoSec
—---------
#vulns
#security
#ctf
—-------------
Windows
—-------------
#RDTS
#windows_server2012
#RDP
—------------
Datacenters
—---------—
#ovh
#hetzner
—-------
Other
—-------
#android
#jira
—------------------------------------------------
Ссылки и сторонние материалы
—------------------------------------------------
#read
#thirdparty
Updated: 29.05.18
—-------------------------------
Лекции и материалы
—-------------------------------
#Занятие
#Лекции
Лекция
#junior
—---------
Linux
—---------
#ssh
#bash
#bash_tips_and_tricks
#awk
#tmux
#console
#utils
#troubleshooting
#nmap
#apt
#bind
#sound
#power_management
—----------
DevOps
—----------
#jenkins
#ansible
#git
#kubernetes
#deploy
#ceph
#docker
#puppet
—------------------
Virtualization
—------------------
#vmware
vagrant
—------------------
Networking
—---------------—
#networking
#proxy
#socks
—---------
InfoSec
—---------
#vulns
#security
#ctf
—-------------
Windows
—-------------
#RDTS
#windows_server2012
#RDP
—------------
Datacenters
—---------—
#ovh
#hetzner
—-------
Other
—-------
#android
#jira
—------------------------------------------------
Ссылки и сторонние материалы
—------------------------------------------------
#read
#thirdparty
Updated: 29.05.18
Docker up to date checking
Сервис для проверки ваших докер контейнеров на "обновленность". Для публичных - бесплатно. приватные - за денежку.
https://anchore.io/
#docker
Сервис для проверки ваших докер контейнеров на "обновленность". Для публичных - бесплатно. приватные - за денежку.
https://anchore.io/
#docker
Anchore
Software supply chain security solutions • Anchore
Protect your software supply chain with policy-based container security solutions.