idée de déploiement de docker

给docker开启远程访问
1.修改docker配置文件
[xxx@root]#vi /usr/lib/systemd/system/docker.service
修改
ExecStart=/usr/bin/dockerd
#centos设置:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 
#Ubunt设置:
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

保存退出,这一步是将docker映射到虚拟机2375端口
2.重新加载配置文件
[xxx@root]# systemctl daemon-reload 
3.启动/重启docker 
[xxx@root]# systemctl start/restart docker
4.检验是否安装成功
[xxx@root]# netstat -na|grep 2375或者netstat -anp|grep 2375
显示docker正在监听2375端口

insérez la description de l'image ici

1 Connect docker
peut utiliser

2. Écrivez un
exemple de dockerfile : Notez que le dockerfile doit être placé au même niveau que la cible, sinon il ne sera pas trouvé
FROM openjdk:8-jre-alpine #Le jdk utilisé

WORKDIR /myapp #prenez un nom

COPY target/snowy-gateway-app.jar /myapp/snowy-gateway-app.jar # Téléchargez le package jar local sur docker

insérez la description de l'image ici

CMD ["java", "-jar", "/myapp/snowy-gateway-app.jar"] #Exécuter la commande de démarrage

Le package jar doit être placé dans le même répertoire, sinon il ne sera pas trouvé, car la cible sera ignorée, vous pouvez donc copier le package jar et le fichier dockerfile ensemble, vous pouvez directement créer un nouveau dossier docker sous le dossier principal

3 Exécutez
Ajouter la configuration de démarrage de springboot, sélectionnez docker --"
nom du fichier docker avec désinvolture
La marque d'image et le nom du conteneur doivent être identiques
Ajoutez le port de liaison (ip ne peut pas être écrit)

Juste après avoir couru
insérez la description de l'image ici

!](https://img-blog.csdnimg.cn/85af42f96d0f4d4d95504662cc44712a.png)

![Insérer la description de l'image ici](https://img-blog.csdnimg.cn/486558508dcb4e20bc3936e2d1e3646f.png

Si vous utilisez une connexion socket, vous devez configurer un certificat, sinon c'est très dangereux

#!/bin/sh
ip=你的服务器IP
password=你的密码
dir=/root/docker/cert # 证书生成位置
validity_period=10    # 证书有效期10年

# 将此shell脚本在安装docker的机器上执行,作用是生成docker远程连接加密证书
if [ ! -d "$dir" ]; then
  echo ""
  echo "$dir , not dir , will create"
  echo ""
  mkdir -p $dir
else
  echo ""
  echo "$dir , dir exist , will delete and create"
  echo ""
  rm -rf $dir
  mkdir -p $dir
fi

cd $dir || exit
# 创建根证书RSA私钥
openssl genrsa -aes256 -passout pass:"$password" -out ca-key.pem 4096
# 创建CA证书
openssl req -new -x509 -days $validity_period -key ca-key.pem -passin pass:"$password" -sha256 -out ca.pem -subj "/C=NL/ST=./L=./O=./CN=$ip"
# 创建服务端私钥
openssl genrsa -out server-key.pem 4096
# 创建服务端签名请求证书文件
openssl req -subj "/CN=$ip" -sha256 -new -key server-key.pem -out server.csr

echo subjectAltName = IP:$ip,IP:0.0.0.0 >>extfile.cnf

echo extendedKeyUsage = serverAuth >>extfile.cnf
# 创建签名生效的服务端证书文件
openssl x509 -req -days $validity_period -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$password" -CAcreateserial -out server-cert.pem -extfile extfile.cnf
# 创建客户端私钥
openssl genrsa -out key.pem 4096
# 创建客户端签名请求证书文件
openssl req -subj '/CN=client' -new -key key.pem -out client.csr

echo extendedKeyUsage = clientAuth >>extfile.cnf

echo extendedKeyUsage = clientAuth >extfile-client.cnf
# 创建签名生效的客户端证书文件
openssl x509 -req -days $validity_period -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$password" -CAcreateserial -out cert.pem -extfile extfile-client.cnf
# 删除多余文件
rm -f -v client.csr server.csr extfile.cnf extfile-client.cnf

chmod -v 0400 ca-key.pem key.pem server-key.pem

chmod -v 0444 ca.pem server-cert.pem cert.pem

Donnez au script la permission
chmod 777 xxx.sh
exécutez le script pour générer le dossier de certificat cert
stop dokcer modifiez le fichier de configuration
vim /usr/lib/systemd/system/docker.service

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock est remplacé par le suivant /www/sshfile/cert est le chemin du certificat

ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/www/sshfile/cert/ca.pem --tlscert=/www/sshfile/cert/server-cert.pem --tlskey=/www/sshfile/ cert/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

Après avoir enregistré et quitté, redémarrez docker
systemctl daemon-reload && systemctl start docker
Si une erreur est signalée au démarrage, veuillez vérifier la commande log
journalctl -u docker.service
pour tester la connexion, utilisez idea,
tcp : https://ip : dossier certificat 2375
: le serveur généré Télécharger le certificat localement

Problème :
ENTRYPOINT et CMD sont des directives dans un Dockerfile qui définissent la commande pour démarrer un conteneur.
La directive ENTRYPOINT est utilisée pour spécifier une commande ou un script à exécuter au démarrage du conteneur. Il est généralement utilisé pour définir le programme ou service principal du conteneur.
Si la directive ENTRYPOINT est utilisée dans le Dockerfile, les arguments de la commande docker run peuvent être utilisés pour remplacer les commandes définies dans la directive ENTRYPOINT lors de l'exécution du conteneur.

Comment spécifier le fichier de configuration
ENV SPRING_PROFILES_ACTIVE=prod
ENTRYPOINT ["java", "-jar", "/myapp/course-app.jar"]
#ou CMD
CMD ["java", "-jar", "/myapp/ cours-app.jar"]

Comment entrer dans le panneau de commande de l'image
docker exec -it nom de l'image /bin/bash

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43051544/article/details/131312783
conseillé
Classement