Docker

Материал из Artem Aleksashkin's Wiki
Перейти к навигации Перейти к поиску

Docker - это система сборки и распространения контейнеров(для формирования нужного окружения).

Основы: слоеная файловая система(ос, настройки, софт), chroot, квоты и 1 процесс приложения. Философия докера подразумевает, что вы запускаете 1 процесс в обертке. Docker не является системой виртуализации. Это система для сбора всего окружения и запуска в режиме изоляции. С хостом общим остается только ядро ОС.

В остальном очень похоже на виртуализацию. Можно монтировать директории, работать с сетью и многое другое.

Ссылки

Установка

sudo apt-get remove docker docker-engine docker.io
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
sudo usermod -aG docker $USER
docker run hello-world
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Stop and remove all docker containers and images

docker ps -aq
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker rmi $(docker images -q)
docker volume prune

Push tag

docker tag e0414c565856 ecommercemarket:0.0.1
docker tag ecommercemarket:0.0.1 registry.aleksashkin.net:5000/ecommercemarket
docker push registry.aleksashkin.net:5000/ecommercemarket

Copy file from container

docker create -ti --name dummy IMAGE_NAME bash
docker cp dummy:/path/to/file /dest/to/file
docker rm -fv dummy

Change links on php config Ubuntu

rm -rf .docker/php
docker cp 7be7e772cb3d:/etc/php .docker/
cd .docker/php/8.2/cli/conf.d
for i in `ls -1`; do j=`echo $i | awk -F\- '{print $2}'`; rm -v $i; ln -s ../../mods-available/${j} $i; done;
cd -
cd .docker/php/8.2/fpm/conf.d
for i in `ls -1`; do j=`echo $i | awk -F\- '{print $2}'`; rm -v $i; ln -s ../../mods-available/${j} $i; done;
cd -