Docker
Docker 설치
# Install Docker CE
## Set up the repository
### Install required packages.
yum -y install yum-utils device-mapper-persistent-data lvm2
### Add docker repository.
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
## Install docker ce.
yum -y update && yum -y install containerd.io-1.2.10 docker-ce-19.03.4 docker-ce-cli-19.03.4
## Create /etc/docker directory.
mkdir /etc/docker
# Setup daemon.
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
# Restart docker.
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
Docker 실행
dockerhub에서 centos 이미지를 가져온다.
https://hub.docker.com/_/centos
$ docker pull centos:7.7.1908
7.7.1908: Pulling from library/centos f34b00c7da20: Pull complete Digest: sha256:50752af5182c6cd5518e3e91d48f7ff0cba93d5d760a67ac140e2d63c4dd9efc Status: Downloaded newer image for centos:7.7.1908 docker.io/library/centos:7.7.1908 |
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE centos 7.7.1908 08d05d1d5859 4 months ago 204MB |
$ docker run -it centos:7.7.1908 /bin/bash
[root@eb70a6c63fc1 /]# 자바 RPM 패키지 다운로드 [root@eb70a6c63fc1 /]# yum install java --downloadonly --downloaddir=/opt |
다른 터미널로 접속
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES eb70a6c63fc1 centos:7.7.1908 "/bin/bash" 9 minutes ago Up 9 minutes goofy_hellman |
도커 컨테이너 내에서 다운받은 파일을 호스트로 copy
$ docker cp eb70a6c63fc1:/java.tar.gz ./java.tar.gzdocker cp eb70a6c63fc1:/root/java.tar.gz ./java.tar.gz
$ ls -al
-rw-r--r--. 1 root root 50382816 Mar 21 22:12 java.tar.gz |
Docker Build
$ vi Dockerfile (java 설치를 위한 rpm 파일들은 아까 docker cp명령으로 다운받은 파일들이다.)
FROM centos:7.7.1908 COPY ./java/* /opt/ RUN yum install -y /opt/*.rpm |
$ docker build -t java:1.8.0 . (Dockerfile 과 java 폴더가 있는 위치에서 수행)
Sending build context to Docker daemon 101.7MB Loaded plugins: fastestmirror, ovl ...........<중략>........... Complete! |
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE java 1.8.0 fced155d850e 6 seconds ago 472MB centos 7.7.1908 08d05d1d5859 4 months ago 204MB |
$ docker run -it --rm java:1.8.0 /bin/bash
[root@171c5bd5d7a5 /]# java -version openjdk version "1.8.0_242" OpenJDK Runtime Environment (build 1.8.0_242-b08) OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode) |
톰캣 Docker 빌드하기
톰캣 설치파일 다운로드
$ wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.27/bin/apache-tomcat-8.5.27.tar.gz
tomcat_profile 은 현재환경에 맞게 수정한다.
$ vi tomcat_profile
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre JRE_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-0.el7_7.x86_64/jre CATALINA_HOME=/usr/local/apache-tomcat-8.5.27 CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin export JAVA_HOME CLASSPATH PATH CATALINA_HOME JRE_HOME |
$ vi Dockerfile (아까 java가 설치된 이미지에 톰캣만 추가 설치한다.)
FROM java:1.8.0 COPY apache-tomcat-8.5.27.tar.gz /usr/local/ COPY tomcat_profile /etc/tomcat_profile RUN cd /usr/local \ && tar -zxf ./apache-tomcat-8.5.27.tar.gz \ && source /etc/tomcat_profile EXPOSE 8080 CMD ["/usr/local/apache-tomcat-8.5.27/bin/catalina.sh", "run"] |
$ docker run -it --rm tomcat:1.0
---------------- 중략 -------------- 21-Mar-2020 21:07:52.790 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/apache-tomcat-8.5.27/webapps/manager] has finished in [31] ms |
다른 터미널로 접속
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f603c5f79d38 tomcat:1.0 "/usr/local/apache-t…" 14 minutes ago Up 14 minutes 8080/tcp wonderful_spence |
$ docker inspect f603c5f79d38
------------------- 중략 --------------------- "NetworkSettings": { |
$ curl http://172.17.0.2:8080/
톰캣 Helm 배포하기
$ helm install ./custom-tomcat --dry-run
NAME: khaki-lizard |
$ helm install ./custom-tomcat --namespace devtest --name custom-tomcat
NAME: custom-tomcat RESOURCES: ==> v1beta1/Deployment ==> v1beta1/Ingress ==> v1/NetworkPolicy ==> v1/Pod(related) |
$ kubectl get pod -n devtest
custom-tomcat-custom-tomcat-b6989b5d8-sn5bv 1/1 Running 0 16s |
$ kubectl get ingress -n devtest
custom-tomcat-custom-tomcat custom-tomcat.devpaas.cloud.samsungds.net 80 32s |
웹브라우저로 접속
$ helm delete custom-tomcat --purge
release "custom-tomcat" deleted |
$ kubectl get pod -n devtest
custom-tomcat-custom-tomcat-b6989b5d8-sn5bv 0/1 Terminating 0 8m46s |
'Kubernetes' 카테고리의 다른 글
Kubernetes Worker Node Join (0) | 2020.12.05 |
---|---|
Kubeflow 1.0 (2) | 2020.04.12 |
KF Serving (1) | 2020.03.13 |
Knative Serving (0) | 2020.03.09 |
Istio Networking (0) | 2020.03.09 |