1.为什么使用docker
Docker为了解决依赖的兼容问题的 1.将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包 2.将每个应用放到一个隔离容器去运行,避免互相干扰
2.Docker如何解决不同系统环境的问题?
1.Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
2.Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行
3.Docker的基本命令
1).镜像操作命令:
1.拉取镜像
docker pull 镜像名称
2.查看拉取到的镜像
docker images
3.删除镜像
docker rmi
4.推送镜像到镜像中心
docker push
5.将镜像保存成压缩包
docker shell
6.加载镜像
docker load
2).容器操作命令:
1.创建并运行一个容器,处于运行状态
docker run
2.停止一个运行的容器
docker stop
3.让一个停止的容器再次运行
docker start
4.删除一个容器
docker rm
5.创建并运行nginx容器的命令
docker run --name containerName -p 80:80 -d nginx
- docker run :创建并运行一个容器
- --name : 给容器起一个名字,比如叫做mn
- -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
- -d:后台运行容器
- nginx:镜像名称,例如nginx
6.进入xxx容器
docker exec -it xxx bash
3).数据卷操作命令
1.创建xxx数据卷
docker volume create xxx
2.查看所有数据卷
docker volume ls
3.查看数据卷详细信息,包括关联的宿主机目录位置
docker volume inspect html
4.删除指定数据卷
docker volume rm
5.删除所有未使用的数据卷
docker volume prune
注:只有创建容器的时才能挂载数据卷
6.挂载数据卷
docker run -d --name mn -v html:/root/html -p 8080:80 nginx
-v html:/root/html :把html数据卷挂载到容器内的/root/html这个目录中
4).Docker自定义镜像
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
步骤5:进入docker-demo
步骤6:运行命令:
docker build -t javaweb:1.0 .
2) 基于java8构建java项目
- ① 新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile
- ② 拷贝课前资料提供的docker-demo.jar到这个目录中
③ 编写Dockerfile文件:
- a )基于java:8-alpine作为基础镜像
- b )将app.jar拷贝到镜像中
- c )暴露端口
- d )编写入口ENTRYPOINT内容如下:
FROM java:8-alpine COPY ./app.jar /tmp/app.jar EXPOSE 8090 ENTRYPOINT java -jar /tmp/app.jar
④ 使用docker build命令构建镜像
- ⑤ 使用docker run创建容器并运行