Évitez les caractères déformés et partagez le système de fichiers dans l'environnement Docker Rstudio (Docoker-compose également)

Problèmes de partage de système de fichiers et déformés

Docker Hub a rocker / geospatial comme environnement Rstudio Server qui peut également analyser le SIG. Cependant, même si j'essayais de l'imiter et que je faisais "docker pull" et "docker run rocker / geospatial", il y avait les deux problèmes suivants.

  1. La figure tracée avec ggplot2 etc. ne prend pas en charge le japonais (les caractères sont brouillés)
  2. Si vous ne partagez pas le système de fichiers entre l'hôte / le conteneur, vous ne pourrez pas accéder aux fichiers que vous avez toujours utilisés dans la version de bureau. (Si vous ne le définissez pas au moment de Docker run, vous ne pourrez pas essayer setwd après l'avoir démarré.)

Je laisserai un protocole d’accord qui aborde ces deux points.

Créer un Dockerfile

Commencez par créer un Dockerfile n'importe où du côté hôte (ordinateur). Cette fois, créez un répertoire nommé docker sur Dropbox et créez un Dockerfile. (Exemple: (Mac) C: \ Users \ user \ Dropbox \ docker, (Windows) D: \ Dropbox \ R \ docker)

Cela peut être un bloc-notes ou un éditeur, alors créez un fichier nommé Dockerfile et placez-le dans le répertoire docker. En règle générale, ne placez aucun fichier autre que Dockerfile dans le répertoire (cela affectera la construction de Docker). Puisqu'une image est créée pour chaque RUN, il est souhaitable de connecter RUN avec une barre oblique inverse \ autant que possible. [^ 1] [^ 2]

#Image de base (toute bascule/*Peut être changé en)
FROM rocker/geospatial:latest

#Ajouter et basculer les paramètres régionaux japonais vers l'environnement du système d'exploitation (la bascule est basée sur Debian)
ENV LANG ja_JP.UTF-8
ENV LC_ALL ja_JP.UTF-8
RUN sed -i '$d' /etc/locale.gen \
  && echo "ja_JP.UTF-8 UTF-8" >> /etc/locale.gen \
    && locale-gen ja_JP.UTF-8 \
    && /usr/sbin/update-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja"
RUN /bin/bash -c "source /etc/default/locale"
RUN ln -sf  /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

#Installer la police japonaise
RUN apt-get update && apt-get install -y \
  fonts-ipaexfont \
  fonts-noto-cjk

Docker build Lancez Terminal (sur Mac). Pour Windows, utilisez TeraTerm ou Windows Terminal. Allez à l'emplacement où se trouve le Dockerfile.

#Pour moi (Mac)/Users/De l'utilisateur/Users/user/Dropbox/Aller au docker

cd Dropbox
cd docker

Après vous être déplacé vers l'emplacement où se trouve le Dockerfile, utilisez docker build -t <nom> <directory> to build. (Cette fois, <nom> est geo: geospatial)

# /Users/user/Dropbox/docker

docker build -t geo:geospatial .

Après la construction, exécutez Docker, mais utilisez l'option -v pour partager le système de fichiers et l'option -p pour connecter les ports hôte et conteneur. [^ 3]

Pour Mac

docker run -p 8787:8787 -v C:\Users\user\Dropbox\R\:/home/rstudio -d geo:geospatial

Pour C: \ Users \ user \ Dropbox \ R \, entrez le chemin du dossier que vous utilisez.

Si vous utilisez le lecteur D sous Windows

docker run -p 8787:8787 -v D:\Dropbox\R:/home/rstudio -d geo:geospatial

Cependant, si le répertoire sur le lecteur D ne se monte pas correctement, vérifiez les paramètres de stratégie de sécurité locale. [^ 4]

De plus, pour Windows, il semble préférable de définir le disque dur virtuel sur le lecteur D. [^ 5]

Accéder à Rstudio à partir d'un navigateur

Si vous entrez la commande ci-dessus et qu'il n'y a aucune erreur, RStudio a démarré avec succès. Veuillez vérifier sur http: // localhost: 8787. Comme je n'ai défini le mot de passe sur personne cette fois, je pense que le nom d'utilisateur et le mot de passe peuvent être connectés avec rstudio.

(Bonus) Utilisation de Docker-compose

Comme mentionné ci-dessus, vous pouvez également utiliser Docker-compose pour gérer Rstudio. Il est normal de laisser l'article ci-dessus tel quel, mais il est difficile d'écrire et de se souvenir d'un code long chaque fois que vous exécutez Docker '. De plus, à l'avenir, vous souhaiterez peut-être utiliser divers conteneurs autres que RStudio Server. Dans de tels cas, Docker-compose` est utile.

Créez docker-compose.yml

Créez un fichier appelé docker-compose.yml au même emplacement que Dockerfile et modifiez-le avec un éditeur. Travaillez sur Dropbox> docker comme ci-dessus. (Exemple: (Mac) C: \ Users \ user \ Dropbox \ docker, (Windows) D: \ Dropbox \ R \ docker)

Dans ce qui précède, pendant docker build et docker run

docker build -t geo:geospatial .
docker run -p 8787:8787 -v C:\Users\user\Dropbox\R\:/home/rstudio -d geo:geospatial

J'ai écrit, mais si vous définissez ceci sur docker-compose.yml, ce sera comme suit.

version: '3'

services:
  rstudio:
    build: .
    image: geo:geospatial
    container_name: geo
    ports:
      - 8787:8787
    volumes:
      - ../R:/home/rstudio
    tty: true
    stdin_open: true

N'oubliez pas de mettre un espace demi-largeur après chaque deux-points (: ) et tiret ( -). Par exemple, «version: '3» »a un« espace demi-largeur »entre« version: »et« »3». build: . etc. nécessitent également un espace demi-largeur avant la virgule (.). Suivez ceci comme règle de formatage.

De plus, cette fois, «volumes» est spécifié par un chemin relatif. Si vous souhaitez spécifier le dossier C: \ Users \ user \ Dropbox \ R comme répertoire de base de Rstudio, vous êtes maintenant dans le dossier C: \ Users \ user \ Dropbox \ docker, utilisez donc simplement .. Il remonte la hiérarchie (C: \ Users \ user \ Dropbox \) puis spécifie le répertoire / R.

En spécifiant un chemin relatif, le code est indépendant de l'environnement de la machine que vous utilisez. Vous pouvez maintenant gérer avec le même fichier docker-compose.yml sur Mac et Windows.

construire avec docker-compose up -d

Identique à Docker. Lancez Terminal (sur Mac). Pour Windows, utilisez TeraTerm ou Windows Terminal. Naviguez jusqu'à l'emplacement où se trouvent le Dockerfile et le docker-compose.yml.

#Pour moi (Mac)/Users/De l'utilisateur/Users/user/Dropbox/Aller au docker

cd Dropbox
cd docker

Après vous être déplacé vers l'emplacement où se trouvent Dockerfile et docker-compose.yml, tapez cette fois et exécutez docker-compose up -d au lieu de docker build et docker run. Seulement ça.

# /Users/user/Dropbox/docker

docker-compose up -d

Si vous obtenez une erreur, vérifiez d'abord si vous avez oublié d'insérer l'espace demi-largeur. S'il n'y a pas de problème, vous devriez pouvoir vous connecter à rstudio en toute sécurité à http: // localhost: 8787 comme dans le paramètre précédent.

[^ 1]: Dockerfile a été référencé ici: https://k-metrics.github.io/cabinet/env_install_svr.html [^ 2]: À propos de l'image en cours de création pour chaque RUN: https://datawokagaku.com/dockerfile_commands/

Recommended Posts

Évitez les caractères déformés et partagez le système de fichiers dans l'environnement Docker Rstudio (Docoker-compose également)
Construction de Rails 6 et environnement PostgreSQL avec Docker
Préparer un environnement de scraping avec Docker et Java
Peut-être que ça marche! Créez une image avec Docker et partagez-la!
Créez un environnement pour Rails5 et postgresql avec Docker afin que pgadmin puisse également être utilisé
Compression Zip qui ne brouille pas dans l'environnement Java