>  기사  >  Java  >  Docker를 사용하여 Java 웹 실행 환경을 구축하는 방법

Docker를 사용하여 Java 웹 실행 환경을 구축하는 방법

WBOY
WBOY앞으로
2023-05-01 11:13:141082검색

docker는 무엇을 하나요?

docker는 Linux 컨테이너(lxc-linux 컨테이너) 기반의 고급 컨테이너 엔진으로, go 언어를 기반으로 개발되었습니다.

소스 코드는 github에서 호스팅되며 오픈 소스입니다. apache2.0 프로토콜을 준수합니다. docker의 목표는 경량 운영 체제 가상화 솔루션을 구현하는 것입니다.

Docker를 배우려면 먼저 몇 가지 개념을 이해해야 합니다.

이미지 - Docker의 이미지는 일반적인 시스템 ISO 이미지와 유사하며 애플리케이션 정보를 포함합니다.

컨테이너 - 컨테이너는 다음과 같은 가상 머신과 동일합니다. 실행합니다. 애플리케이션은 컨테이너에서 실행되고, docker는 "docker"에서 실행됩니다.

Warehouse - 웨어하우스는 git과 유사한 버전 관리 기능을 갖고 있으며 공용 웨어하우스(

docker는 대부분의 Linux 배포판을 지원합니다. docker 컨테이너를 사용하면 하드웨어 구성, 운영 환경, 등 마이그레이션이 매우 쉬워집니다.

> Docker와 기존 가상화 기술의 비교


기존 가상 머신 기술에 비해 Docker는 리소스를 적게 차지하고 시작 속도가 빨라 프로젝트 배포와 운영 및 유지 관리가 크게 용이합니다.


Docker는 운영 체제 수준에서 가상화를 구현하고 로컬 호스트의 운영 체제를 재사용합니다. 전통적인 방법은 하드웨어를 기반으로 여러 운영 체제를 가상화한 다음 관련 애플리케이션을 시스템에 배포하는 것입니다.

다음 사진은 docker와 vm 등 기존 가상화 기술의 차이점을 생생하게 보여주는 해당 블로그 게시물을 참조한 것입니다.

vs

如何使用Docker搭建Java Web运行环境如何使用Docker搭建Java Web运行环境

>Building a docker Environment


Ubuntu 14.04를 사용하고 있습니다. , 그것에 도커 서비스를 설치하십시오.

빠른 도커 설치


버전 14.04의 우분투 저장소는 이미 도커 설치를 지원합니다.

빠른 설치 방법을 사용할 수 있습니다.

sudo apt-get update
sudo apt-get install docker.io

서비스 및 데몬 시작

service docker.io status
service docker.io start

이 설치 방법은 일반적으로 최신 버전의 docker 버전,


최신 버전을 설치하고 싶다면 docker 공식 홈페이지에 접속하여 다운로드하여 설치할 수 있습니다.

>첫 번째 도커 이미지 만들기


도커 이미지를 만드는 일반적인 과정은 먼저 컨테이너를 생성하고, 컨테이너 안의 이미지를 수정하고, 관련 환경을 구성하는 등의 과정을 거쳐 마지막으로 수정 사항을 새로운 이미지.

(1) 이미지 파일 다운로드


이미지 제작에 사용된 시스템을 다운로드하세요.

sudo docker pull index.alauda.cn/alauda/ubuntu

여기서는 Lingqueyun 이미지 센터에서 가져왔습니다. 如何使用Docker搭建Java Web运行环境
또는 docker 이미지 센터에서 직접 가져올 수도 있지만 속도가 매우 느린 것 같습니다.

sudo docker pull ubuntu

다운로드가 성공한 후 이미지 명령을 사용하여 로컬 이미지 목록을 확인하세요.

docker images

여기를 참고하세요. docker를 사용할 때 sudo를 추가하세요.

如何使用Docker搭建Java Web运行环境docker가 기본으로 설치된 후에는 docker를 실행할 때마다 sudo 명령을 실행해야 합니다. sudo를 따르지 않는 경우 docker 명령을 직접 실행하면 일부 권한 오류가 보고됩니다.

(2) 컨테이너 시작 및 이미지 수정


이미지를 로컬에 다운로드한 후 docker를 사용하여 실행할 수 있습니다.


다음 명령 매개변수를 통해 컨테이너를 시작하고,

docker run 6ce85509af548ae7565c86e0d1723e4b 335b92dc1f7ed5311b37dee8a62e485f757e43f1c800ac94f912c180712bd1f1

-i: 컨테이너가 "대화형 모드"로 실행됨을 나타냅니다.


-t: 컨테이너가 시작된 후 명령줄에 진입함을 나타냅니다. v: 마운트해야 할 로컬 디렉토리를 나타냅니다. 컨테이너에 로드합니다.


형식: -v 370d5e17470aac81463269c6270cd9bc:51bc6f14c424a1190aa8d5a2c6b9c6d2

내 관련 프로그램은 모두 /data/software/ 디렉토리에 있습니다. 현재 머신을 마운트하고 싶습니다. 컨테이너의 동일한 디렉토리에 로드합니다:

sudo docker run -i -t -v /data/software/:/data/software/ ae983d5e88ce /bin/bash

"이미지 ID", "웨어하우스 이름: 태그 이름"을 사용할 수도 있습니다. 예: index.alauda.cn/alauda/ 우분투:최신.

위 명령은 지정된 이미지를 사용하여 셸을 실행할 수 있습니다. 터미널을 종료하려면 종료 명령을 사용하거나 ctrl -p + ctrl -q를 순서대로 눌러 호스트 시스템으로 전환할 수 있습니다. 그러나 이런 방식으로 컨테이너는 내일 모레에도 계속 실행됩니다.

터미널을 시작한 후 /data/software/ 디렉터리에 들어가면 현재 컴퓨터 디렉터리의 파일이 동기화된 것을 확인할 수 있습니다.

(3) jdk 및 tomcat 등을 설치합니다.

如何使用Docker搭建Java Web运行环境

설치 관련 jdk 및 기타 프로그램은 여기에 모두 /data/ 디렉토리에 설치하십시오:

tar -zxvf jdk-7u25-linux-x64.tar.gz -c /data/
mv jdk1.7.0_25 jdk

unzip apache-tomcat-7.0.54.zip -d /data/
mv apache-tomcat-7.0.54 tomcat

환경 변수 구성
vi /etc/profile

다음 구성 추가:

#set java environment  
export java_home=/data/jdk  
export jre_home=${java_home}/jre  
export classpath=.:javahome/lib:javahome/lib:{jre_home}/lib  
export path=javahome/bin:javahome/bin:path 

export catalina_home=/data/tomcat 
export catalina_base=/data/tomcat

저장하고 종료하면 설정이 즉시 적용됩니다:

source /etc/ profile

(4) 시작 스크립트 작성

启动tomcat时必须通过tomcathome/bin/catalina.sh实现,不能使用tomcathome/bin/catalina.sh实现,不能使用tomcat_home/bin/startup.sh启动,否则脚本执行后容器会马上退出。

vi /data/start.sh

添加以下内容:

#!/bin/bash
# export environment variable
source /etc/profile
# start tomcat
bash /data/tomcat/bin/catalina.sh run

添加可执行权限:chmod u+x /data/start.sh

(5)构建镜像

使用docker构建镜像的两种方法:

使用docker commit 命令,更直观一些;

使用docker build命令和dockerfile文件,可以模板化镜像构建过程;

这里使用docker commit的方式创建镜像。

查看容器列表:

sudo docker ps -a
container id image command created status ports names
39b2cf60a4c1 ae983d5e88ce:latest "/bin/bash" 5 hours ago exited (0) 9 seconds ago dreamy_euclid

提交一个新的镜像:

sudo docker commit 39b2cf60a4c1 bingyue/docdemo

如果有docker账号,可以将镜像推送到docker hub或资金的私有registry中。

现在查看本地的docker镜像,

sudo docker images

如何使用Docker搭建Java Web运行环境

可以看到本地仓库已经有刚刚创建的docker镜像。

repository tag image id created virtual size
bingyue/docdemo latest bfc7ed316d42 about a minute ago 528.2 mb
index.alauda.cn/alauda/ubuntu latest ae983d5e88ce 10 months ago 255.1 mb

docker inspect可以查看新创建的镜像的详细信息:

sudo docker inspect bingyue/docdemo如何使用Docker搭建Java Web运行环境

(6)运行新创建的镜像

docker run -d -p 18080:8080 --name docdemo bingyue/docdemo /data/start.sh

-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 18080 端口,

这样就向外界暴露了 18080 端口,可通过 docker 网桥来访问容器内部的 8080 端口了。

查看后台是否启动成功:

docker ps

测试访问:如何使用Docker搭建Java Web运行环境

(7)提交至docker仓库

如果有docker仓库的账户,可以将本地创建的镜像提交至仓库。

 >使用体验

到这一步,差不多完成了docker的初体验,docker应用还是比较简单的,真正复杂的应该是背后的虚拟化技术。

一步一步部署下来,的确docker相比传统的虚拟机技术要简单了很多,有机会继续深入学习。

附:添加docker用户组,避免sudo输入

默认安装完 docker 后,每次执行 docker 都需要运行 sudo 命令,影响效率。如果不跟 sudo,直接执行 docker images 命令会有如下问题:
get http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock: permission denied. are you trying to connect to a tls-enabled daemon without tls?

把当前用户执行权限添加到相应的docker用户组里面就可以解决这个问题。

添加一个新的docker用户组

sudo groupadd docker

# 添加当前用户到docker用户组里

sudo gpasswd -a bingyue docker

# 重启docker后台监护进程

sudo service docker restart

# 重启之后,尝试一下,是否生效

docker version

#若还未生效,则系统重启,则生效

sudo reboot

docker常用命令

# 下载一个ubuntu镜像

sudo docker pull ubuntu

# 使用ubuntu运行一个交互性的shell

sudo docker run -i -t ubuntu /bin/bash

#docker ps命令

sudo docker ps #列出当前所有正在运行的container
sudo docker ps -l #列出最近一次启动的,且正在运行的container
sudo docker ps -a #列出所有的container

#port命令

docker run -p 80:8080 <image> <cmd> #映射容器的8080端口到宿主机的80端口

#删除容器命令

sudo docker rm `sudo docker ps -a -q`#删除所有容器
sudo docker rm $container_id#删除容器id为container_id的容器

#其他命令快速参考:

sudo docker images #查看本地镜像
sudo docker attach $container_id #启动一个已存在的docker实例
sudo docker stop $container_id #停止docker实例
sudo docker logs $container_id #查看docker实例运行日志,确保正常运行
sudo docker inspect $container_id #查看container的实例属性,比如ip等等

위 내용은 Docker를 사용하여 Java 웹 실행 환경을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제