Оглавление:
Карта сайта:
Оглавление:
Карта сайта:
Как работать с образами 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
$ docker run --rm -i -t ubuntu /bin/bash root@85d7a5987b12:/# echo "hello world" hello world root@85d7a5987b12:/# exit exit
C:\Users\werwolf>docker run -h debian -i -t debian /bin/bash root@debian:/# echo "Hello" Hello root@debian:/# exit exit
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 |
|| ||
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)
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
FROM debian:wheezy VOLUME /data-test
#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
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