Памятка по docker CLI
Небольшая памятка по docker CLI, делаю для себя, но мало ли кому может пригодиться.
Содержание:
добавить username в группу docker (без этого пользователю придется работать с docker через sudo)
запуск образа ubuntu с последующим помещением в контейнер, вход в bash этого контейнера
отобразить активные контейнеры
отобразить все контейнеры (в том числе, неактивные)
запустить контейнер с именем container_name (столбец NAMES в выводе docker ps)
задать имя хоста контейнера
получить подробную информацию о контейнере container_name
задать имя контейнера
показать логи событий с контейнера
полностью удалить контейнер, используя его container_name (но не скачанный образ)
полностью удалить контейнер, используя его ID
вывести ID всех контейнеров (флаг -q выводи ID)
полностью удалить все завершенные контейнеры (флаг -f задает условия поиска)
запустить контейнер в фоновом режиме (демонизировать)
выполнить проброс портов (-p HOST_PORT:CONTAINER_PORT)
отобразить список скачанных образов
сохранить состояние контейнера в образ (пользователь username, контейнер container_name)
удалить образ
войти в оболочку bash уже запущенного контейнером с идентификаторов container_id
создать связь между запускаемым контейнером и some_container
создадим связь NEW_LINK с этим контейнером
добавить username в группу docker (без этого пользователю придется работать с docker через sudo):
$ sudo usermod -aG docker username
запуск образа ubuntu с последующим помещением в контейнер, вход в bash этого контейнера:
$ docker run -it ubuntu bash
root@f4099c025760:/#
-i — открывает интерактивную сессию
-t — осуществляет взаимодействие с терминалом контейнера
отобразить активные контейнеры:
$ docker ps
отобразить все контейнеры (в том числе, неактивные):
docker ps -a
запустить контейнер с именем container_name (столбец NAMES в выводе docker ps):
docker start container_name
задать имя хоста контейнера:
$ docker run -h blablabla -it ubuntu bash
получить подробную информацию о контейнере container_name:
$ docker inspect container_name
задать имя контейнера:
$ docker run --name MYNAME -it ubuntu bash
показать логи событий с контейнера:
$ docker logs container_name
полностью удалить контейнер, используя его container_name (но не скачанный образ):
$ docker rm container_name
полностью удалить контейнер, используя его ID:
$ docker rm -v container_ID
вывести ID всех контейнеров (флаг -q выводи ID):
$ docker ps -aq
полностью удалить все завершенные контейнеры (флаг -f задает условия поиска):
$ docker rm -v $(docker ps -aq -f status=exited)
запустить контейнер в фоновом режиме (демонизировать):
$ docker run -it -d ubuntu bash
выполнить проброс портов (-p HOST_PORT:CONTAINER_PORT):
$ docker run -it -d -p 8080:80 ubuntu bash
отобразить список скачанных образов:
$ docker images
сохранить состояние контейнера в образ (пользователь username, контейнер container_name):
$ docker commit username/container_name
удалить образ:
$ docker rmi image_ID
войти в оболочку bash уже запущенного контейнером с идентификаторов container_id
$ docker exec -it container_id bash
создать связь между запускаемым контейнером и some_container:
$ docker run --link some_container:link_name -it ubuntu bash
Чуть подробнее о создании связи: допустим, есть запущенный контейнер с именем MY_CONTAINER:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
860c93385b82 ubuntu "bash" 4 seconds ago Up 2 seconds MY_CONTAINER
создадим связь NEW_LINK с этим контейнером:
$ docker run --link MY_CONTAINER:NEW_LINK -it ubuntu bash
root@10dfcd26190b:/# cat /etc/hosts | grep NEW_LINK
172.17.0.2 NEW_LINK 860c93385b82 MY_CONTAINER
При создании связи в новом контейнере образуется вышеуказанная запись в файле /etc/hosts