1.为什么使用docker

Docker为了解决依赖的兼容问题的 1.将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包 2.将每个应用放到一个隔离容器去运行,避免互相干扰

2.Docker如何解决不同系统环境的问题?

1.Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包
2.Docker运行到不同操作系统时,直接基于打包的函数库,借助于操作系统的Linux内核来运行

3.Docker的基本命令

1).镜像操作命令:

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创建容器并运行