如何使用Docker,安装java调试环境的docker
Docker的安装
查看系统的内核
1
2
3[roo@www ~]$ uname -r
3.10.0-1160.59.1.el7.x86_64

查看系统配置
1
cat /etc/os-release

卸载旧的版本
1
2
3
4
5
6
7
8
9[root@www ~]# yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

下载需要的安装包
1
yum install -y yum-utils

设置镜像的仓库
1
2
3
4
5
6
7
8
9yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo #国外的地址
# 设置阿里云的Docker镜像仓库
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #国内的地址

更新yum软件包索引
1
yum makecache fast

安装docker相关的配置
docker-ce 是社区版,docker-ee 企业版
1
yum install docker-ce docker-ce-cli containerd.io

出现了completed即安装成功
启动Docker
1
2
3
4
5systemctl start docker
查看当前版本号,是否启动成功
docker version
设置开机自启动
systemctl enable docker

hello-world
1
[root@www ~]# docker run hello-world

查看一下下载的这个hello-world镜像
1
2
3
4[root@www ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 6 months ago 13.3kB
构建自己的centos
在/home目录下创建一个dockerfile目录,到时候所有东西就放这儿
1
2
3
4
5
6
7
8
9[root@www /]# cd /home
[root@www home]# ls
ceshi docker-test-volume hziee mysql roo
[root@www home]# mkdir dockerfile
[root@www home]# ls
ceshi dockerfile docker-test-volume hziee mysql roo
[root@www home]# cd dockerfile/
[root@www dockerfile]#

创建一个名为mydockerfile-centos的文件,在里面编写DockerFile的指令
1
[root@www dockerfile]# vim mydockerfile-centos
编写dockerfile的配置文件
cat 指令表示查看mydockerfile-centos这个文件里面的内容,所以返回值就是配置文件的内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18[root@www dockerfile]# vim mydockerfile-centos
[root@www dockerfile]# cat mydockerfile-centos
FROM centos:7
MAINTAINER lcdzzz<1473220685@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash通过这个文件构建镜像
1
2
3↓↓↓运行这个命令↓↓↓,注意有 “.”
命令 docker build -f dockerfile文件路径 -t 镜像名:[tag]
docker build -f mydockerfile-centos -t mycentos:0.1 .

显示successfully代表成功
- 对比原生的centos

- 我们可以列出本地进行的变更历史 docker history 镜像id

Dockerfile制作tomcat镜像
- 准备镜像文件tomcat压缩包,jdk压缩包

编写dockerfile文件,官方命名
Dockerfile
,build会自动寻找这个文件,就不需要 -f 去指定了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24FROM centos:7
MAINTAINER lcdzzz<1473220685@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-10.0.1_linux-x64_bin.tar.gz /usr/local/
ADD apache-tomcat-9.0.62.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME=/usr/local/jdk-10.0.1
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.62
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.62
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.62/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.62/bin/logs/catalina.out
构建镜像,前面说了,build会自动寻找文件,所以不需要指定
1
2docker build -t diytomcat .
docker build -t diytomcat .显示successfully代表成功

运行镜像
1
docker run -d -p 9090:8080 --name lcdzzztomcat -v /home/lcdzzz/build/test:/usr/local/apache-tomcat-9.0.62/webapps/test -v /home/lcdzzz/build/tomcatlogs/:/usr/local/apache-tomcat-9.0.62/logs diytomcat

进入容器
1
docker exec -it 1d24f83eec24c5 /bin/bash
访问测试,在宿主机上测试,不是在容器里
1
curl localhost:9090
发布项目(由于做了卷挂载,我们直接在本地编写项目就可以发布了)
1
2
3
4
5
6
7
8
9
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>

1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |

项目部署成功,直接访问就ok
先通过
ifconfig
查看虚拟机的ip地址

访问

总结
- 通过dockerfile来构建Docker镜像

通过
docker build -t diytomcat .
命令生成镜像
然后运行,进入容器
由于做了卷挂载,我们直接在本地编写项目就可以发布了

意思是容器中的/usr/local/apache-tomcat-9.0.62/webapps/test下的文件会和宿主机(也就是虚拟机)的/home/lcdzzz/build/test的文件同步,对应的日志文件也同理
所以,如果要调试程序,在运行起容器以后,只需要在本地编写代码就可以发布项目了,如下图所示
日志的话会出现在主机下的 /home/lcdzzz/build/tomcatlogs下的catalina.out当中
