เชฎเซเช เชเชเชตเชพเชฐ เชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชเซเชเชจเซ เชเชฎเชพเชตเชเชจเซ เชธเซเชตเชเชพเชฒเชฟเชค เชเชฐเชตเชพ เชตเชฟเชถเซ เชตเชฟเชเชพเชฐเซเชฏเซเช. gitlab.com เชเซเชชเชพ เชเชฐเซเชจเซ เช เชฎเชพเชเซ เชคเชฎเชพเชฎ เชธเชพเชงเชจเซ เชชเซเชฐเชพ เชชเชพเชกเซ เชเซ, เช
เชจเซ เช
เชฒเชฌเชคเซเชค เชฎเซเช เชคเซเชจเซ เชฒเชพเชญ เชฒเซเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช เชเซ, เชคเซเชจเซ เชถเซเชงเซ เชเชพเชขเซเชฏเซเช เชเซ เช
เชจเซ เชเช เชจเชพเชจเซ เชกเชฟเชชเซเชฒเซเชฏเชฎเซเชจเซเช เชธเซเชเซเชฐเชฟเชชเซเช เชฒเชเซ เชเซ. เช เชฒเซเชเชฎเชพเช เชนเซเช เชธเชฎเซเชฆเชพเชฏ เชธเชพเชฅเซ เชฎเชพเชฐเซ เช
เชจเซเชญเชต เชถเซเชฐ เชเชฐเซเช เชเซเช.
TL; DR
- 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
เชเซ เชฌเชงเซเช "เชฒเซเชฒเซเช" เชเซ, เชคเซ เช เชฎเซ เชฎเชพเชจเซเช เชเซเช เชเซ เช เชฎเซ เชธเชฐเซเชตเชฐ เชชเชฐ เชกเซเชเชฐเชจเซ เชธเชซเชณเชคเชพเชชเซเชฐเซเชตเช เชเซเช เชตเซเชฏเซเช เชเซ.
เชเชฟเชเชฒเซเชฌ เชชเชฐ เชธเชคเชค เชกเชฟเชฒเชฟเชตเชฐเซ เชธเซเช เชเชฐเซ เชฐเชนเซเชฏเซเช เชเซ
เชเซเชคเชพเชฒเชพเชฌเชพ เชเชพเชฐเซเชฏเชเชฐ เชฐเซเชฎเซเช เชกเซเชเชฐ เชนเซเชธเซเช เชชเชฐ เชเชฆเซเชถเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเซ เชธเชเซเชทเชฎ เชฅเชตเชพ เชฎเชพเชเซ, เชกเซเชเชฐเซเชก เชธเชพเชฅเซ เชเชจเซเชเซเชฐเชฟเชชเซเชเซเชก เชเชจเซเชเซเชถเชจ เชฎเชพเชเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ เช เชจเซ เชเซ เชเซเชตเซ เชฐเซเชคเซ เช เชจเซ เชเซเชฏเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเซ เชคเซ เชจเชเซเชเซ เชเชฐเชตเซเช เชเชฐเซเชฐเซ เชเซ. เชฎเซเช เช เชธเชฎเชธเซเชฏเชพเชจเซ gitlbab เชธเซเชเชฟเชเชเซเชธเชฎเชพเช เชเชฒเซเชฎเชพเช เชซเชเซเชค เชจเซเชเซเชจเชพ เชเชฎเซเชฐเซเชจเซ เชนเชฒ เชเชฐเซ เชเซ:
เชธเซเชชเซเชเชฒเชฐ เชถเซเชฐเซเชทเช
เชซเชเซเชค เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซเชจเซ เชธเชพเชฎเชเซเชฐเซ เช
เชจเซ เชฌเชฟเชฒเชพเชกเซ เชฆเซเชตเชพเชฐเชพ เชเซ เชเชเชเชชเซเช เชเชฐเซ: 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
เชฎเซเชเซเชฏ เชธเชฎเชธเซเชฏเชพ เชเชฟเชเชฒเซเชฌ CI/CD เชเชฒเซเชฎเชพเชเชฅเซ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซเชจเซ เชธเชพเชฎเชเซเชฐเซเชจเซ เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชตเชฐเซเชชเชฎเชพเช "เชเซเชเชเชตเชพเชจเซ" เชนเชคเซ. เชฐเชฟเชฎเซเช เชนเซเชธเซเชเชจเซเช เชเชจเซเชเซเชถเชจ เชเซเชฎ เชเชพเชฎ เชเชฐเชคเซเช เชจเชฅเซ เชคเซ เชนเซเช เชธเชฎเชเซ เชถเชเซเชฏเซ เชจเชฅเซ. เชนเซเชธเซเช เชชเชฐ เชฎเซเช เชฒเซเช sudo journalctl -u เชกเซเชเชฐ เชชเชฐ เชเซเชฏเซเช, เชนเซเชจเซเชกเชถเซเช เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเช เชญเซเชฒ เชนเชคเซ. เชฎเซเช เชเชฒเซเชฎเชพเช เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชถเซเช เชธเชเชเซเชฐเชนเชฟเชค เชฅเชพเชฏ เชเซ เชคเซ เชเซเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช; เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเซ เชเชจเชพ เชเซเชตเซเช เชเซเช เชถเชเซ เชเซ: cat -A $DOCKER_CERT_PATH/key.pem. เชฎเซเช เชเซเชฐเซเช เช เชเซเชทเชฐ tr -d 'r' เชจเซ เชฆเซเชฐ เชเชฐเซเชจเซ เชญเซเชฒเชจเซ เชฆเซเชฐ เชเชฐเซ.
เชเชเชณ, เชคเชฎเซ เชคเชฎเชพเชฐเซ เชตเชฟเชตเซเชเชฌเซเชฆเซเชงเชฟเชฅเซ เชธเซเชเซเชฐเชฟเชชเซเชเชฎเชพเช เชชเซเชธเซเช-เชฐเชฟเชฒเซเช เชเชพเชฐเซเชฏเซ เชเชฎเซเชฐเซ เชถเชเซ เชเซ. เชคเชฎเซ เชฎเชพเชฐเชพ เชฐเซเชชเซเชเซเชเชฐเซเชฎเชพเช เชเชพเชฐเซเชฏเชเชพเชฐเซ เชธเชเชธเซเชเชฐเชฃ เชเซเช เชถเชเซ เชเซ
เชธเซเชฐเซเชธ: www.habr.com