La redirection de port dans Docker est un processus qui nous permet d'exposer le port du conteneur sur le système hôte Docker. Cela nous permet d'exécuter l'application dans un environnement isolé et également de la rendre accessible depuis l'extérieur du conteneur sur une machine utilisateur.
Cet article démontrera :
- Comment transférer un port dans Docker à l'aide de la balise « -p » ou « –publish »
- Comment transférer un port dans Docker à l'aide de Docker Compose
- Comment transférer le port vers un réseau spécifique
- Conclusion
Comment transférer un port dans Docker à l'aide de la balise « -p » ou « –publish »
Pour transférer un port dans Docker, l'utilisateur doit publier le port du conteneur sur l'hôte Docker. Pour cela, exécutez le conteneur sur l'hôte docker en utilisant le ' -p ' ou ' -publier 'balise dans le' exécution du docker ' commande.
Pour une démonstration appropriée, suivez les instructions ci-dessous.
Étape 1 : Créer un fichier Docker
Tout d’abord, créez un fichier et définissez son nom comme « Fichier Docker ». Ce fichier contient les instructions textuelles pour créer le modèle du conteneur Docker. Par exemple, dockerisons le simple programme Golang en utilisant l'extrait ci-dessous dans le Dockerfile :
DE golang : 1.8
RÉPERT TRAVAIL / aller / src / application
COPIER main2.go .
COUREZ, allez construire -O serveur Web .
EXPOSER 8080
CMD [ './serveur Web' ]
Dans l'extrait donné :
- ' DEPUIS 'La commande est utilisée pour définir l'image de base.
- ' RÉPERT TRAVAIL » définit le répertoire de travail du conteneur.
- ' COPIE ' La commande créera une copie du fichier programme dans le chemin spécifié par le conteneur.
- ' COURIR ' La commande exécutera la commande spécifiée dans le conteneur.
- ' EXPOSER ' La commande spécifie le port sur lequel le conteneur sera écouté.
- ' CMD » précise les points exécutables du conteneur.
Étape 2 : Créer un programme Golang
Ensuite, créez un autre fichier nommé « main2.go ' et collez le programme Golang fourni ci-dessous qui imprime une simple chaîne sur le port ' 8080 » :
paquet principal
importer (
'fmt'
'enregistrer'
'net/http'
)
gestionnaire de fonctions ( Dans http.ResponseWriter, r * http.Requête ) {
html := `
DOCTYPEhtml >
< HTML >
< tête >
< titre > Bonjour Golang ! titre >
< style >
corps {
Couleur de l'arrière plan: #D2B48C ;
}
.récipient {
alignement du texte : centre ;
remplissage : 50 px ;
}
style >
tête >
< corps >
< div classe = 'récipient' >
< h1 > Bonjour ! Bienvenue dans le didacticiel LinuxHint h1 >
div >
corps >
HTML >`
w.En-tête ( ) .Ensemble ( 'Type de contenu' , 'texte/html' )
fmt.Fprint ( Dans , HTML )
}
fonction principale ( ) {
http.HandleFunc ( '/' , gestionnaire )
log.Fatal ( http.ÉcouterEtServir ( '0.0.0.0:8080' , nul ) )
}
Étape 3 : générer l’instantané du conteneur
Maintenant, générez un instantané pour le conteneur à partir du Dockerfile spécifié ci-dessus. Pour cela, accédez d’abord au répertoire où le Dockerfile est créé à l’aide du « cd
Ensuite, générez la nouvelle image du conteneur à l'aide de la commande donnée :
construction de docker -t golang-img.
Le résultat donné montre que l'image est créée selon le contexte de construction fourni.
Étape 4 : transférer le port hôte vers le port du conteneur
Maintenant, exécutez le conteneur et transférez le port hôte vers le port du conteneur pour accéder à l'application dockerize en dehors du conteneur sur une machine locale. A cet effet, exécutez le 'docker run –name
Ici le ' -p ' L'indicateur est utilisé pour publier le port d'exécution du conteneur sur l'hôte Docker :
Étape 5 : Vérification
Pour vérification, affichez les conteneurs en cours d'exécution à l'aide de « docker ps » :
docker psDans le résultat ci-dessous, l'application conteneurisée écoute sur les interfaces réseau disponibles ' 0.0.0.0 « sur le port publié » 8080 ». Cela implique que le port est transmis à l'application en cours d'exécution sur la machine hôte :
Maintenant, lancez le navigateur et accédez à « http://localhost:8080/ » et vérifiez si la technique de redirection de port est appliquée ou non et si l'application conteneurisée est accessible en dehors du conteneur sur le système hôte :
Ici, nous avons transféré avec succès le port hôte vers le port conteneur et l'application est accessible sur l'hôte Docker.
Comment transférer un port dans Docker à l'aide de Docker Compose
Pour transférer le port du conteneur vers l'hôte afin d'accéder à l'application conteneurisée depuis l'extérieur du conteneur, l'utilisateur peut utiliser le « port ' Entrez le fichier de composition yaml. Docker compose est un service Docker qui nous permet d'exécuter différents services et applications dans différents conteneurs. En utilisant le ' docker-compose.yml ', l'utilisateur peut également transférer le port du conteneur vers la machine hôte et disposer d'une connexion d'application avec le monde extérieur.
Consultez la procédure ci-dessous pour les illustrations.
Étape 1 : Créer un fichier de composition
Tout d’abord, générez un fichier nommé « docker-compose.yml ' et ajoutez le contenu suivant au fichier :
version: '3'prestations de service:
la toile:
construire: .
ports :
- 8080 : 8080
Dans l'extrait ci-dessus, le ' ports La clé ' est utilisée pour connecter l'hôte au port du conteneur. Ici, la première valeur est le port hôte et la deuxième valeur est le port du conteneur.
Étape 2 : Lancer l'application
Après avoir spécifié les instructions dans le fichier de composition, lancez l'application dans un conteneur à l'aide du bouton « docker-composer ' commande:
docker-composer
Étape 3 : Vérification
Pour vérification, répertoriez les conteneurs de composition à l’aide du « docker-composer ps ' commande:
docker-composer ps -un
Pour vérifier si le conteneur est accessible sur la machine hôte, accédez au « http://localhost:8080/ 'URL. Ici, vous pouvez voir que nous avons effectivement transféré le port du conteneur sur l'hôte :
Comment transférer le port vers un réseau spécifique
Pour rediriger un port de conteneur vers un réseau spécifique, l'utilisateur doit spécifier le réseau sur lequel il souhaite accéder au conteneur à l'aide du « -réseau ' option. Regardez les étapes données pour la démonstration.
Étape 1 : Créer un réseau
Créez un nouveau réseau en utilisant le ' réseau docker créer
Pour afficher les réseaux Docker, utilisez le ' réseau docker ls ' commande:
réseau Docker lsIci, nous avons réussi à créer « mongo-réseau ' qui utilise ' pont ' conducteur:
Étape 2 : Cartographier le réseau
Pour exécuter et accéder au conteneur sur le réseau spécifique à l'aide de la technique de redirection de port, utilisez la commande ci-dessous :
exécution du docker -p 8080 : 8080 --réseau mygo-réseau golang-imgDans la commande donnée, le « -p ' L'option publie le conteneur sur un port spécifié du réseau spécifié. Ici le ' -réseau ' L'option est utilisée pour définir le réseau docker :
Pour vérification, accédez à nouveau au « http://localhost:8080 » et vérifiez si le conteneur est accessible sur le réseau spécifié ou non :
Le résultat ci-dessus indique que nous avons effectivement redirigé le port à conteneurs sur un réseau spécifique.
Note: Lors de l'utilisation du réseau « hôte », l'utilisateur n'a pas besoin de publier le port du conteneur vers l'hôte à l'aide du « -p ' ou ' -publier ' option.
Transférer le port vers un réseau spécifique à l'aide de Docker Compose
Ajoutez l'extrait suivant dans le champ ' docker-compose.yml ' déposer. Dans l'extrait ci-dessous, le ' réseaux La clé ' est utilisée pour spécifier le réseau :
version: '3'prestations de service:
la toile:
construire: .
ports :
- 8080 : 8080
Maintenant, lancez l'application dans un conteneur en utilisant le ' docker-composer ' commande:
docker-composer
Nous avons couvert les méthodes de redirection de port dans Docker.
Conclusion
Pour transférer le port dans Docker afin d'accéder à l'application Dockerize en dehors du conteneur, l'utilisateur peut soit utiliser le ' -p ' ou ' -publier 'option dans le' exécution du docker ' ou l'utilisateur peut utiliser la commande ' ports ' dans le fichier de composition Docker. Afin d'accéder au conteneur sur un réseau spécifique, l'utilisateur peut rediriger le port du conteneur sur un réseau en utilisant le ' –réseau