🐳 АвтоматичСский Π²Ρ…ΠΎΠ΄ Π² Docker рСдТСстри скриптом Bash

АвтоматичСский docker login

by itisgood

1. ΠžΠ±Π·ΠΎΡ€

Docker ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π» Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡŽ Π² способах развСртывания ΠΈ управлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм.

Он позволяСт Π»Π΅Π³ΠΊΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… срСдах.

Однако Ρ€Π°Π±ΠΎΡ‚Π° с Docker часто связана с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄ Π² рСдТСстри ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈΠ»ΠΈ извлСчСния ΠΎΠ±Ρ€Π°Π·ΠΎΠ². Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ этого процСсса Ρ†Π΅Π½Π½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ автоматизация.

Π’ этом руководствС ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄ Π² Docker с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сцСнария Bash.

2. Π’Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½Π° Π² скриптС Bash

Π’Ρ…ΠΎΠ΄ Π² систСму Docker являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ шагом Π² Bash ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ.

Он позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π² рСдТСстри ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Docker Hub, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ доступ ΠΊ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΡŽ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Docker.

Π˜Π½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΡƒΡ Docker login Π² наш Bash-скрипт, ΠΌΡ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠ΅Ρ€Ρ‹ ΠΏΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΡŽ бСзопасного доступа ΠΊ нашим частным рСпозиториям, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… нСсанкционированноС использованиС.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, такая интСграция позволяСт Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°ΠΌ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ развСртывания, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов.

3. АвтоматичСский Π²Ρ…ΠΎΠ΄ Π² систСму

Автоматизация Π²Ρ…ΠΎΠ΄Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ скрипта Bash обСспСчиваСт удобство ΠΈ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рССстрами ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого скрипта ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ бСзопасно ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ сСрвисам Docker Hub Π±Π΅Π· нСобходимости ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ свои ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

3.1. ИспользованиС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ пароля

Π’ Docker ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² рССстр Docker Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ способами.

Рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнный ΠΈ простой способ автоматичСского Π²Ρ…ΠΎΠ΄Π° Π² рСдТСстри Docker с использованиСм ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ пароля:

#!/bin/bash
REGISTRY_URL="https://index.docker.io/v1/"
USERNAME="username"
PASSWORD="password"
docker login $REGISTRY_URL -u $USERNAME -p $PASSWORD
docker pull baeldung/test:latest

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ Bash-скриптС ΠΌΡ‹ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ процСсс Π²Ρ…ΠΎΠ΄Π° Π² рСдТСстри Docker ΠΈ извлСчСния Docker-ΠΎΠ±Ρ€Π°Π·Π° baeldung/test:latest.

Π‘ΠΊΡ€ΠΈΠΏΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ docker login с прСдоставлСнными ΡƒΡ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Docker Hub.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ выполняСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ docker pull для получСния ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° Docker ΠΈΠ· рССстра.

Запустив этот сцСнарий, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎΠΉΡ‚ΠΈ Π² Docker Hub ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, Π½Π΅ вводя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

3.2. ИспользованиС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ пароля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ stdin

ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΠΉΡ‚ΠΈ Π² Docker, Π½Π΅ раскрывая пароля, Π² скрипт bash.

Bash ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ автоматичСский Π²Ρ…ΠΎΠ΄ Π² Docker Hub, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ запрос Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ пароля.

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим скрипт для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ пароля Docker:

#!/bin/bash
REGISTRY_URL="https://index.docker.io/v1/"
USERNAME="username"
read -s -p "Enter Docker Hub password: " PASSWORD
echo "$PASSWORD" | docker login $REGISTRY_URL -u $USERNAME --password-stdin
unset PASSWORD

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ скриптС ΠΌΡ‹ использовали ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ read с Ρ„Π»Π°Π³ΠΎΠΌ -s для подавлСния Π²Π²ΠΎΠ΄Π° echo.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ прСдлагаСтся ввСсти ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΎΡ‚ Docker Hub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PASSWORD.

Π—Π°Ρ‚Π΅ΠΌ скрипт выполняСт Π²Ρ…ΠΎΠ΄ Π² Docker Hub с использованиСм прСдоставлСнных ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, пСрСдавая сохранСнный ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ docker login Ρ‡Π΅Ρ€Π΅Π· stdin с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -password-stdin.

Π’Π°ΠΊΠΎΠΉ способ избавляСт ΠΎΡ‚ нСобходимости Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ бСзопасности.

НаконСц, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΌΠ΅Ρ€Ρ‹ прСдостороТности ΠΈ ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PASSWORD с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ unset, гарантируя, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² памяти дольшС, Ρ‡Π΅ΠΌ это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

🐳 Как Ρ€Π°Π·Π»ΠΎΠ³ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΈΠ· рСдТСстри Docker?

3.3. ИспользованиС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π° доступа с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ stdin

Π’ Docker ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс Π²Ρ…ΠΎΠ΄Π° Π² систСму Docker, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ вмСсто Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ пароля ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ доступа.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚ΠΎΠΊΠ΅Π½ доступа ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сгСнСрирован нСпосрСдствСнно ΠΈΠ· профиля Docker Hub.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ использованиС ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΎΠΊΠ΅Π½Π° доступа для автоматичСского Π²Ρ…ΠΎΠ΄Π° Π² рСдТСстри Docker:

#!/bin/bash
REGISTRY_URL="https://index.docker.io/v1/"
USERNAME="username"
read -s -p "Enter Docker Hub personal access token: " ACCESS_TOKEN
echo "$ACCESS_TOKEN" | docker login $REGISTRY_URL -u $USERNAME --password-stdin
unset ACCESS_TOKEN

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Bash-скрипт ΠΏΡ€ΠΈΠ·Π²Π°Π½ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс Π²Ρ…ΠΎΠ΄Π° Π² систСму Docker Π·Π° счСт использования ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° доступа вмСсто Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ пароля.

Для этого Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ доступа пСрСдаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π΅ docker login Ρ‡Π΅Ρ€Π΅Π· stdin с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ -password-stdin.

4. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ…ΠΎΠ΄Π° : использованиС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ пароля, использованиС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ пароля со stdin ΠΈ использованиС ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π° доступа Π² сочСтании со stdin.

По ΠΌΠ΅Ρ€Π΅ измСнСния ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Docker Hub Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ наши скрипты Π² соотвСтствии с нашими потрСбностями ΠΈ прСдпочтСниями Π² области бСзопасности.

см. Ρ‚Π°ΠΊΠΆΠ΅:

 

You may also like

Leave a Comment