一.简介
通过docker简单部署一些应用,感受下docker部署的便捷性,包括OS、web、数据库和编程应用。
二.OS快速部署
1.busybox 被称为linux的瑞士军刀,包含常用运维命令
2.alpine 轻量级linux系统,使用其构建的镜像当然也会很轻量
构建一个jdk环境
#创建目录
mkdir -p /opt/dockerfile/jdk/
cd /opt/dockerfile/jdk/
#创建dockerfile
cat >dockerfile<<'EOF'
FROM alpine:latest
ENV JDK_VERSION 11
RUN apk add --no-cache openjdk$JDK_VERSION
RUN java -version
WORKDIR /app
CMD ["java", "-version"]
EOF
#构建镜像
docker build -t jdk:v11 .
#运行容器
docker run -itd --name my-jdk jdk:v11 sh
#进入容器
docker exec -it my-jdk sh
#版本查看
java -version
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
3.ubuntu 基于debian的linux发行版
4.centos
三.web服务快速部署
1.apache(httpd)
直接运行
dockerfile构建
#创建目录
mkdir -p /opt/dockerfile/apache
cd /opt/dockerfile/apache
#测试文件
echo "alibaby007" >>index.html
#创建dockerfile
cat >dockerfile<<'EOF'
FROM httpd:latest
COPY ./index.html /usr/local/apache2/htdocs
EOF
#构建镜像
docker build -t apache .
#运行容器
docker run -itd --name my-httpd -p 80:80 apache
#测试
curl 127.0.0.1
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
2.nginx
dockerfile构建
#创建目录
mkdir -p /opt/dockerfile/nginx
cd /opt/dockerfile/nginx
#测试文件
echo "alibaby007" >>index.html
#创建dockerfile
cat >dockerfile<<'EOF'
FROM nginx:latest
COPY ./index.html /usr/share/nginx/html/
EOF
#构建镜像
docker build -t nginx .
#运行容器
docker run -itd --name my-nginx -p 80:80 nginx
#测试
curl 127.0.0.1
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
3.tomcat
dockerfile构建
#创建目录
mkdir -p /opt/dockerfile/tomcat
cd /opt/dockerfile/tomcat
#测试文件
echo "alibaby007" >>index.html
#创建dockerfile
cat >dockerfile<<'EOF'
FROM tomcat:latest
RUN mkdir -p /usr/local/tomcat/webapps/ROOT
COPY ./index.html /usr/local/tomcat/webapps/ROOT
EOF
#构建镜像
docker build -t tomcat .
#运行容器
docker run -itd --name my-tomcat -p 80:8080 tomcat
#测试
curl 127.0.0.1
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
四.数据库
1.mysql
2.redis
3.mongodb
4.postgresql
5.oracle
#拉取镜像并打标签
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
docker tag registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g:latest oracle:11g
#运行容器
docker run -itd --name my-oracle \
-e ORACLE_USER=sys \
-e ORACLE_PWD=123456 \
-p 1521:1521 \
oracle:11g
#进入容器
docker exec -it my-oracle bash
#环境变量生效
source ~/.bash_profile
#登录测试
sqlplus / as sysdba
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
五.编程环境
1.jar包构建
#创建目录
mkdir -p /opt/dockerfile/jar/
cd /opt/dockerfile/jar/
#拷贝jar包到当前目录
cp youpath/my-app.jar .
#创建dockerfile,根据应用可改EXPOSE 8080
cat >dockerfile<<'EOF'
FROM openjdk:11
WORKDIR /app
COPY ./my-app.jar /app
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "my-app.jar"]
EOF
#构建镜像
docker build -t my-app .
#运行容器
docker run -itd --name my-running-app my-app
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
2.python
#创建目录
mkdir -p /opt/dockerfile/python/
cd /opt/dockerfile/python/
#拷贝jar包到当前目录
cp youpath/my-app.py .
#创建dockerfile,根据应用可改EXPOSE 8080
cat >dockerfile<<'EOF'
FROM python:3.7
WORKDIR /app
COPY ./my-app.py /app
RUN pip install --no-cache-dir -r requirements.txt
ENTRYPOINT ["python", "my-app.py"]
EOF
#构建镜像
docker build -t my-python-app .
#运行容器
docker run -it --rm --name my-running-python-app python-app
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.