Инструменты пользователя

Инструменты сайта


docker:zapusk_kontejnera

Запуск контейнера

Как работать с образами Docker

Запуск контейнеров выполняется из образов. Изначально Docker берет образы в хабах Docker Hub (реестр образов, поддерживаемый разработчиком). Любой имеет возможность создавать и загружать собственные образы. Так что для большей части дистрибутивов и программ уже имеются необходимые образы в Docker Hub.

Приведенная ниже команда позволяет проверить, есть ли возможность получить доступ и скачивать образы в Docker Hub (на примере образа hello-world):

  docker run hello-world


Этот вывод данных указывает, что Docker работает правильно:

Как запустить Docker контейнер на Linux

Сначала сервис не мог найти образ hello-world на локальной машине, из-за чего ему приходилось загрузить образ в хабе (репозитории по умолчанию). После его скачивания Docker создал отдельный контейнер из образа и уже затем запускал в нем программу контейнере.

Представленные в хабе образы можно найти при помощи команд docker и search. К примеру, найти образ Ubuntu можно следующим образом:

  docker search ubuntu    


Далее скрипт просмотрит содержимое хаба и покажет все образы, соответствующие заданным критериям. В предложенном примере результат будет примерно таков: Как запустить Docker контейнер на Linux

Строчка OK в столбце OFFICIAL говорит о том, что образ создан и его поддержка осуществляется компанией, ответственной за этот проект. Выбрав требуемый образ, его можно скачать на компьютер, используя подкоманду pull.

Загрузка официального образа Ubuntu на компьютер выполняется такой командой:

  docker pull ubuntu


По завершении операции отобразится такой результат: Как запустить Docker контейнер на Linux Когда образ будет скачан, станет возможным выполнить запуск контейнера из образа при помощи команды run. На примере hello-world видно, что если после ввода run образ не был скачан, сначала клиент загрузит его и уже запустит контейнер с образом.

Чтобы посмотреть, какие образы были загружены на компьютер, используется команда:

  docker images


Результат будет похожим на следующий: Как запустить Docker контейнер на Linux Ниже можно увидеть, что образы для запуска контейнеров можно менять и использовать при создании других образов. Причем последние можно загрузить в Docker Hub или другие репозитории. Далее будет рассмотрено более подробно, как работать с контейнерами.

Простой запуск контейнера

$ docker run ubuntu echo "hello world"
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
124c757242f8: Pull complete
2ebc019eb4e2: Pull complete
dac0825f7ffb: Pull complete
82b0bb65d1bf: Pull complete
ef3b655c7f88: Pull complete
Digest: sha256:72f832c6184b55569be1cd9043e4a80055d55873417ea792d989441f207dd2c7
Status: Downloaded newer image for ubuntu:latest
hello world


Запуск контейнера с терминалом shell

$ docker run --rm -i -t ubuntu /bin/bash
root@85d7a5987b12:/# echo "hello world"
hello world
root@85d7a5987b12:/# exit
exit

Опции:
  • -i -t -необходимо создать сеанс интерактивной работы с терминалом ttu
  • –rm - автоматически удаляет контаинер после завершения сеанса
  • -e, –env - определяет переменные среды в контейнере ( docker run –i -t -e var=«test» ubuntu /bin/bash )
  • /bin/bash -инициализация коммандной оболочки bash

Запуск контейнера со своим хостом

C:\Users\werwolf>docker run -h debian -i -t debian /bin/bash
root@debian:/# echo "Hello"
Hello
root@debian:/# exit
exit


Запуск контейнера cо свои названием контейнера

anchikin@outlook.com@Asus MINGW64 /c/Program Files/Docker Toolbox
$ docker run -i -t --name cowsay --hostname ubuntu ubuntu /bin/bash
root@ubuntu:/# exit
exit

anchikin@outlook.com@Asus MINGW64 /c/Program Files/Docker Toolbox
$ docker commit cowsay test/cowsayimage
sha256:9bf230e2bf47f099b0673d44555061821ed587127d2d8ac7d72db5f1acdd22da

anchikin@outlook.com@Asus MINGW64 /c/Program Files/Docker Toolbox
$ docker start cowsay
cowsay

anchikin@outlook.com@Asus MINGW64 /c/Program Files/Docker Toolbox
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
180e5fda51e5           ubuntu              "/bin/bash"             4 minutes ago       Up 7 seconds                                    cowsay


Запуск контейнера с программой

anchikin@outlook.com@Asus MINGW64 /c/Program Files/Docker Toolbox
$ docker run -it --name box ubuntu bash
root@48ae525b7d3c:/# apt update

root@48ae525b7d3c:/# apt install cowsay

root@48ae525b7d3c:/# exit
exit

anchikin@outlook.com@Asus MINGW64 /c/Program Files/Docker Toolbox
$ docker commit box test/box
sha256:dd6608aee19642174ede41ea38ef720c02700932a8f9fdb6b9e165a6a4f0bf35

anchikin@outlook.com@Asus MINGW64 /c/Program Files/Docker Toolbox
$ docker run -i test/box /usr/games/cowsay "as"
 ______
< as >
 ------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\							
                ||----w |
                ||     ||


Docker commit (сохранить контейнер)

root@cmd:/usr/games> ls
cowsay  cowthink
root@cmd:/usr/games> ./cowsay "Mu"
 ____
< Mu >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
root@cmd:/usr/games> exit
exit

C:\Users\werwolf>docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
687cf18c946d        debian              "/bin/bash"         5 minutes ago       Exited (0) 6 seconds ago                       container

C:\Users\werwolf>docker commit container test/cowsayimage
sha256:b1bf9b6201ac79ebea3caff826a28c3e524167e75eff14b986f63c665c991963


Запуск в фоновом режиме

D:\docker>docker run --name myredis -d redis #Запуск в фоновом режиме
67954e9e35e9423aca4cb90c72b9d2b33fc1d2ba98746e99f1ac4c811c8ae381


соединение между двумя контейнерами

D:\docker>docker run --name myredis -d redis #Запуск в фоновом режиме
67954e9e35e9423aca4cb90c72b9d2b33fc1d2ba98746e99f1ac4c811c8ae381

D:\docker>docker run --rm -it --link myredis:redis redis /bin/bash #Соединение между двумя контейнерами (myredis и redis)

  • –link myredis:redis - Установка соединения определяется этим аргументом
  • myredis - имя контейнера
  • redis - псевдоним внутри управляющего контейнера

root@e907552c645f: redis-cli -h redis -p 6379 #Запустить программу в докере
redis:6379> ping
PONG
redis:6379> set "a" 1
OK
redis:6379> get "a"
"1"


Создать общий каталог внутри контейнера

//создать контейнер с каталогом
D:\>docker run -it  -v /data-test --name test ubuntu /bin/bash
root@6dd6523d4aad:/# exit

//Узнать путь к катталогу
C:\Users\werwolf>docker inspect -f {{.Mounts}} test

тоже самое, только в DockerFile
FROM debian:wheezy
VOLUME /data-test
свой путь('d:/docker') с помощью powershell

#PS D:\docker> docker run -it -v d:/docker:/data-test --name test ubuntu /bin/bash - можно так
PS D:\docker> docker run -it -v ${PWD}:/data-test --name test ubuntu /bin/bash #или так
root@37a090dc3a12:/# ls
bin  boot  data-test  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@37a090dc3a12:/# cd data-test
root@37a090dc3a12:/data-test# ls
DockerFile  DockerFile.debug
root@37a090dc3a12:/data-test#

Совместное использование данных с указанием ключа

root@new:/# ls
bin  boot  data-test  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@new:/# cd data-test/
root@new:/data-test# ls
DockerFile  DockerFile.debug


Запустить nginx

D:\>docker run -d --name nginx -p 8080:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
6ae821421a7d: Already exists
da4474e5966c: Pull complete
eb2aec2b9c9f: Pull complete
Digest: sha256:dd2d0ac3fff2f007d99e033b64854be0941e19a2ad51f174d9240dda20d9f534
Status: Downloaded newer image for nginx:latest
62a11e90d07352d76328f0d7455c529b2282a6a21ca64d18fca30599f3fbfee6

docker/zapusk_kontejnera.txt · Последние изменения: 2023/01/12 12:18 (внешнее изменение)