Создать контейнер с Nginx Docker

Содержание
Введение
nginx:alpine
-v: Подключение Volume
Пример 2
Nginx в Docker Compose
Статьи про Docker

Введение

Пример где на хосте Ubuntu для Windows какие-то команды могут незначительно отличаться

Полезно прочтитать про Nginx на https://hub.docker.com/_/nginx

nginx:alpine

docker pull nginx:alpine

Если образ ещё не скачан - начнётся загрузка. На данном хосте он уже есть

alpine: Pulling from library/nginx Digest: sha256:a74534e76ee1121d418fa7394ca930eb67440deda413848bc67c68138535b989 Status: Image is up to date for nginx:alpine docker.io/library/nginx:alpine

➭ docker images

REPOSITORY TAG IMAGE ID CREATED SIZE nginx alpine b1c3acb28882 13 days ago 23.4MB

Запустим контейнер командой run

docker run --name andrei-nginx -p 8080:80 -d nginx:alpine

30433f8ff2738593f44b9e95c243dd521d3d2effb879fc0126e4f0d88a2c08b8

docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 30433f8ff273 nginx:alpine "/docker-entrypoint.…" 3 seconds ago Up 3 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp andrei-nginx

В браузере выполните

http://127.0.0.1:8080/

lynx localhost:8080

Welcome to nginx! Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.

-v: Подключение Volume

Можно сразу закинуть свою html страницу вместо стандартной с помощью volume

mkdir nginx
cd nginx
touch index.html
vi index.html

Создадим простейшую страницу, например про велосипеды

<html> <body> <h1>TopBicycle.ru</h1> <p> <a href="https://www.topbicycle.ru/m/russian/"> Russian Bikes </a> <br><br> <a href="https://www.topbicycle.ru/m/italian/"> Italian Bikes </a> </p> </body> </html>

Убедимся, что контейнер удалён и запустим снова но уже с опцией -v которая укажет какую директорию на хосте нужно подставить в директорию из образа.

docker rm andrei-nginx
docker run --name andrei-nginx -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx:alpine

lynx localhost:8080

TopBicycle.ru Russian Bikes Italian Bikes

РЕКЛАМА от Google. Контент сгенерирован Google. Может быть недоступен в вашем регионе.

Конец рекламы от Google. Если в блоке пусто считайте это рекламой моей телеги

Второй пример

mkdir docker_lab
cd docker_lab

Основы

Скачаем образ (image) с Nginx

sudo docker pull nginx

sudo docker pull nginx Using default tag: latest latest: Pulling from library/nginx 7d63c13d9b9b: Pull complete 15641ef02d80: Pull complete 392f7fc24052: Pull complete 8765c7b04ad8: Pull complete 8ddfvc52b5c7: Pull complete 353f1014328a: Pull complete Digest: sha256:dfef797cyddfc01645503cef9036379f03ae920cac82d344d58b637ee861fda1 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest

Убедимся, что образ появился в списке

sudo docker images

REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 04661cdce581 13 hours ago 141MB nginx_nginx latest 915d22c6f9c6 21 hours ago 219MB nginxinc/nginx-unprivileged 1.21.0 d30c9c6fe1a0 5 months ago 133MB

Создадим папку nginx и перейдём в неё

mkdir nginx
cd nginx

Создадим файл с найстройками ssh sshd_config и начнём его редактировать

touch sshd_config
nano sshd_config

Сделайте небольшой конфиг, например такой:

Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecda_key HostKey /etc/ssh/ssh_host_ed25519_key LoginGraceTime 120 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes UsePAM yes

Создайте файл с настройками Docker - Dockerfile и отредактируйте его

touch Dockerfile
nano Dockerfile

FROM centos RUN yum -y update RUN yum install -y openssh-server RUN ssh-keygen -A ADD ./sshd_config /etc/ssh/sshd_config RUN echo root:Secret123 | chpasswd CMD /usr/sbin/sshd -D

Соберите образ

docker build -t andrei-ubuntu/centos_ssh .

-t это сокращение от --tag задаёт название и тэг в формате 'name:tag'

тэг можно не указывать - это опционально

. означает - в текущей директории

Теперь запустите его

docker run -it -d --name node1 -p 2201:22 andrei-ubuntu/centos_ssh

Убедитесь, что его статус Up

docker ps -a

Если вы не знаете на каком вы IP выполните

ip a

Подключитесь по SSH

ssh root@192.168.0.100 -p 2201

Nginx в Docker Compose

Рассмотрим пример создания простейшего контейнера со статическим сайтом на основе Nginx.

Структура проекта

nginx_mkdocs/ |-- docker-compose.yml |-- dockerfiles | |-- Dockerfile.nginx | `-- nginx.conf |-- git-experiments | `-- mkdocs | `-- documentation | |-- docs | |-- mkdocs.yml | `-- site `-- venv

Содержимое сайта находится в директории site

Файлы:

# docker-compose.yml version: '1.0' services: nginx: restart: always privileged: true user: root build: context: ./dockerfiles dockerfile: Dockerfile.nginx args: buildversion: 1 ports: - "8001:80" container_name: nginx_mkdocs networks: net2: ipv4_address: 10.6.0.2 volumes: - ./git-experiments/mkdocs/documentation/site:/usr/share/nginx/html - /var/run/docker.sock:/var/run/docker.sock networks: net2: driver: bridge ipam: config: - subnet: 10.6.0.0/16 gateway: 10.6.0.1

# Dockerfile.nginx FROM nginx:1.24 COPY ./nginx.conf /etc/nginx/nginx.conf

Похожие статьи
Docker
build: Создание контейнеров + примеры
Dockerfile
Ubuntu в контейнере на Windows 10
Контейнер с доступом по SSH
Контейнер с Nginx
Контейнер для Jenkins агента
Контейнер для PyTest
Контейнер для Swagger
Make

РЕКЛАМА от Яндекса. Контент сгенерирован Яндексом. Может быть недоступен в вашем регионе

Конец рекламы от Яндекса. Если в блоке пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: