Використання Docker для розгортання веб-додатків та підвищення безпеки

pic

Огляд проекту: Level Up Solutions — це технологічна компанія, яка хоче впровадити Docker для покращення розгортання веб-додатків. Ця технологія дозволяє упаковувати, розповсюджувати та запускати додатки однаково в різних середовищах. Docker має багато переваг, таких як послідовність, портативність, ізоляція, відтворюваність, контроль версій, масштабованість і покращена співпраця, що спрощує процеси розробки та розгортання.

Попередні вимоги:

◉ Ubuntu EC2 інстанс — ознайомтесь з моєю попередньою документацією, щоб створити інстанс EC2 покроково.(Click Here)

pic

● Після того, як наш EC2 інстанс буде створений, ми можемо підключитися до нього через SSH і почати. Спочатку необхідно перейти в директорію, куди було завантажено вашу пару ключів. Потім ви можете підключитись до інстансу за допомогою команди AWS... Ми всередині💻

sudo docker pull ubuntu:latest

pic

● Тепер нам потрібно витягнути останній образ з реєстру Docker, щоб використовувати його для нашого контейнера.

docker run -it -d -p 80:80 ubuntu  
sudo docker container ls

pic

● На цьому етапі ми витягуємо образ Ubuntu та запускаємо контейнер, який буде відокремлений, і використовуємо порт 80. Після цього можна виконати іншу команду, щоб перевірити, чи був створений наш контейнер і який порт використовується. Це спрацювало!

sudo docker exec -it sweet_poitras bash  
apt-get update && apt-get upgrade -y  
apt-get install apache2 -y

pic

● Наша перша команда використовується для запуску нової сесії bash всередині вже працюючого Docker контейнера з іменем sweet_poitras.

● Далі моя друга команда оновить всі пакети всередині контейнера, щоб усе було актуальне.

● І остання команда — для встановлення Apache Version 2.

service apache2 start

pic

● Час запускати веб-сервер Apache.

apache2 -v

pic

● Я використовую цю команду, щоб перевірити, яку версію використовує мій сервіс Apache, це просто для перевірки правильної версії.

pic

● Тепер ми можемо перейти до нашого Ubuntu EC2 інстансу на AWS Console і скопіювати публічну IP-адресу.

pic

● Коли ви вставите публічну IP-адресу в пошуковий рядок на іншій вкладці, ви повинні побачити стандартну сторінку Apache2. Це просто перевірка, що мої команди працюють, і ми можемо тестувати по ходу процесу, щоб переконатись, що все працює правильно.

pic

pic

● Після того як я побачив, що моя тестова веб-сторінка працює, я вирішив створити власну веб-сторінку!

Мета: Push до Docker Hub.

𝟐𝐧𝐝 𝐎𝐛𝐣𝐞𝐜𝐭𝐢𝐯𝐞: 𝐏𝐮𝐬𝐡 𝐭𝐨 𝐃𝐨𝐜𝐤𝐞𝐫 𝐇𝐮𝐛 𝐚𝐧𝐝 𝐩𝐮𝐥𝐥 𝐲𝐨𝐮𝐫 𝐧𝐞𝐰 𝐢𝐦𝐚𝐠𝐞 𝐚𝐧𝐝 𝐫𝐮𝐧 𝐨𝐧 𝐚 𝐝𝐢𝐟𝐟𝐞𝐫𝐞𝐧𝐭 𝐩𝐨𝐫𝐭 𝐭𝐡𝐚𝐧 𝟖𝟎 𝐰𝐡𝐢𝐥𝐞 𝐬𝐭𝐢𝐥𝐥 𝐦𝐚𝐩𝐩𝐢𝐧𝐠 𝐭𝐨 𝟖𝟎 𝐨𝐧 𝐭𝐡𝐞 𝐜𝐨𝐧𝐭𝐚𝐢𝐧𝐞𝐫. Використовуємо Docker scout для виявлення вразливостей.

docker login

pic

● Я переключився на VSCODE, оскільки навчився швидше підключатись до інстансу через “ssh”.
Ми збираємось запушити наш контейнер до Docker Hub, тому нам потрібно увійти в Docker через термінал.

pic

● Коли ви натискаєте на посилання, яке надається Docker в вашому терміналі, скопіюйте і вставте це посилання в браузер, і з'явиться активація Docker Device. Введіть 8-значний код, який Docker надав у терміналі.

docker tag ubuntu leonthelion22/dockerpurplerepo2025  
docker push leonthelion22/dockerpurplerepo2025  
docker pull leonthelion22/dockerpurplerepo2025  
docker run -d -p 81:80 leonthelion22/dockerpurplerepo2025

pic

● Якщо ви увійшли правильно, Docker повідомить, що це вдалося.

● Команда Docker tag дає змогу позначити існуючий Docker-образ новим іменем, але він залишатиметься тим самим образом, це корисно для того, щоб запушити образ до мого репозиторію на Docker Hub.

● Docker push дозволяє запушити Docker-образ до реєстру Docker, в даному випадку до мого облікового запису на Docker Hub.

● Docker pull дозволить мені витягнути цей Docker-образ на мою локальну машину.

● І, нарешті, Docker run запустить Docker-контейнер, в даному випадку він буде відокремлений, і я використовую інший порт 81, який є портом моєї хост-машини, а порт 80 — це порт контейнера.

pic

Ось мій образ на Docker Hub акаунті

- ARG інструкції визначають змінні для часу створення.  

- LABEL інструкції додають метадані до Docker-образу.  

- ADD копіює файли з хоста до Docker-образу.  

- CMD вказує на команду за замовчуванням, яку потрібно виконати при запуску контейнера.

pic

● Мої шари образу, що були створені і використані для контейнера.

curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s --

● Ось команда, яку я використовую для встановлення Docker Scout — чудового інструменту, який допоможе виявити та виправити вразливості у ваших Docker-образах!!!

docker scout quickeview leonthelion22/dockerpurplerepo2025

pic

● Команда docker scout quickview надасть огляд Docker-образу, показуючи його вразливості.

docker scout cves leonthelion22/purplerepo2025

pic

● Рекомендації для виправлення цих поширених вразливостей можна отримати за допомогою команди Docker cves. Ви отримаєте детальні звіти про знайдені проблеми в Docker-образі, що допоможе вжити заходів для усунення потенційних ризиків безпеки.

Висновок:

Дякую всім за те, що витратили час на ознайомлення з моєю документацією, сподіваюся, вона була корисною. Якщо у вас є рекомендації або поради, ви можете зв’язатися зі мною через LinkedIn.

Перекладено з: 𝗨𝘁𝗶𝗹𝗶𝘇𝗶𝗻𝗴 𝗗𝗼𝗰𝗸𝗲𝗿 𝗳𝗼𝗿 𝗪𝗲𝗯 𝗔𝗽𝗽𝗹𝗶𝗰𝗮𝘁𝗶𝗼𝗻 𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁 𝗮𝗻𝗱 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆 𝗘𝗻𝗵𝗮𝗻𝗰𝗲𝗺𝗲𝗻𝘁

Leave a Reply

Your email address will not be published. Required fields are marked *