Сегодня мы сделаем практическое. Мы создадим контейнер Docker для нашей программы. В текущем сценарии технологии мы можем легко использовать контейнерные технологии, такие как Docker, чтобы сделать наше приложение портативным и поддерживаемым.
1. Установка докера
Сначала мы загружаем Docker в нашу систему. Мы будем использовать следующую ссылку https://www.docker.com/get-started
скачать его. После загрузки используйте терминал для запуска этой команды:
$ docker -v
Это должно привести к тому, что это так:
Docker version 19.03.8, build afacb8b
Итак, теперь мы успешно установили Docker. Это хорошее время, чтобы покрыть некоторые очень важные команды докера. Эти команды помогут нам управлять нашими контейнерами докеров. Мы будем обращаться к этим командам в нашей жизни докера.
- Команда для перечисления всех контейнеров докеров в системе
$ docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4ab39b2e1f70 simplego:1.0 "./main" 2 hours ago Up 2 hours 0.0.0.0:8000->8080/tcp bb
- Команда, чтобы остановить контейнер докера по имени
$ docker container stop {Name}
- команда остановить все контейнеры докеров
$ docker container stop $(docker container ls -aq)
- Команда для удаления контейнера Docker по имени
$ docker container rm {Name}
- Команда для удаления всех контейнеров докеров
$ docker container rm $(docker container ls -aq)
2. Установка Голанга
Затем мы создаем программу, которую мы хотим работать в нашем контейнере. Мы можем использовать любую программу, которую мы имеем или мы можем просто написать маленькую здесь.
Мы создадим программу на языке Голанг. Это замечательный язык, чтобы сохранить в своем оружии. Даже докер построен в Голанга. Чтобы запустить программу Golang, нам понадобится бинары в нашей системе. Это веб-страница, которая имеет ссылку на скачивание Go Binaries, https://golang.org/dl/
. После загрузки используйте терминал для запуска этой команды:
$ go version
Это должно привести к тому, что это так:
$ go version go1.13 darwin/amd64
ОК, поэтому мы успешно установили Голанг. Мы сделали самую сложное задание этой практической. Теперь пришло время получить награду за наши усилия. Давайте продолжим и создадим программу Голанга.
3. Создание программы
Мы начинаем с создания папки, давайте именем простой. Внутри этой папки мы размещаем main.go файл.
simpleGo | |-> main.go
Этот код создает просто сервер, который отвечает на localhost: 8080/
и localhost: 8080/Ping
Отказ
# put in file main.go package main import ( "net/http" ) func main() { http.HandleFunc("/", index) http.HandleFunc("/ping", ping) http.ListenAndServe(":8080", nil) } func index(writer http.ResponseWriter, request *http.Request) { writer.WriteHeader(200) writer.Write([]byte("Simple Go server")) } func ping(writer http.ResponseWriter, request *http.Request) { writer.WriteHeader(200) writer.Write([]byte("pong")) }
Мы можем запустить эту программу и проверить наши конечные точки. Чтобы запустить эту программу, мы можем открыть терминал и перейти к папке Simplege (папка, которую мы только что создали), и выполните следующую команду:
$ go run main.go
Затем на браузере мы можем проверить следующие конечные точки,
localhost: 8080/
localhost: 8080/пинг
Как только мы получим успешный ответ, мы можем перейти к контейнеризации нашего приложения.
4. Создание докерафила
Это конвенция, которую мы называем файл, который содержит Docker Code как DockerFile. Создать Dockerfile в нашей папке Simple Play.
simpleGo | |-> main.go |-> Dockerfile
Чтобы понять DockerFile, мы должны понимать цель написания одного. Мы хотим автоматизировать создание среды, скопируйте код в созданную среду, выставляйте необходимый порт в вновь созданную среду и, наконец, команда для запуска приложения PUR. У нас должен быть следующий контент (в YAML) в DockerFile:
FROM golang:alpine # Set necessary environmet variables needed for our image ENV GO111MODULE=on \ CGO_ENABLED=0 \ GOOS=linux \ GOARCH=amd64 # Move to working directory /build WORKDIR /build/simpleGo # Copy the code into the container COPY . . # Build the application RUN go build main.go # Export necessary port EXPOSE 8080 # Command to run when starting the container CMD ["./main"]
Давайте пройдем через код YAML в нашем DockerFile. Первая строка От Голанга: альпийский
WOW момент в нашем докерефиле. Здесь мы ожидаем, что для нас будет доступно распределение альпийского Linux с установленным Golang. И действительно, он делает, из Dockerhub. Docker Hub ( https://hub.docker.com/search?q=&type=Image
) это сайт знания сайта, который содержит много изображений, которые мы можем использовать прямо с летучей мыши И мы можем построить поверх этого. Затем мы устанавливаем переменные среды Golang с Env-заявлением.
Далее мы ящием рабочий каталог, в нашем недавно созданном Alpine Distribution. Заявление Workdir создает структуру сетеристики папки и принесет нас в Child Directory Simple. Оказавшись внутри папки, мы скопироваем все файлы из нашего локального каталога Simple Piret Pirece для Alpine Simple Piretea. Мы можем выразить это просто как Копировать. Отказ
, где каждая точка означает текущий каталог. Первая точка здесь говорит нам, что файлы из текущего локального каталога (помните, что мы собираемся запустить наш DockerFile из внутреннего каталога Simple Paille.) Вторая точка говорит нам, что копирует в текущий каталог в OUT Docker Workflow.
Как только мы скопировали необходимый файл, мы построим двоичные файлы Golang, запустив команду Go Build Main.go
Отказ Мы также хотим открыть порт, чтобы прослушать внешний мир (за пределами контейнера Docker), чтобы мы могли взаимодействовать с нашим приложением. Если вы видите нашу программу Golang, вы отметите, что приложение работает в порту 8080. И это именно порт, который мы хотим разоблачить мир.
Наконец, мы хотим запустить бинарный бинар, который мы создали ранее. Мы указываем это по Cmd ["./main"]
Ключевое слово CMD используется для указания команды по умолчанию, которую мы хотим выполнить.
Фу! Это было много теории. Запуск нашего контейнера Docker состоит из 2 шагов. Первый состоит в том, чтобы построить изображение Docker, а затем необходимо запустить изображение докера.
5. Строительство докера изображения
Чтобы построить изображение Docker (и пометить его), мы используем следующую команду:
$ docker build --tag simplego:1.0 .
Эта команда будет создавать изображение докера, которое мы указали в нашем DockerFile. Если эта команда успешно работает, мы увидим что-то вроде этого:
Successfully built c006affeb6c5 Successfully tagged simplego:1.0
Если эта команда не запустилась успешно, то скорее всего, проблема связана с контейнером с той же именем или что порт, который мы хотим работать, уже используется. В любом случае используйте команду Docker сверху этого поста, чтобы перечислить контейнеры, остановите и удалите их.
6. Бег образа докера
Чтобы запустить созданный образ докера, SimpleGo: 1.0 мы используем следующую команду:
$ docker run --publish 8000:8080 --detach --name sg simplego:1.0
--publish 8000: 8080
Часть команды, указывает, что контейнер Docker открыл порт 8080 для хост-порт 8000. --publish
Пересылает входящий запрос к порту 8000 хост-контейнера 8080. --detach
Часть команды означает, что Docker будет работать на заднем плане. --имя СГ
Часть команды указывает имя, с помощью которого мы можем ссылаться на наш контейнер в последующих командах, в этом случае СГ
Отказ
Если эта команда не запустилась успешно, то скорее всего, проблема связана с контейнером с той же именем или что порт, который мы хотим работать, уже используется. В любом случае используйте команду Docker сверху этого поста, чтобы перечислить контейнеры, остановите и удалите их.
7. Финал
Теперь мы можем проверить, что наш контейнер работает правильно. Мы можем сделать это, ударяя URL localhost: 8000/
и localhost: 8000/ping
Ok. Если мы получаем правильные ответы, то пришло время погладить нашу обратно. Давайте помыть руки и танцевать немного. Увидимся, ребята, в моем следующем посте.
Оригинал: «https://dev.to/anuragjha/building-first-docker-container-2bgk»