给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端口
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
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
!](https://img-blog.csdnimg.cn/85af42f96d0f4d4d95504662cc44712a.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