āĻāĻŽāĻŋ āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻžāĻ° āĻĒā§āĻ°āĻāĻ˛ā§āĻĒā§āĻ° āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻāĻĨāĻž āĻā§āĻŦā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ gitlab.com āĻĻāĻ¯āĻŧāĻž āĻāĻ°ā§ āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻ°āĻā§āĻāĻžāĻŽ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°ā§ āĻāĻŦāĻ āĻ
āĻŦāĻļā§āĻ¯āĻ āĻāĻŽāĻŋ āĻāĻāĻŋāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¨ā§āĻāĻ¯āĻŧāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ, āĻāĻāĻŋ āĻŦā§āĻ° āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻā§āĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛āĻŋāĻāĻāĻŋāĨ¤ āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻāĻŽāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°āĻĻāĻžāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻŽāĻžāĻ° āĻ
āĻāĻŋāĻā§āĻāĻ¤āĻž āĻļā§āĻ¯āĻŧāĻžāĻ° āĻāĻ°āĻŋāĨ¤
TL; āĻĄāĻŋāĻāĻ°
- VPS āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°ā§āĻ¨: āĻ°ā§āĻ āĻ āĻā§āĻˇāĻŽ āĻāĻ°ā§āĻ¨, āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻ˛āĻ āĻāĻ¨ āĻāĻ°ā§āĻ¨, āĻĄāĻāĻžāĻ°ā§āĻĄ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨, ufw āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻ¨
- āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨
docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl tcp āĻ¸āĻā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĄāĻāĻžāĻ°ā§āĻĄ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°ā§āĻ¨: āĻĄāĻāĻžāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĨā§āĻā§ -H fd:// āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¸āĻ°āĻžāĻ¨āĨ¤ - docker.json-āĻ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻĢāĻŋāĻā§āĻā§āĻ° āĻĒāĻžāĻĨ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°ā§āĻ¨
- āĻ¸āĻžāĻ°ā§āĻāĻŋāĻĢāĻŋāĻā§āĻā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻ¸āĻš CI/CD āĻ¸ā§āĻāĻŋāĻāĻ¸ā§ āĻāĻŋāĻāĻ˛ā§āĻ¯āĻžāĻŦ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ¨ āĻāĻ°ā§āĻ¨āĨ¤ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ .gitlab-ci.yml āĻ˛āĻŋāĻā§āĻ¨āĨ¤
āĻāĻŽāĻŋ āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨ āĻŦāĻŋāĻ¤āĻ°āĻŖā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻžāĻŦāĨ¤
āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ VPS āĻ¸ā§āĻāĻāĻĒ
āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻā§āĻ¨āĻž āĻ āĻāĻĻāĻžāĻšāĻ°āĻŖ
āĻ¸ā§āĻā§āĻ°āĻŋāĻ¨āĻļāĻ
āĻĒā§āĻ°āĻĨāĻŽā§, ufw āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻāĻ¯āĻŧāĻžāĻ˛ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨:
apt-get update && apt-get install ufw
āĻāĻ¸ā§āĻ¨ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻ¨ā§āĻ¤āĻŋ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻŋ: āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻāĻ¤ āĻ¸āĻāĻ¯ā§āĻāĻā§āĻ˛āĻŋāĻā§ āĻŦā§āĻ˛āĻ āĻāĻ°ā§āĻ¨, āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦāĻšāĻŋāĻ°ā§āĻāĻžāĻŽā§ āĻ¸āĻāĻ¯ā§āĻāĻā§āĻ˛āĻŋāĻā§ āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¨:
ufw default deny incoming
ufw default allow outgoing
āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ: ssh āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¤ā§ āĻā§āĻ˛āĻŦā§āĻ¨ āĻ¨āĻž:
ufw allow OpenSSH
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ: āĻĒā§āĻ°ā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¨: ufw āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¨ 12345, āĻ¯ā§āĻāĻžāĻ¨ā§ 12345 āĻšāĻ˛ āĻĒā§āĻ°ā§āĻ āĻ¨āĻŽā§āĻŦāĻ° āĻŦāĻž āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¨āĻžāĻŽāĨ¤ āĻ āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨: ufw āĻ āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨ 12345
āĻĢāĻžāĻ¯āĻŧāĻžāĻ°āĻāĻ¯āĻŧāĻžāĻ˛ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨:
ufw enable
āĻāĻŽāĻ°āĻž āĻ¸ā§āĻļāĻ¨ āĻĨā§āĻā§ āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻ°āĻŋ āĻāĻŦāĻ ssh āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻŦāĻžāĻ° āĻ˛āĻ āĻāĻ¨ āĻāĻ°āĻŋāĨ¤
āĻāĻāĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻā§ āĻāĻāĻāĻŋ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻ¤āĻžāĻā§ āĻ¸ā§āĻĄā§ āĻā§āĻ°ā§āĻĒā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨āĨ¤
apt-get install sudo
adduser scoty
usermod -aG sudo scoty
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻĒāĻ¨āĻŋ āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻāĻāĻ¨ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤. āĻāĻāĻŋ āĻāĻ°āĻ¤ā§, āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻāĻĒāĻ¨āĻžāĻ° ssh āĻā§ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻāĻ°ā§āĻ¨:
ssh-copy-id [email protected]
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻāĻĒāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻšāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ˛āĻ āĻāĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨; āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ° āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻŋāĻāĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§, āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¸ā§āĻāĻŋāĻāĻ¸ā§, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°ā§āĻ¨:
sudo nano /etc/ssh/sshd_config
āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻ˛āĻāĻāĻ¨ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°ā§āĻ¨:
PasswordAuthentication no
sshd āĻĄā§āĻŽāĻ¨ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨:
sudo systemctl reload sshd
āĻāĻāĻ¨ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻŦāĻž āĻ āĻ¨ā§āĻ¯ āĻā§āĻ āĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ˛āĻ āĻāĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻāĻžāĻ āĻāĻ°āĻŦā§ āĻ¨āĻžāĨ¤
āĻāĻ°āĻĒāĻ°ā§, āĻĄāĻāĻžāĻ°ā§āĻĄ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻ¨, āĻāĻŽāĻŋ āĻāĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŦ āĻ¨āĻž, āĻ¯ā§āĻšā§āĻ¤ā§ āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§āĻ° āĻ˛āĻŋāĻā§āĻāĻāĻŋ āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻĄāĻāĻžāĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻ§āĻžāĻĒāĻā§āĻ˛āĻŋ āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§āĻ¨:
āĻ¸āĻžāĻ°ā§āĻāĻŋāĻĢāĻŋāĻā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻĄāĻāĻžāĻ° āĻĄā§āĻŽāĻ¨āĻā§ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§āĻāĻžāĻŦā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§, āĻāĻāĻāĻŋ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž TLS āĻ¸āĻāĻ¯ā§āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻāĻŋ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻā§ āĻĨāĻžāĻāĻ¤ā§ āĻšāĻŦā§, āĻ¯āĻž āĻ
āĻŦāĻļā§āĻ¯āĻ āĻāĻĒāĻ¨āĻžāĻ° āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻ
āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻāĻžāĻ° āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§āĻ¤ā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻĒāĻĻāĻā§āĻˇā§āĻĒāĻā§āĻ˛āĻŋ āĻ
āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°ā§āĻ¨:
āĻĄāĻāĻžāĻ°ā§āĻĄ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻĄāĻāĻžāĻ° āĻĄā§āĻŽāĻ¨ āĻ˛āĻā§āĻ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§, āĻāĻŽāĻ°āĻž -H df:// āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĢā§āĻ˛āĻŋ, āĻāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ āĻ¯ā§ āĻā§āĻ¨ āĻšā§āĻ¸ā§āĻā§ āĻĄāĻāĻžāĻ° āĻĄā§āĻŽāĻ¨ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
āĻāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĢāĻžāĻāĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤, āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨āĻž āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§āĻ¨:
/etc/docker/docker.json
{
"hosts": [
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2376"
],
"labels": [
"is-our-remote-engine=true"
],
"tls": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server.pem",
"tlskey": "/etc/docker/key.pem",
"tlsverify": true
}
2376 āĻĒā§āĻ°ā§āĻā§ āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ:
sudo ufw allow 2376
āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻĻāĻŋāĻ¯āĻŧā§ āĻĄāĻāĻžāĻ°ā§āĻĄ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ:
sudo systemctl daemon-reload && sudo systemctl restart docker
āĻāĻ¸ā§āĻ¨ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻĻā§āĻā§āĻ¨:
sudo systemctl status docker
āĻ¯āĻĻāĻŋ āĻ¸āĻŦāĻāĻŋāĻā§ "āĻ¸āĻŦā§āĻ" āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻŋ āĻ¯ā§ āĻāĻŽāĻ°āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§ āĻĄāĻāĻžāĻ° āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĨ¤
āĻāĻŋāĻāĻ˛ā§āĻ¯āĻžāĻŦā§ āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻĄā§āĻ˛āĻŋāĻāĻžāĻ°āĻŋ āĻ¸ā§āĻ āĻāĻĒ āĻāĻ°āĻž āĻšāĻā§āĻā§
āĻā§āĻ¤āĻžāĻ˛āĻžāĻŦāĻž āĻāĻ°ā§āĻŽā§ āĻ¯āĻžāĻ¤ā§ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĄāĻāĻžāĻ° āĻšā§āĻ¸ā§āĻā§ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻāĻžāĻ°ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻāĻ¨āĻā§āĻ°āĻŋāĻĒā§āĻ āĻāĻ°āĻž āĻ¸āĻāĻ¯ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ° āĻāĻŦāĻ āĻā§ āĻā§āĻāĻžāĻŦā§ āĻāĻŦāĻ āĻā§āĻĨāĻžāĻ¯āĻŧ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻŽāĻŋ āĻāĻŋāĻāĻ˛āĻŦā§āĻ¯āĻžāĻŦ āĻ¸ā§āĻāĻŋāĻāĻ¸ā§ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤āĻā§āĻ˛āĻŋ āĻ¯ā§āĻ āĻāĻ°ā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°ā§āĻāĻŋ:
āĻ¸ā§āĻĒāĻ¯āĻŧāĻ˛āĻžāĻ° āĻļāĻŋāĻ°ā§āĻ¨āĻžāĻŽ
āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ°ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻāĻŦāĻ āĻā§ āĻāĻāĻāĻĒā§āĻ āĻāĻ°ā§āĻ¨: cat ca.pem
. āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻŽāĻžāĻ¨ āĻāĻĒāĻŋ āĻāĻŦāĻ āĻĒā§āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨.
āĻāĻ¸ā§āĻ¨ GitLab āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ āĻ˛āĻŋāĻāĻŋāĨ¤ āĻĄāĻāĻžāĻ°-āĻāĻ¨-āĻĄāĻāĻžāĻ° (āĻĄāĻŋāĻ¨ā§āĻĄ) āĻāĻŋāĻ¤ā§āĻ°āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
gitlab-ci.yml
image:
name: docker/compose:1.23.2
# ĐŋĐĩŅĐĩĐŋиŅĐĩĐŧ entrypoint , ŅŅОйŅ ŅайОŅĐ°ĐģĐž в dind
entrypoint: ["/bin/sh", "-c"]
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
services:
- docker:dind
stages:
- deploy
deploy:
stage: deploy
script:
- bin/deploy.sh # ŅĐēŅиĐŋŅ Đ´ĐĩĐŋĐģĐžŅ ŅŅŅ
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¸āĻš āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§:
bin/deploy.sh
#!/usr/bin/env sh
# ĐĐ°Đ´Đ°ĐĩĐŧ ŅŅаСŅ, ĐĩŅĐģи вОСĐŊиĐēĐģи ĐēĐ°ĐēиĐĩ-ŅĐž ĐžŅийĐēи
set -e
# ĐŅвОдиĐŧ, ŅĐž , ŅŅĐž Đ´ĐĩĐģĐ°ĐĩĐŧ
set -v
#
DOCKER_COMPOSE_FILE=docker-compose.yml
# ĐŅĐ´Đ° Đ´ĐĩĐŋĐģОиĐŧ
DEPLOY_HOST=185.241.52.28
# ĐŅŅŅ Đ´ĐģŅ ŅĐĩŅŅиŅиĐēĐ°ŅОв ĐēĐģиĐĩĐŊŅĐ°, ŅĐž ĐĩŅŅŅ в ĐŊĐ°ŅĐĩĐŧ ŅĐģŅŅĐ°Đĩ - gitlab-вОŅĐēĐĩŅĐ°
DOCKER_CERT_PATH=/root/.docker
# ĐŋŅОвĐĩŅиĐŧ, ŅŅĐž в ĐēĐžĐŊŅĐĩĐšĐŊĐĩŅĐĩ вŅĐĩ иĐŧĐĩĐĩŅŅŅ
docker info
docker-compose version
# ŅОСдаĐĩĐŧ ĐŋŅŅŅ (ŅĐĩĐšŅĐ°Ņ ŅайОŅĐ°ĐĩĐŧ в ĐēĐģиĐĩĐŊŅĐĩ - вОŅĐēĐĩŅĐĩ gitlab'Đ°)
mkdir $DOCKER_CERT_PATH
# иСŅĐŧĐ°ĐĩĐŧ ŅОдĐĩŅĐļиĐŧĐžĐĩ ĐŋĐĩŅĐĩĐŧĐĩĐŊĐŊŅŅ
, ĐŋŅи ŅŅĐžĐŧ ŅĐ´Đ°ĐģŅĐĩĐŧ ĐģиŅĐŊиĐĩ ŅиĐŧвОĐģŅ дОйавĐģĐĩĐŊĐŊŅĐĩ ĐŋŅи ŅĐžŅ
ŅĐ°ĐŊĐĩĐŊии ĐŋĐĩŅĐĩĐŧĐĩĐŊĐŊŅŅ
.
echo "$CA_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/ca.pem
echo "$CERT_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/cert.pem
echo "$KEY_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/key.pem
# ĐŊĐ° вŅŅĐēиК ŅĐģŅŅĐ°Đš Đ´Đ°ĐĩĐŧ ŅĐžĐģŅĐēĐž ŅиŅĐ°ŅŅ
chmod 400 $DOCKER_CERT_PATH/ca.pem
chmod 400 $DOCKER_CERT_PATH/cert.pem
chmod 400 $DOCKER_CERT_PATH/key.pem
# Đ´Đ°ĐģĐĩĐĩ ĐŊĐ°ŅиĐŊĐ°ĐĩĐŧ ŅĐļĐĩ ŅайОŅĐ°ŅŅ Ņ ŅĐ´Đ°ĐģĐĩĐŊĐŊŅĐŧ docker-Đ´ĐĩĐŧĐžĐŊĐžĐŧ. ХОйŅŅвĐĩĐŊĐŊĐž, ŅĐ°Đŧ Đ´ĐĩĐŋĐģОК
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://$DEPLOY_HOST:2376
# ĐŋŅОвĐĩŅиĐŧ, ŅŅĐž ĐēĐžĐŊĐŊĐĩĐēŅиŅŅŅ вŅĐĩ ŅŅĐŋĐĩŅĐŊĐž
docker-compose
-f $DOCKER_COMPOSE_FILE
ps
# ĐģĐžĐŗиĐŊиĐŧŅŅ в docker-ŅĐĩĐŗиŅŅŅи, ŅŅŅ ĐŧĐžĐļĐĩŅĐĩ ŅĐēаСаŅŅ ŅвОК "ĐŧĐĩŅŅĐŊŅĐš" ŅĐĩĐŗиŅŅŅи
docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
docker-compose
-f $DOCKER_COMPOSE_FILE
pull app
# ĐŋОдĐŊиĐŧĐ°ĐĩĐŧ ĐŋŅиĐģĐžĐļĐĩĐŊиĐĩ
docker-compose
-f $DOCKER_COMPOSE_FILE
up -d app
āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻāĻŋāĻ˛ āĻāĻŋāĻāĻ˛ā§āĻ¯āĻžāĻŦ āĻ¸āĻŋāĻāĻ/āĻ¸āĻŋāĻĄāĻŋ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻĨā§āĻā§ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻĢāĻŋāĻā§āĻā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§āĻā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻāĻāĻžāĻ°ā§ "āĻā§āĻ¨ā§ āĻāĻ¨āĻž"āĨ¤ āĻĻā§āĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻšā§āĻ¸ā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻāĻāĻŋ āĻā§āĻ¨ āĻāĻžāĻ āĻāĻ°āĻā§ āĻ¨āĻž āĻ¤āĻž āĻāĻŽāĻŋ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĻ¨āĻŋāĨ¤ āĻšā§āĻ¸ā§āĻā§ āĻāĻŽāĻŋ āĻ˛āĻ sudo journalctl -u docker āĻĻā§āĻāĻ˛āĻžāĻŽ, āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻļā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻāĻŋāĻ˛āĨ¤ āĻāĻŽāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻž āĻĻā§āĻāĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ; āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ°āĻāĻŽ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨: cat -A $DOCKER_CERT_PATH/key.pem. āĻāĻŽāĻŋ āĻā§āĻ¯āĻžāĻ°ā§āĻ āĻ āĻā§āĻˇāĻ° tr -d 'r' āĻ āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ¯ā§āĻ āĻāĻ°ā§ āĻ¤ā§āĻ°ā§āĻāĻŋāĻāĻŋ āĻāĻžāĻāĻŋāĻ¯āĻŧā§ āĻāĻ āĻ˛āĻžāĻŽāĨ¤
āĻāĻ° āĻĒāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻŦāĻŋāĻŦā§āĻāĻ¨āĻžāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ¤ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ āĻ°āĻŋāĻ˛āĻŋāĻ-āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻāĻŽāĻžāĻ° āĻ¸āĻāĻā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛ā§ āĻāĻžāĻā§āĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻ¤ā§āĻ¸: www.habr.com