Article
· Jan 29 7m de lecture

Utilisation des conteneurs InterSystems IRIS avec Docker pour Windows

InterSystems prend en charge l'utilisation des images InterSystems IRIS Docker qu'il fournit sous Linux uniquement. Plutôt que d'exécuter des conteneurs en tant que processus natifs, comme sur les plateformes Linux, Docker pour Windows crée une VM Linux fonctionnant sous Hyper-V, le virtualiseur Windows, pour héberger les conteneurs. Ces couches supplémentaires ajoutent une complexité qui empêche InterSystems de prendre en charge Docker pour Windows pour le moment.

Nous comprenons cependant qu'à des fins de tests et à d'autres fins spécifiques, vous souhaiterez peut-être exécuter des conteneurs InterSystems basés sur IRIS à partir d'InterSystems sous Docker pour Windows. Cet article décrit les différences entre Docker pour Windows et Docker pour Linux dont InterSystems est conscient car elles s'appliquent à l'utilisation des images de conteneur fournies par InterSystems. D’autres problèmes inattendus peuvent survenir. Lorsque vous utilisez des images et des conteneurs InterSystems IRIS sur une plate-forme Windows, assurez-vous d'avoir accès à la documentation Docker pour référence pratique ; voir notamment Getting started with Docker for Windows

Étant donné que la gestion par un conteneur de stockage persistant externe sous Docker pour Windows implique à la fois les systèmes de fichiers Windows et Linux et la gestion des fichiers, les différences constatées sont en grande partie liées au stockage.

Pour des informations générales sur l'exécution d'InterSystems IRIS dans des conteneurs Docker à l'aide de l'image fournie par InterSystems, consultez Exécution d'InterSystems IRIS dans des conteneurs Docker et First Look:  InterSystems IRIS in Docker Containers.

Partager des lecteurs de disque

Sous Windows, vous devez autoriser Docker à accéder à tout stockage avec lequel il interagit en partageant le lecteur de disque sur lequel il se trouve. Pour partager un ou plusieurs disques, suivez ces étapes (vous pouvez combiner cela avec la procédure de l'élément précédent) :

  1. Cliquez avec le bouton droit sur l'icône Docker dans la barre d'état système et sélectionnez Paramètres... .
  2. Choisissez l'onglet Lecteurs partagés, puis sélectionnez le(s) lecteur(s) sur lesquels se trouve le stockage et cliquez sur Appliquer. Si un lecteur est déjà sélectionné (le lecteur C est sélectionné par défaut), décochez la case et cliquez sur Appliquer, puis sélectionnez-le et cliquez à nouveau sur Appliquer.
  3. Entrez vos informations de connexion lorsque vous y êtes invité.
  4. Docker redémarre automatiquement après avoir appliqué les modifications ; si ce n'est pas le cas, cliquez avec le bouton droit sur l'icône Docker dans la barre d'état système et sélectionnez Redémarrer.

Copier des fichiers externes dans le conteneur

Lorsque vous utilisez Docker, il est souvent pratique de monter un répertoire dans le système de fichiers externe en tant que volume à l'intérieur du conteneur, et de l'utiliser comme emplacement pour tous les fichiers externes nécessaires au logiciel à l'intérieur du conteneur. Par exemple, vous pouvez monter un volume et placer la clé de licence InterSystems IRIS, iris.key, ainsi qu'un fichier contenant le mot de passe InterSystems IRIS prévu dans le répertoire externe pour y accéder via l'option --key du programme iris-main et le script de changement de mot de passe. (voir le programme iris-main et changer le mot de passe InterSystems IRIS in Running InterSystems IRIS in Containers). Sous Docker pour Windows, cependant, les différences de gestion des fichiers et d'autorisations empêchent parfois qu'un fichier sur un volume externe monté soit utilisé correctement par un programme dans le conteneur. Vous pouvez souvent surmonter les difficultés d'autorisation en demandant au programme de copier le fichier dans le conteneur, puis d'utiliser la copie.

Par exemple, l'option iris-main --before est souvent utilisée pour changer le mot de passe de l'instance InterSystems IRIS dans le conteneur :

--before "changePassword.sh /external/password.txt"

Si cela ne parvient pas à modifier le mot de passe comme prévu sous Windows, essayez ce qui suit :

--before "cp /external/password.txt /external/password_copied.txt &&  \
changePassword.sh /external/password_copied.txt"

Utiliser des volumes nommés

Lorsque de nombreux fichiers dynamiques sont impliqués, tout montage direct du système de fichiers Windows dans un conteneur est susceptible d'entraîner des problèmes, même si le montage et la copie individuelle de tous les fichiers seraient réalisables. Dans le cas d'InterSystems IRIS, cela s'applique en particulier à la fois à la fonctionnalité durable %SYS pour le stockage persistant de données spécifiques à une instance (voir %SYS durable pour les données d'instance persistantes lors de l'exécution d'InterSystems IRIS dans des conteneurs in Running InterSystems IRIS in Containerset le stockage des fichiers journaux. Vous pouvez résoudre ce problème en montant un volume nommé, qui est un volume de stockage avec un point de montage dans le système de fichiers de la VM Linux hébergeant les conteneurs sur votre système. Étant donné que la VM est basée sur le système de fichiers, le contenu d'un tel volume est enregistré sur le disque Windows avec le reste de la VM, même en cas de panne de Docker ou de votre système.

Par exemple, la méthode standard pour activer durable %SYS lors de l'exécution d'un conteneur InterSystems IRIS consiste à monter un volume externe et à utiliser l'option --env pour définir la variable d'environnement ISC_DATA_DIRECTORY sur un emplacement sur ce volume, par exemple.:

docker run ... \
--volume /nethome/pmartinez/iris_external:/external  \
--env ISC_DATA_DIRECTORY=/external/durable/

Cela ne fonctionnera pas avec Docker pour Windows ; vous devez plutôt créer un volume nommé avec la commande docker volume create et y localiser le répertoire durable %SYS. De plus, vous devez inclure le niveau supérieur du répertoire durable %SYS, /irissys, dans la spécification ISC_DATA_DIRECTORY , ce qui n'est pas le cas sous Linux. Sous Windows, vos options ressembleraient donc à ceci :

docker volume create durable
docker run ... \
--volume durable:/durable \
--env ISC_DATA_DIRECTORY=/durable/irissys/

Pour utiliser cette approche pour les fichiers journaux de l'instance, créez et montez un volume nommé, comme dans l'exemple durable %SYS ci-dessus, puis utilisez n'importe quel mécanisme de configuration (la routine ^JOURNAL , la page Paramètres du journal dans le portail de gestion ou l'iris.cpf) pour définir les répertoires de journaux actuel et alternatif vers des emplacements sur le volume nommé. Pour séparer les répertoires de journaux actuels et alternatifs, créez et montez un volume nommé pour chacun. (Notez que cette approche n'a pas été testée de manière approfondie et que les fichiers de journaux relevant de ce programme peuvent donc être menacés.)

Pour découvrir le point de montage du système de fichiers Linux d'un volume nommé dans la VM, vous pouvez utiliser la commande docker volume inspect, comme suit :

docker volume inspect durable_data
[
    {
        "CreatedAt": "2018-05-04T12:11:54Z",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/durable_data/_data",
        "Name": "durable_data",
        "Options": null,
        "Scope": "local"
    }
]

Comparaison des commandes

En regroupant tous les éléments précédents, ce qui suit présente une comparaison entre la commande finale docker run décrite Run and Investigate the InterSystems IRIS-based Container dans Running InterSystems Products in Containers, qui est destiné à être exécuté sur une plate-forme Linux, et la commande docker run équivalente à l'aide de Docker pour Windows.

Linux

$ docker run --name iris3 --detach --publish 52773:52773 \
  --volume /nethome/pmartinez/iris_external:/external \
  --env ISC_DATA_DIRECTORY=/external/durable \
  --env ICM_SENTINEL_DIR=/external iris3:test --key /external/iris.key \
  --before "changePassword.sh /external/password.txt"

Windows

C:\Users\pmartinez>docker volume create durable
C:\Users\pmartinez>docker volume create journals
C:\Users\pmartinez>docker run --name iris3 --detach --publish 52773:52773 \
--volume durable:/durable\
--volume journals:/journals
--env ISC_DATA_DIRECTORY=/durable/irissys \
--env ICM_SENTINEL_DIR=/durable iris3:test --key /external/iris.key \
--before "cp /external/password.txt /external/password_copied.txt && \
changePassword.sh /durable/password_copied.txt"

Si vous avez des informations à apporter sur l'utilisation des conteneurs fournis par InterSystems avec Docker pour Windows, veuillez ajouter un commentaire ici ou publier votre propre article !
 

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer