ubunt docker 설치 r&rstudio 개발 환경 pull과 push

 doker의 기본적인 설명이다.  처음 부터 끝까지 간단하게 기록한다.    

이것대로 따라 하면,  나름대로 성과는 있을 것이다.   맨 처음 부터 Dockerfile을 많이 핸들링 하지 말고,   다른 사람들이 만들어 놓은 도커 이미지를 활용 하는 것도 하나의 방법이다. 


1. Docker 환경 설치 

# 리눅스 커널이 최소 3.1 이상이어야 함
$ uname -r
5.13.0-30-generic


# Docker 설치 
$ sudo apt update

# ubuntu curl 설치 
$ sudo apt-get install -y ca-certificates  curl software-properties-common  apt-transport-https  gnupg  lsb-release

# GPG 키 및 저장소 추가 
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# rpository 추가 
$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


# 도커 엔진 설치 
$ sudo apt update
$ sudo apt-get install docker-ce


# 도커 기본 명령어 
$ sudo docker version

$ sudo docker scan --accept-license --version


# Docker 위치 바꾸기 


# docker 위치 바꾸기 

$ mkdir /home/dockerImages/

$ cd home

$ ll


# docker.servide 파일을 수정 하여, 위치를 비꾸기 

vim /lib/systemd/system/docker.service


14번째 라인에서 

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=home/dockerImages/

$service docer stop

$service docker status

$service docker start

$service docker status



# 도커 url 관리 프로그램

$ sudo mkdir -p /var/portainer/data
$ docker run -d -p 9000:9000 --name=portainer --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v /var/portainer/data:/data portainer/portainer


# 디렉토리 용량 확인 

$ du -sh 



도커 URL 관리 프로그램 까지 설치 하면,   도커 엔진은 Ubuntu에서 실행이된다. 

도커 URL 프로그램을 관리 하려면,   localhost:9000 포트를 이용하면된다. 


2. Docker 운영 환경  

#  ubuntu 이미지 찾기 
 $ sudo docker search  ubuntu
 
# ubuntu 이미지 pull 하기  
$ sudo docker pull ubuntu
 

# docker 이미지 조회 하기 
$ sudo docker images


# docker 컨테이너  bash 실행  
$ docker run -it --rm ubuntu:latest bash


# docker Backgroud 실행 
$ sudo docker -d  --restart always ubunt 
   ※ 파라미터 -d는 Backgroud에서 실행 한다는 의미이다. 
   ※ 파라미터 --restart는 always  정책과 관련 된 옵션이다.  
 

  ※ Doker 컨테이너는 문제가 생기니, 반드시 DockerFile로 설치하여야 한다. 


# docker 컨테이너 상태 확인 하기 

$ sudo docker -ps a 


  ※  id : 컨테이너 아이디

  ※ name : 컨테이너 이름

  ※ lable : 컨테이너 레이블

  ※ exited : 컨테이너가 종료 되었을 때 반환하는 숫자 코드

  ※ status : 컨테이너의 작동 상태

  ※ ancestor : 컨테이너가 사용하는 이미지 



# 추가경로를 설정해 정상적으로 컨테이너 시작 하기 

# rstudio 이미지를  받았다고 가정 하였을 경우  

$ sudo docker run -d -p  8800:8787  rsutdio  


  ※ 여기에서  -p는 외부에서 호스토로 보낼 요청을 컨테이너 내부로 전달하는 옵션

  - p <요청받을 호스트 포트>:< 연결할 컨테이너 포트>


나중에 localhost로 실행 하였을 경우 아래와 같이 실행 하여야 한다. 

 localhost:8800


# docker port range 정하기

# 한개의 이미지에서 여러개의  사용자로 나누어,  컨테이너를 올릴때 

docker run -p 7000-8000:7000-8000



# docker 볼륨 관리 하기 

# Dockerfile 예시 

$ sudo vi Dockerfile 

FROM ubuntu:latest

VOLUME ["/volume/path"]



3. Docker Push 하기 

# docker 컨테이너 이미지 만들기 지금까지 작업한 컨테이너를 그대로 저장하고 싶을 때
$ sudo docker commit CONTAINER_NAME IMAGE_NAME:TAG
$ sudo docker commit ubuntu testid/ubuntu:0.1
 
# Docker 이미지 확인 
$ sudo docker images


[ Docker container 현 상태를 images 로 만들기 ]
docker commit -m [image 설명] -a [ 사용자 mail ] [ container Name or ID ] [ 생성할 image name : Tag ]
예) docker commit -m "ip address change" -a "peksoon@naver.com" bb29fe475fb5 peksoon_tomcat:1.0.2


[ Docker images 에 tag 작업 ]
docker tag [ image name or Tag ] [ docker hub ID 혹은 private registry ip:port ] / [ push image이름 ]
예) docker tag 51821aad3f0f peksoon/iksoon_tomcat:1.0.2

[ Docker 허브에 올릴수 있도록 로그인 ]
docker login

[ Docker hub 에 이미지 올리기 ]
docker push [ 생성했던 tag]
예) docker push peksoon/iksoon_tomcat:1.0.2


4.  Docker 활용 하기  


#Dockerfile   예시 Skip

FROM rocker/rstudio

RUN apt-get update \

  && apt-get install -y --no-install-recommends \

  default-jre  \

  default-jdk


RUN install2.r --error \

  --deps TRUE \

  rJava 

VOLUME ["/home/dokerimage"]


#  docker pull 파일 

$docker pull rocker/rstudio


# docker file 만들기 

$ vi Dockerfile 


#Dockerfile 

FROM rocker/rstudio

MAINTAINER  yonggyu.kim <rdmkyg.gmail.com>  



RUN apt-get clean all && \

  apt-get update && \

  apt-get upgrade -y && \

  apt-get install -y \

          libcurl4-openssl-dev \

          libxml2-dev \

          unixodbc-dev \

          cmake \

          libssl-dev  \

          libsasl2-dev \

          libmariadb-dev \

          default-jre \

          default-jdk \

          openssh-server \

          tzdata \ 

          libxt6 \

          language-pack-ko \

          locales \

#          vim \

#         sudo \

          apt-utils\

          && apt-get clean all && \

          apt-get purge && \

          rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*


# RUN usermod -aG sudo rstudio


#RUN rm /usr/local/lib/R/etc/Rprofile.site 


#RUN echo '\n\

# \n # R Profile site setting  \

# \n Sys.setlocale(category = "LC_ALL",locale="ko_KR.UTF-8") \

# \n options(repos = "https://cran.rstudio.com") \

# \n setHook(packageEvent("grDevice","onLoad"),function(...)grDevices::pdf.options(family = "korea1")) \

# \n setHook(packageEvent("grDevice','onLoad"),function(...)grDevices::ps.options(family = "korea1")) \

# \n'  >> /usr/local/lib/R/etc/Rprofile.site 



RUN locale-gen ko_KR.UTF-8

ENV LC_ALL ko_KR.UTF-8


ARG DEBIAN_FRONTEND=noninteractive

ENV TZ=Asia/Seoul


RUN mkdir /var/run/sshd

RUN echo 'root:screencast' | chpasswd

RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config



# SSH login fix. Otherwise user is kicked off after login

RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd


ENV NOTVISIBLE "in users profile"

RUN echo "export VISIBLE=now" >> /etc/profile


EXPOSE 22


CMD ["sh", "-c", "/usr/sbin/sshd ; /init"]


# 도커화일 빌드 하기 

docker build --tag rdmkyg/rstudio .


# root 계정으로 컨테이너 만들기 (주의 할것) docker run -d -p 8787:8787 -e USER=rstudio -e PASSWORD=rstudio \ -e ROOT=TRUE -e PERUSER=FALSE -v $(pwd):/home/rstudio rdmkyg/rstudio


# 아래와 같이 연결 하면 성공

docker run -d -p 2201:22 -p 8787:8787 -e PASSWORD=passwd --name my-rstudio-ssh rdmkyg/rstudio



# rstudio에서 아래와 같이 패키지 설치

install.packages('devtools') install.packages("rJava") install.packages(c('ggplot2','dplyr','tidyr','readr','purrr','tibble','lubridate', 'stringr','forcats','broom','cli','crayon','dbplyr','haven', 'hms','httr','jsonlite','magrittr', 'modelr','pillar','readxl', 'reprex','rlang','revest','xml2','rio','DBI','odbc','mongolite',',RJDBC','curl','data.table','survival','forecast','survminer', 'muhaz','TTR','caret','lattice','e1071','kernlab','shiny','mailR',"trelliscopejs",

"showtext"))


devtools::install_github("r-dbi/RMariaDB") library(devtools) library(rJava)

library(devtools) library(rJava) # package 확인 pkgs <-c('ggplot2','dplyr','tidyr','readr','purrr','tibble','lubridate', 'stringr','forcats','broom','cli','crayon','dbplyr','haven', 'hms','httr','jsonlite','magrittr', 'modelr','pillar','readxl', 'reprex','rlang','rvest','xml2', 'rio','DBI','odbc','mongolite',',RJDBC','RMariaDB','curl','data.table','survival','forecast','survminer', 'muhaz','TTR','caret','lattice','e1071','kernlab','shiny','mailR',"trelliscopejs" ) sapply(pkgs, require, character.only = T) library("RJDBC")


# KOLNP 설치
remotes::install_github("mrchypark/multilinguer") multilinguer::install_jdk() install.packages("KoNLP", repos = c("https://forkonlp.r-universe.dev", "https://cloud.r-project.org"), INSTALL_opts = c("--no-multiarch") )




# Docker 로컬 이미지 만들기 sudo docker commit my-rstudio-ssh rdmkyg/rstudio.ssh


# docker 로그인 하기

$ docker login


# Docker tag 만들기 $docker tag f4de856462da rdmkyg/rstudio.ssh # Docker push 하기 $docker push rdmkyg/rstudio.ssh


#  Docker 최종 실행 하기 

docker run -d -p 2201:22  -p 8787:8787  -e PASSWORD=passwd --name my-rstudio-ssh rdmkyg/rstudio.ssh



5.  트러블 슈팅 


# 나중에 한글 깨짐이 발생 할수 있음 아래와 같이 해결 하여야 함.  조금 특이함


library(ggplot2)

library(showtext)

showtext_auto()



#windows() # if your local os is Windows 

# x11() # if your local os is Macos 

set.seed(123) 

hist(rnorm(1000), breaks = 30, col = "steelblue", border = "white", main = "", xlab = "", ylab = "") 

title("히스토그램", , cex.main = 2) 

text(2, 70, "N = 1000", , cex = 2.5)



# KONLP 설치 


remotes::install_github("mrchypark/multilinguer")

multilinguer::install_jdk()


install.packages("KoNLP", 

                 repos = c("https://forkonlp.r-universe.dev",

                           "https://cloud.r-project.org"),

                 INSTALL_opts = c("--no-multiarch")

)


library(KoNLP)



#  그래프에서 한글이 나오지 않을때 아래와 같은 조치를 취한다. 
usethis::edit_r_profile()
library("showtext")
showtext_auto()




# RMariadb 가 설치 되지 않을 때

devtools::install_github("r-dbi/RMariaDB")




댓글 없음:

댓글 쓰기

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...