1、Docker架构及组件
Docker Deamon (Docker守护进程): 是一个运行在宿主机的后台进程,可通过Docker客户端与宿主机通信
Client(Docker客户端): docker的用户界面,它可以接收用户命令和配置标识,并与Docker deamon通信
Images(Docker镜像): 镜像只是一个只读模板,包含创建Docker容器的说明
Container(容器): 容器是镜像的运行实例
Registry: 是一个集中存储与分发镜像的服务,构建完Docker镜像后,就可在当前宿主机上运行
2、docker常用命令
// docker 镜像命令
docker search java // 搜索镜像
docker pull java // 下载镜像,从Docker Hub上下载Java镜像
docker pull reg.itmuch.com/java:7 // 从指定的Docker Registry中下载标签为7的Java镜像
docker images // 列出已下载的镜像
docker rim hello-world // 删除指定名称的镜像
// docker 容器命令
docker ps -a // 列出所有容器
docker rm -f eejiojw // 删除容器id为eejiojw
docker run // 新建并启动一个容器
-d // 后台运行
-p // 端口映射,4种映射格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
示例:docker run -d -p 80:80 nginx // 通过宿主机ip:80即可访问nginx
// docker 打包命令
docker build
-t 镜像的名字及标签 // 指定镜像名字及标签 通常 name:tag 或者 name 格式
-f /data/xxx //指定路径
3、使用Dockerfile构建Docker镜像
示例:
3.1 DockerFile常用指令
3.2 使用自定义jdk并打包服务
首先拉取centos镜像
docker pull centos
下载jdk
创建DockerFile文件
FROM centos
# 准备用来存放jar包
RUN mkdir -p /usr/local/release
RUN mkdir -p /usr/java/jdk1.8.0_291
ADD jdk1.8.0_291 /usr/java/jdk1.8.0_291
ENV JAVA_HOME=/usr/java/jdk1.8.0_291
ENV CLASS_PATH=.:JAVA_HOME/lib
ENV PATH=$PATH:$JAVA_HOME/bin
执行创建docker镜像命令
docker build -f /data/dockerFile/jdk/DockerFile -t jdk8:mine
看一看自己创建出来的镜像
使用自己的jdk镜像包打Java镜像包;创建DockerFile
# 基于哪个镜像
FROM jdk8:mine
ENV JAVA_OPTS="-Xmx256M -Xms256M -XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=256M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled -XX:ErrorFile=./hs_err_pid%p.log -Xloggc:./gc.log -XX:He
apDumpPath=./ -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC -XX:+PrintGCApplicationConcurrentTime"
# 复制文件到容器
ADD eureka-server.jar /usr/local/release
WORKDIR /usr/local/release
EXPOSE 2021
ENTRYPOINT java ${JAVA_OPTS} -jar eureka-server.jar
执行镜像打包命令
docker build -t springcloud:eureka-server .
部署镜像
docker run -d -p 8082:2021 springcloud:eureka-server
接下来访问 ip:8082 就可以看到eureka启动页面了
具体执行