Hike News
Hike News

docker实战

本文将讲述如何使用docker制作tomcat镜像并上传至阿里云,部署redis和springboot项目。

制作tomcat镜像

通过dockerfile制作一个tomcat镜像并发布到阿里云镜像仓库。

1、在用户工作的主目录中创建一个build/tomcat文件夹

2、准备tomcat和jdk安装包上传到该文件夹下

3、在文件夹下创建一个README.txt文件并编写Dockerfile文件

touch README.txt

vim Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
FROM centos#本地基础镜像docker images查看是否有该镜像否则将失败
MAINTAINER zzh<xxxx@qq.com>
COPY README.txt /usr/local/
ADD /root/build/tomcat/apache-tomcat-8.5.94.tar.gz /usr/local/
ADD /root/build/tomcat/jdk-8u151-linux-x64.tar.gz /usr/local/

RUN yum -y install vim
RUN yum -y install net-tools

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools/jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.94
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.94
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-8.5.94/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.94/logs/catalina.out

4、构建diytomcat镜像

docker build -t diytomcat .

5、创建容器运行

docker run -d -p 3355:8080 --name mytomcat01 -v /root/build/tomcat/test:/usr/local/apache-tomcat-8.5.94/webapps/test -v /root/build/tomcat/logs:/usr/local/apache-tomcat-8.5.94/logs diytomcat

6、测试运行

在linux主机测试:curl localhost:3355或直接访问。

7、上传至阿里云镜像仓库

docker login --username=xxx registry.cn-shanghai.aliyuncs.com

#重命名镜像

docker tag 镜像 registry.cn-shanghai.aliyuncs.com/命名空间/仓库名:tag

docker push registry.cn-shanghai.aliyuncs.com/命名空间/仓库名:tag

Redis集群部署

1、创建网络

docker network create redis --subnet 172.17.0.0/16

2、通过脚本创建redis配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file node.conf
cluster-node-timeout 5000
cluster-announce-ip 172.17.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

docker run -p 637${port}:6379 -p 16371:16379 --name redis-${port} \
-v /mydata/redis/node-${port}/data:/data \
-v /mydata/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.17.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

docker run -p 6371:6379 -p 16371:16379 --name redis-1 \ -v /mydata/redis/node-1/data:/data \ -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.17.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf

3、查看redis容器,进入容器

docker ps

docker exec -it redis-1 /bin/sh

3、创建redis集群

redis-cli --cluster create 172.17.0.11:6379 172.17.0.12:6379 172.17.0.13:6379 172.17.0.14:6379 172.17.0.15:6379 172.17.0.16:6379 --cluster-relicas 1

4、查看集群

redis-cli -c

cluster info

cluster nodes

SpringBoot微服务打包docker镜像

1、将springboot项目打包为xxx.jar

2、编写Dockerfile文件

1
2
3
4
5
6
7
FROM java:8
MAINTAINER z<xx@qq.com>

COPY *.jar /app.jar
EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

3、构建镜像

docker build -t myApp .

4、发布镜像,下载镜像运行

docker push myApp

docker pull myApp

docker run -d -p 8080:8080 --name X-WEB-APP myApp

5、测试

curl localhost:8080

拓展

compose、swarm、Jenkins