1.初识 Docker
1.1.什么是 Docker
1.1.1.应用部署的环境问题
1.1.2.Docker 解决依赖兼容问题
1.1.3.Docker 解决操作系统环境差异
1.1.4.小结
1.2.Docker 和虚拟机的区别
1.3.Docker 架构
1.3.1.镜像和容器

1.3.2.DockerHub
1.3.3.Docker 架构
1.3.4.小结
1.4.安装 Docker
1)卸载(可选)
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce
 
2)安装 docker
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
 
 
# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
 
 
yum install -y docker-ce
 
 
3)启动 docker
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
 
 
systemctl start docker  # 启动docker服务
systemctl stop docker  # 停止docker服务
systemctl restart docker  # 重启docker服务
 
然后输入命令,可以查看 docker 版本:
docker -v
 
4)配置镜像加速
2.Docker 的基本操作
2.1.镜像操作
2.1.1.镜像名称
2.1.2.镜像命令
2.1.3.案例1-拉取、查看镜像
2.1.4.案例2-保存、导入镜像
docker save --help
 
 
docker save -o [保存的目标文件名称] [镜像名称]
 
 
 
docker save -o nginx.tar nginx:latest
 
 
 
 
docker rmi nginx:latest
 
 
docker load -i nginx.tar
 
 
2.2.容器操作
2.2.1.容器相关命令
2.2.2.案例-创建并运行一个容器
docker run --name containerName -p 80:80 -d nginx
 
 
 
 
 
 
 
2.2.3.案例-进入容器,修改文件
docker exec -it mn bash
 
 
 
 
 
 
 
cd /usr/share/nginx/html
 
 
 
 
sed -i -e 's#Welcome to nginx#传智教育欢迎您#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html
 
 
2.2.4.小结
2.3.数据卷(容器数据管理)
2.3.1.什么是数据卷
2.3.2.数据集操作命令
docker volume [COMMAND]
 
 
2.3.3.创建和查看数据卷
docker volume create html
 
 
docker volume ls
 
 
 
docker volume inspect html
 
 
 
2.3.4.挂载数据卷
docker run \
  --name mn \
  -v html:/root/html \
  -p 8080:80
  nginx \
 
 
2.3.5.案例-给 nginx 挂载数据卷
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
 
 
# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html
 
2.3.6.案例-给 MySQL 挂载本地目录
docker  run \
	--name mysql\
	-e MYSOL_ROOT_PASSWORD=123 \
	-p 3306:3306 \
	-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
	-v /tmp/mysql/data:/var/1ib/mysql \
	-d \
	mysql:5.7.25
 
2.3.7.小结
3.Dockerfile 自定义镜像
3.1.镜像结构
3.2.Dockerfile 语法
3.3.构建Java项目
3.3.1.基于 Ubuntu 构建 Java 项目
# 指定基础镜像
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
 
 
 
docker build -t javaweb:1.0 .
 
 
3.3.2.基于 java8 构建 Java 项目
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar
 
3.4.小结
4.Docker-Compose
4.1.初识DockerCompose
version: "3.8"
 services:
  mysql:
    image: mysql:5.7.25
    environment:
     MYSQL_ROOT_PASSWORD: 123 
    volumes:
     - "/tmp/mysql/data:/var/lib/mysql"
     - "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
  web:
    build: .
    ports:
     - "8090:8090"
 
 
 
 
4.2.安装 DockerCompose
4.3.部署微服务集群
4.3.1. compose文件
version: "3.2"
services:
  nacos:
    image: nacos/nacos-server
    environment:
      MODE: standalone
    ports:
      - "8848:8848"
  mysql:
    image: mysql:5.7.25
    environment:
      MYSQL_ROOT_PASSWORD: 123
    volumes:
      - "$PWD/mysql/data:/var/lib/mysql"
      - "$PWD/mysql/conf:/etc/mysql/conf.d/"
  userservice:
    build: ./user-service
  orderservice:
    build: ./order-service
  gateway:
    build: ./gateway
    ports:
      - "10010:10010"
 
 
 
 
 
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar
 
4.3.2.修改微服务配置
spring:
  datasource:
    url: jdbc:mysql://mysql:3306/cloud_order?useSSL=false
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
  application:
    name: orderservice
  cloud:
    nacos:
      server-addr: nacos:8848 # nacos服务地址
 
4.3.3.打包
<build>
  <!-- 服务打包的最终名称 -->
  <finalName>app</finalName>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>
 
 
4.3.4.拷贝jar包到部署目录
4.3.5.部署
docker-compose up -d
 
5.Docker镜像仓库
5.1.搭建私有镜像仓库
5.2.推送、拉取镜像
docker tag nginx:latest 192.168.150.101:8080/nginx:1.0 
 
 
docker push 192.168.150.101:8080/nginx:1.0 
 
 
docker pull 192.168.150.101:8080/nginx:1.0 










