docker的安装部署和dockerfile文件说明

本文深入解析Docker容器技术,涵盖其解决环境一致性问题、资源节省及项目迁移优势。详细介绍了Docker操作流程,包括Dockerfile命令如FROM、RUN、CMD等,以及Springboot项目Dockerfile实战。

1. docker 介绍

docker是现在最为流行的容器技术
1> 主要是为了屏蔽部署环境的不一致问题,使得linux环境更加的整洁,不会被jdk等环境污染linux操作系统环境,每一个docker容器都有自己的jdk环境
2> 节省资源,在以前的部署方式中,主要是在大的物理机下,虚拟多个linux虚拟机,在每一个虚拟机下部署tomcat或者springboot项目,但是使用docker,只需要在大的物理机下部署docker server基础环境就可以使用docker container的方式部署项目,同时每一个container环境都是隔离开的
3> 项目迁移较为方便,从一个私有的物理机迁移到云端,只需要在云端部署docker server,然后把私有的物理机上的docker images 迁移到云端的docker server中,并且部署container就可以完成迁移了,不需要考虑jdk等基础环境

2. docker的操作流程

2.1 docker server的安装,使用的CenOS 7.x
yum install -y docker
docker 的启动命名systemctl start docker
2.2 docker镜像的制作

docker的镜像制作需要使用dockerfile文件
docker build -t 镜像名称:版本号 .
说明
-t 设置镜像名称和版本号
. 为dockerfile的文件的地址

2.3 docker镜像运行成container

docker run -d --name user02 -p 8081:8080 test-docker-image:v1.0
说明

-d 为后台运行
--name 设置名称
-p 宿主机和container的端口映射,也就是说在container里边运行的springboot项目的端口号为8080但是你通过宿主机的ip访问container里边的springboot项目的时候应该访问 8081

3. dockerfile命令说明

3.1 FROM

指定基础镜像,比如FROM ubuntu:14.04
FROM ubuntu:14.04

3.2 RUN

在镜像内部执行一些命令,比如安装软件,配置环境等,换行可以使用""
RUN groupadd -r mysql && useradd -r -g mysql mysql

3.3 ENV

设置变量的值,ENV MYSQL_MAJOR 5.7,可以通过docker run --e key=value修改,后面可以直接使
用${MYSQL_MAJOR}
ENV MYSQL_MAJOR 5.7

3.4 LABEL

设置镜像标签

LABEL email="xxx@163.com" 
LABEL name="xxx"
3.5 VOLUME

指定数据的挂在目录
VOLUME /var/lib/mysql

3.6 COPY

将主机的文件复制到镜像内,如果目录不存在,会自动创建所需要的目录,注意只是复制,不会提取和
解压
COPY docker-entrypoint.sh /usr/local/bin/

3.7 ADD

将主机的文件复制到镜像内,和COPY类似,只是ADD会对压缩文件提取和解压
ADD application.yml /etc/xxx/

3.8 WORKDIR

指定镜像的工作目录,之后的命令都是基于此目录工作,若不存在则创建

WORKDIR /usr/local 
WORKDIR tomcat 
RUN touch test.txt

会在/usr/local/tomcat下创建test.txt文件

WORKDIR /root 
ADD app.yml test/

会在/root/test下多出一个app.yml文件

3.9 CMD

容器启动的时候默认会执行的命令,若有多个CMD命令,则最后一个生效

CMD ["mysqld"] 
或
CMD mysqld
3.10 ENTRYPOINT

和CMD的使用类似
ENTRYPOINT ["docker-entrypoint.sh"]
和CMD的不同
dockerrun执行时,会覆盖CMD的命令,而ENTRYPOINT不会

3.11 EXPOSE

指定镜像要暴露的端口,启动镜像时,可以使用-p将该端口映射给宿主机
EXPOSE 3306

3.12 使用mysql镜像说明

登录 github.com
搜索 docker-library/doc
寻找mysql ,根据mysql上的dockerfile文件对比理解
github上mysqldockerfile文件

4. Dockerfile实战Spring boot

(1)写一个controller

@RestController
public class DockerController { 
	@GetMapping("/dockerfile") 
	@ResponseBody 
	String dockerfile() { 
		return "hello docker" ;
	} 
} 
(2)mvn clean package打成一个jar包 在target下找到"dockerfile-demo-0.0.1-SNAPSHOT.jar" 
(3)在docker环境中新建一个目录"first-dockerfile" 
(4)上传"dockerfile-demo-0.0.1-SNAPSHOT.jar"到该目录下,并且在此目录创建Dockerfile 
(5)创建Dockerfile文件,编写内容 FROM openjdk:8 MAINTAINER xxx LABEL name="dockerfile-demo" version="1.0" author="xxx" COPY dockerfile-demo-0.0.1-SNAPSHOT.jar dockerfile-image.jar CMD ["java","-jar","dockerfile-image.jar"] 
(6)基于Dockerfile构建镜像 docker build -t test-docker-image . 
(7)基于image创建container docker run -d --name user01 -p 6666:8080 test-docker-image
(8)查看启动日志docker logs user01 
(9)宿主机上访问curl localhost:6666/dockerfile hello docker 
(10)还可以再次启动一个 docker run -d --name user02 -p 8081:8080 test-docker-image
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值