1 votes

Docker indique que l'installation du client instantané d'oracle a réussi, mais l'exploration du système de fichiers du conteneur ne contient pas de 'oracle'.

Mon fichier docker ressemble à ceci

FROM store/oracle/database-instantclient:12.2.0.1

ENV OCI_LIB=/usr/lib/oracle/12.2/client64/lib
ENV OCI_INC=/usr/include/oracle/12.2/client64
ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${OCI_LIB}
ENV PATH=$PATH:/usr/lib/oracle/12.2/client64/bin

FROM rocker/rstudio
FROM rocker/tidyverse

et quand je lance le docker build. Je vois un message sur la console disant ce qui suit

Step 1/15 : FROM store/oracle/database-instantclient:12.2.0.1
12.2.0.1: Pulling from store/oracle/database-instantclient
497341ef9d71: Pulling fs layer
598d27c2564a: Pulling fs layer
497341ef9d71: Verifying Checksum
497341ef9d71: Download complete
497341ef9d71: Pull complete
598d27c2564a: Verifying Checksum
598d27c2564a: Download complete
598d27c2564a: Pull complete
Digest: sha256:e83a2a223a14f24e6e433847d15d817ff7799a3a1a2dd2e4b224437358e996a0
Status: Downloaded newer image for store/oracle/database-instantclient:12.2.0.1

Cependant, lorsque j'explore le système de fichiers du conteneur, je ne vois aucune référence à "Oracle" dans l'ensemble du système de fichiers.

Je fais ce qui suit pour l'exploration

# find ID of your running container:
docker ps

# create image (snapshot) from container filesystem
docker commit 12345678904b5 mysnapshot

# explore this filesystem using bash (for example)
docker run -t -i mysnapshot /bin/bash

Qu'est-ce qui se passe ?

1voto

xenoid Points 9208

D'après ce que je sais, la suite FROM dans le Dockerfile ( FROM rocker/rstudio ...) effacent ce qui a été fait. L'image finale du conteneur est ce qui est construit à partir du dernier élément. Si vous voulez reporter des éléments de l'image construite auparavant, vous devez les COPIER explicitement dans votre image actuelle. Voir la page Documentation Docker pour les constructions en plusieurs étapes .

Je ne suis pas sûr qu'il soit pratique de récupérer tout ce dont Oracle a besoin dans l'image initiale pour la copier. Vous devriez peut-être le faire aussi :

  1. installer/ajouter des choses dans l'image Oracle.
  2. construire les deux premières images, l'image Oracle, et copier les choses dans l'image Oracle.
  3. avoir deux conteneurs, l'un avec l'Oracle ordinaire et l'autre pour d'autres choses, ce qui serait la façon habituelle de faire les choses.

0voto

alokp Points 11

J'ai réussi à faire fonctionner ce qui suit.

FROM oraclelinux:7-slim AS oracrap

RUN  yum -y install oracle-release-el7 && yum-config-manager --enable ol7_oracle_instantclient && \
     yum -y install oracle-instantclient18.5-basic oracle-instantclient18.5-devel oracle-instantclient18.5-sqlplus && \
     rm -rf /var/cache/yum && \
     echo /usr/lib/oracle/18.5/client64/lib > /etc/ld.so.conf.d/oracle-instantclient18.5.conf && \
     ldconfig

ENV PATH=$PATH:/usr/lib/oracle/18.5/client64/bin       

FROM rocker/rstudio:3.5.0

COPY --from=oracrap /usr/lib/oracle /usr/lib/oracle/
COPY --from=oracrap /usr/include/oracle /usr/include/oracle/
ENV PATH=$PATH:/usr/lib/oracle/18.5/client64/bin:/usr/lib/oracle/18.5/client64/lib:/usr/include/oracle/18.5/client64/
ENV OCI_LIB=/usr/lib/oracle/18.5/client64/lib
ENV OCI_INC=/usr/include/oracle/18.5/client64
ENV ORACLE_HOME=/usr/lib/oracle/18.5/client64
ENV LD_LIBRARY_PATH=/usr/lib/oracle/18.5/client64/lib
ENV LD_LIBRARY_PATH_64=/usr/lib/oracle/18.5/client64/lib

RUN ln -s /usr/lib/oracle/18.5/client64/lib/libclntsh.so.18.1   libclntsh.so.18.1

FROM rocker/tidyverse:3.5.0

COPY --from=oracrap /usr/lib/oracle /usr/lib/oracle/
COPY --from=oracrap /usr/include/oracle /usr/include/oracle/
ENV PATH=$PATH:/usr/lib/oracle/18.5/client64/bin:/usr/lib/oracle/18.5/client64/lib:/usr/include/oracle/18.5/client64/
ENV OCI_LIB=/usr/lib/oracle/18.5/client64/lib
ENV OCI_INC=/usr/include/oracle/18.5/client64
ENV ORACLE_HOME=/usr/lib/oracle/18.5/client64
ENV LD_LIBRARY_PATH=/usr/lib/oracle/18.5/client64/lib
ENV LD_LIBRARY_PATH_64=/usr/lib/oracle/18.5/client64/lib

RUN ln -s /usr/lib/oracle/18.5/client64/lib/libclntsh.so.18.1  libclntsh.so.18.1

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X