modified: ru/README.md

This commit is contained in:
eleutherius 2018-09-24 23:05:15 +03:00
parent 7d7cf95626
commit 4701b26888

View file

@ -360,15 +360,15 @@ Docker.com размещает свой собственный [index](https://hu
* [Примеры](https://docs.docker.com/engine/reference/builder/#dockerfile-examples) * [Примеры](https://docs.docker.com/engine/reference/builder/#dockerfile-examples)
* [Рекомендации по написанию Dockerfiles](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/) * [Рекомендации по написанию Dockerfiles](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/)
* [Michael Crosby](http://crosbymichael.com/) has some more [Dockerfiles best practices](http://crosbymichael.com/dockerfile-best-practices.html) / [take 2](http://crosbymichael.com/dockerfile-best-practices-take-2.html). * [Michael Crosby](http://crosbymichael.com/) has some more [Dockerfiles best practices](http://crosbymichael.com/dockerfile-best-practices.html) / [take 2](http://crosbymichael.com/dockerfile-best-practices-take-2.html).
* [Building Good Docker Images](http://jonathan.bergknoff.com/journal/building-good-docker-images) / [Building Better Docker Images](http://jonathan.bergknoff.com/journal/building-better-docker-images) * [Building Good Docker Images](http://jonathan.bergknoff.com/journal/building-good-docker-images) / [Создание лучших образов docker](http://jonathan.bergknoff.com/journal/building-better-docker-images)
* [Managing Container Configuration with Metadata](https://speakerdeck.com/garethr/managing-container-configuration-with-metadata) * [Управление конфигурацией контейнера с метаданными](https://speakerdeck.com/garethr/managing-container-configuration-with-metadata)
* [How to write excellent Dockerfiles](https://rock-it.pl/how-to-write-excellent-dockerfiles/) * [ Как написать отличный Dockerfiles](https://rock-it.pl/how-to-write-excellent-dockerfiles/)
## Layers ## Слои
The versioned filesystem in Docker is based on layers. They're like [git commits or changesets for filesystems](https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/). Файловая система с версией в Docker основана на слоях. Они похожи на [git комиты или измекнения для файловой системы](https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/).
## Links ## Связи
Links are how Docker containers talk to each other [through TCP/IP ports](https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/). [Linking into Redis](https://docs.docker.com/engine/examples/running_redis_service/) and [Atlassian](https://blogs.atlassian.com/2013/11/docker-all-the-things-at-atlassian-automation-and-wiring/) show worked examples. You can also resolve [links by hostname](https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/#/updating-the-etchosts-file). Links are how Docker containers talk to each other [through TCP/IP ports](https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/). [Linking into Redis](https://docs.docker.com/engine/examples/running_redis_service/) and [Atlassian](https://blogs.atlassian.com/2013/11/docker-all-the-things-at-atlassian-automation-and-wiring/) show worked examples. You can also resolve [links by hostname](https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/#/updating-the-etchosts-file).
@ -525,31 +525,31 @@ docker run --security-opt=no-new-privileges
From the [Docker Security Cheat Sheet](http://container-solutions.com/content/uploads/2015/06/15.06.15_DockerCheatSheet_A2.pdf) (it's in PDF which makes it hard to use, so copying below) by [Container Solutions](http://container-solutions.com/is-docker-safe-for-production/): From the [Docker Security Cheat Sheet](http://container-solutions.com/content/uploads/2015/06/15.06.15_DockerCheatSheet_A2.pdf) (it's in PDF which makes it hard to use, so copying below) by [Container Solutions](http://container-solutions.com/is-docker-safe-for-production/):
Turn off interprocess communication with: Отключите межпроцессное взаимодействие с:
``` ```
docker -d --icc=false --iptables docker -d --icc=false --iptables
``` ```
Set the container to be read-only: Установите контейнер только для чтения:
``` ```
docker run --read-only docker run --read-only
``` ```
Verify images with a hashsum: Проверьте образы с помощью хэш-функции:
``` ```
docker pull debian@sha256:a25306f3850e1bd44541976aa7b5fd0a29be docker pull debian@sha256:a25306f3850e1bd44541976aa7b5fd0a29be
``` ```
Set volumes to be read only: Установить тома только для чтения:
``` ```
docker run -v $(pwd)/secrets:/secrets:ro debian docker run -v $(pwd)/secrets:/secrets:ro debian
``` ```
Define and run a user in your Dockerfile so you don't run as root inside the container: Определите и запустите пользователя в вашем файле Docker, чтобы вы не запускались как root внутри контейнера:
``` ```
RUN groupadd -r user && useradd -r -g user user RUN groupadd -r user && useradd -r -g user user
@ -571,19 +571,19 @@ To enable user namespaces ("remap the userns") in Ubuntu 15.10, [follow the blog
### Security Roadmap ### Security Roadmap
The Docker roadmap talks about [seccomp support](https://github.com/docker/docker/blob/master/ROADMAP.md#11-security). В дорожной карте docker говорится о [поддержке seccomp]https://github.com/docker/docker/blob/master/ROADMAP.md#11-security).
There is an AppArmor policy generator called [bane](https://github.com/jfrazelle/bane), and they're working on [security profiles](https://github.com/docker/docker/issues/17142). Существует генератор политики AppArmor, называемый [bane](https://github.com/jfrazelle/bane), и они работают над [профилями безопасности](https://github.com/docker/docker/issues/17142).
## Tips ## Советы
Sources: Источники:
* [15 Docker Tips in 5 minutes](http://sssslide.com/speakerdeck.com/bmorearty/15-docker-tips-in-5-minutes) * [15 Советы docker за 5 минут](http://sssslide.com/speakerdeck.com/bmorearty/15-docker-tips-in-5-minutes)
* [CodeFresh Everyday Hacks Docker](https://codefresh.io/blog/everyday-hacks-docker/) * [CodeFresh Everyday Hacks Docker](https://codefresh.io/blog/everyday-hacks-docker/)
### Prune ### Prune
The new [Data Management Commands](https://github.com/docker/docker/pull/26108) have landed as of Docker 1.13: Новые [Команды управления данными](https://github.com/docker/docker/pull/26108) Появились с Docker 1.13:
* `docker system prune` * `docker system prune`
* `docker volume prune` * `docker volume prune`
@ -595,7 +595,7 @@ The new [Data Management Commands](https://github.com/docker/docker/pull/26108)
`docker system df` presents a summary of the space currently used by different docker objects. `docker system df` presents a summary of the space currently used by different docker objects.
### Heredoc Docker Container ### Контейнер для докеров Heredoc
``` ```
docker build -t htop - << EOF docker build -t htop - << EOF
@ -604,7 +604,7 @@ RUN apk --no-cache add htop
EOF EOF
``` ```
### Last Ids ### Последние идентификаторы
``` ```
alias dl='docker ps -l -q' alias dl='docker ps -l -q'
@ -612,31 +612,31 @@ docker run ubuntu echo hello world
docker commit $(dl) helloworld docker commit $(dl) helloworld
``` ```
### Commit with command (needs Dockerfile) ### Commit с командой (требуется Dockerfile)
``` ```
docker commit -run='{"Cmd":["postgres", "-too -many -opts"]}' $(dl) postgres docker commit -run='{"Cmd":["postgres", "-too -many -opts"]}' $(dl) postgres
``` ```
### Get IP address ### Получить IP-адрес
``` ```
docker inspect $(dl) | grep -wm1 IPAddress | cut -d '"' -f 4 docker inspect $(dl) | grep -wm1 IPAddress | cut -d '"' -f 4
``` ```
or install [jq](https://stedolan.github.io/jq/): или установите [jq](https://stedolan.github.io/jq/):
``` ```
docker inspect $(dl) | jq -r '.[0].NetworkSettings.IPAddress' docker inspect $(dl) | jq -r '.[0].NetworkSettings.IPAddress'
``` ```
or using a [go template](https://docs.docker.com/engine/reference/commandline/inspect): или используя [go шаблон](https://docs.docker.com/engine/reference/commandline/inspect):
``` ```
docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container_name> docker inspect -f '{{ .NetworkSettings.IPAddress }}' <container_name>
``` ```
or when building an image from Dockerfile, when you want to pass in a build argument: или при создании обрзов из файла Docker, когда вы хотите передать аргумент построения:
``` ```
DOCKER_HOST_IP=`ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1` DOCKER_HOST_IP=`ifconfig | grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" | grep -v 127.0.0.1 | awk '{ print $2 }' | cut -f2 -d: | head -n1`
@ -647,88 +647,89 @@ docker build \
some-directory/ some-directory/
``` ```
### Get port mapping ### Получить сопоставление портов
``` ```
docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' <containername> docker inspect -f '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' <containername>
``` ```
### Find containers by regular expression ### Поиск контейнеров путем регулярного выражения
``` ```
for i in $(docker ps -a | grep "REGEXP_PATTERN" | cut -f1 -d" "); do echo $i; done for i in $(docker ps -a | grep "REGEXP_PATTERN" | cut -f1 -d" "); do echo $i; done
``` ```
### Get Environment Settings ### Получить настройки среды
``` ```
docker run --rm ubuntu env docker run --rm ubuntu env
``` ```
### Kill running containers ### Убить запущенные контейнеры
``` ```
docker kill $(docker ps -q) docker kill $(docker ps -q)
``` ```
### Delete all containers (force!! running or stopped containers) ### Удалите все контейнеры (принудительные или запущенные контейнеры)
``` ```
docker rm -f $(docker ps -qa) docker rm -f $(docker ps -qa)
``` ```
### Delete old containers ### Удалить старые контейнеры
``` ```
docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm docker ps -a | grep 'weeks ago' | awk '{print $1}' | xargs docker rm
``` ```
### Delete stopped containers ### Удалить остановленные контейнеры
``` ```
docker rm -v $(docker ps -a -q -f status=exited) docker rm -v $(docker ps -a -q -f status=exited)
``` ```
### Delete containers after stopping ### Удаление контейнеров после остановки
``` ```
docker stop $(docker ps -aq) && docker rm -v $(docker ps -aq) docker stop $(docker ps -aq) && docker rm -v $(docker ps -aq)
``` ```
### Delete dangling images ### Удалить оборванные образы
``` ```
docker rmi $(docker images -q -f dangling=true) docker rmi $(docker images -q -f dangling=true)
``` ```
### Delete all images ### Удалить все образы
``` ```
docker rmi $(docker images -q) docker rmi $(docker images -q)
``` ```
### Delete dangling volumes ### Удалить оборванные тома
As of Docker 1.9: Начиная с Docker 1.9:
``` ```
docker volume rm $(docker volume ls -q -f dangling=true) docker volume rm $(docker volume ls -q -f dangling=true)
``` ```
In 1.9.0, the filter `dangling=false` does _not_ work - it is ignored and will list all volumes. In 1.9.0, the filter `dangling=false` does _not_ work - it is ignored and will list all volumes.
В 1.9.0, фильтр `dangling=false` е_ работает - он игнорируется и будет перечислять все тома.
### Show image dependencies ### Показать зависимости образов
``` ```
docker images -viz | dot -Tpng -o docker.png docker images -viz | dot -Tpng -o docker.png
``` ```
### Slimming down Docker containers ### Похудение Docker контейнеров
- Cleaning APT in a RUN layer - Очистка APT на уровне RUN
This should be done in the same layer as other apt commands. Это должно быть сделано в том же слое, что и другие команды apt.
Otherwise, the previous layers still persist the original information and your images will still be fat. В противном случае предыдущие слои по-прежнему сохраняют исходную информацию, и ваши образы будут по-прежнему жирными.
``` ```
RUN {apt commands} \ RUN {apt commands} \
@ -736,89 +737,89 @@ RUN {apt commands} \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
``` ```
- Flatten an image - Сгладить образ
``` ```
ID=$(docker run -d image-name /bin/bash) ID=$(docker run -d image-name /bin/bash)
docker export $ID | docker import flat-image-name docker export $ID | docker import flat-image-name
``` ```
- For backup - Для резервного копирования
``` ```
ID=$(docker run -d image-name /bin/bash) ID=$(docker run -d image-name /bin/bash)
(docker export $ID | gzip -c > image.tgz) (docker export $ID | gzip -c > image.tgz)
gzip -dc image.tgz | docker import - flat-image-name gzip -dc image.tgz | docker import - flat-image-name
``` ```
### Monitor system resource utilization for running containers ### Мониторинг использования ресурсов системы для запуска контейнеров
To check the CPU, memory, and network I/O usage of a single container, you can use: Чтобы проверить использование ЦП, памяти и сетевого ввода-вывода в одном контейнере, вы можете использовать:
``` ```
docker stats <container> docker stats <container>
``` ```
For all containers listed by id: Для всех контейнеров, перечисленных в id:
``` ```
docker stats $(docker ps -q) docker stats $(docker ps -q)
``` ```
For all containers listed by name: Для всех контейнеров, перечисленных по имени:
``` ```
docker stats $(docker ps --format '{{.Names}}') docker stats $(docker ps --format '{{.Names}}')
``` ```
For all containers listed by image: Для всех контейнеров, перечисленных по образам:
``` ```
docker ps -a -f ancestor=ubuntu docker ps -a -f ancestor=ubuntu
``` ```
Remove all untagged images Удалить все непомеченные образы
``` ```
docker rmi $(docker images | grep “^” | awk '{split($0,a," "); print a[3]}') docker rmi $(docker images | grep “^” | awk '{split($0,a," "); print a[3]}')
``` ```
Remove container by a regular expression Удалить контейнер с помощью регулярного выражения
``` ```
docker ps -a | grep wildfly | awk '{print $1}' | xargs docker rm -f docker ps -a | grep wildfly | awk '{print $1}' | xargs docker rm -f
``` ```
Remove all exited containers Удалить все завершенные контейнеры
``` ```
docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }') docker rm -f $(docker ps -a | grep Exit | awk '{ print $1 }')
``` ```
### Volumes can be files ### Томы могут быть файлами
Be aware that you can mount files as volumes. For example you can inject a configuration file like this: Имейте в виду, что вы можете монтировать файлы в виде томов. Например, вы можете ввести файл конфигурации следующим образом:
``` bash ``` bash
# copy file from container # копировать файл из контейнера
docker run --rm httpd cat /usr/local/apache2/conf/httpd.conf > httpd.conf docker run --rm httpd cat /usr/local/apache2/conf/httpd.conf > httpd.conf
# edit file # редактировать файл
vim httpd.conf vim httpd.conf
# start container with modified configuration # запускать контейнер с измененной конфигурацией
docker run --rm -ti -v "$PWD/httpd.conf:/usr/local/apache2/conf/httpd.conf:ro" -p "80:80" httpd docker run --rm -ti -v "$PWD/httpd.conf:/usr/local/apache2/conf/httpd.conf:ro" -p "80:80" httpd
``` ```
## Contributing ## Содействие
Here's how to contribute to this cheat sheet. Вот как внести свой вклад в этот чит-лист.
### Open README.md ### Открыть README.md
Click [README.md](https://github.com/wsargent/docker-cheat-sheet/blob/master/README.md) <-- this link Click [README.md](https://github.com/wsargent/docker-cheat-sheet/blob/master/README.md) <-- this link
![Click This](../images/click.png) ![Click This](../images/click.png)
### Edit Page ### Отредактировать страницу
![Edit This](../images/edit.png) ![Edit This](../images/edit.png)
### Make Changes and Commit ### Внести изменения и зафиксировать
![Change This](../images/change.png) ![Change This](../images/change.png)