微服务2 Docker学习 P42-P60

Docker学习视频icon-default.png?t=N7T8https://www.bilibili.com/video/BV1LQ4y127n4?p=42&vd_source=8665d6da33d4e2277ca40f03210fe53a

文档资料:

链接:https://pan.baidu.com/s/1P_Ag1BYiPaF52EI19A0YRw?pwd=d03r 
提取码:d03r

Docker 其他笔记

服务器容器化-docker(全)_深林中的书海的博客-CSDN博客

    

一 初始Docker

(一)  什么是Docker

微服务2 Docker学习 P42-P60_第1张图片

(二) 解决兼容问题

微服务2 Docker学习 P42-P60_第2张图片

微服务2 Docker学习 P42-P60_第3张图片

微服务2 Docker学习 P42-P60_第4张图片(三) Docker和虚拟机的差异

微服务2 Docker学习 P42-P60_第5张图片

(四) Docker架构

  • 可以理解为: 镜像就是安装包  容器就是程序  注意:一个镜像可以打包多个容器

微服务2 Docker学习 P42-P60_第6张图片

微服务2 Docker学习 P42-P60_第7张图片

微服务2 Docker学习 P42-P60_第8张图片

二 Docker 安装

(一) 安装Docker和启动 (方法一)

微服务2 Docker学习 P42-P60_第9张图片

1.1 卸载

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

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
1.2 安装

首先需要大家虚拟机联网,安装yum工具    

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

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

1.3 启动

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

然后输入命令,可以查看docker版本:

docker -v

1.4 配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档: 容器镜像服务 (aliyun.com)

三 CentOS7安装DockerCompose

2.1.下载

Linux下需要通过命令下载:

# 安装
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

如果下载速度较慢,或者下载失败,可以使用课前资料提供的docker-compose文件:

微服务2 Docker学习 P42-P60_第10张图片

上传到/usr/local/bin/目录也可以。

2.2.修改文件权限

修改文件权限:

# 修改权限
chmod +x /usr/local/bin/docker-compose

2.3.Base自动补全命令:
# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

三.Docker镜像仓库

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。

官网地址:https://hub.docker.com/_/registry

3.1.简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

x docker run -d \    --restart=always \    --name registry \    -p 5000:5000 \    -v registry-data:/var/lib/registry \    registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

3.2.带有图形化界面版本

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=传智教育私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry
3.3.配置Docker信任地址

我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

四 Docker的基本命令

(一).镜像相关命令

1.1 镜像地址

Docker Hub

1.2 基础命令

微服务2 Docker学习 P42-P60_第11张图片

 docker --help

  •   docker images --help  查看镜像命令
  •   docker xx --help 查看xx命令介绍
  •   build      build从Dockerfile构建映像
  •   history    history显示镜像的历史记录
  •   import     import从tarball导入内容以创建文件系统映像
  •   inspect    inspect显示一个或多个镜像的详细信息
  •   load       load从tar存档或STDIN加载镜像
  •   ls         ls列出镜像
  •   prune      prune删除未使用的镜像
  •   pull       pull从注册表中提取镜像或存储库
  •   push       推送将镜像或存储库推送到注册表
  •   rm         rm删除一个或多个镜像
  •   save       save将一个或多个镜像保存到tar存档(默认情况下流式传输到STDOUT)
  •   tag        标记创建引用SOURCE_IMAGE的标记TARGET_IMAGE

  • docker pull xx (dockere pull nginx) 拉取镜像
  •  docker rmi xx 镜像
1.3  案例 docker (save load) 镜像导出磁盘,然后load加载回来

微服务2 Docker学习 P42-P60_第12张图片

1.4 save导出
  • docker save -o nginx.tar nginx:latest

微服务2 Docker学习 P42-P60_第13张图片

1.5 load加载
  • docker load --help 
  • docker load -i nginx.tar

​ 微服务2 Docker学习 P42-P60_第14张图片

(二) 容器相关命令

1.1 基础命令
  • docker run                运行
  • docker pause           暂停
  • docker unpause       停止暂停
  • docker stop              停止
  • docker start              启动
  • docker ps                 仅查看容器运行状态的容器
  • docker ps -a             查看所有容器状态
  • docker exec             进入容器执行命令
  • docker logs              查看容器运行日志   -f 可持续查看  --tail=1000 查看最后1000行 如 docker logs -f --tail =1000 my-nginx 就是持续查看nginx日志的最后1000行
  • docker rm                删除指定容器

微服务2 Docker学习 P42-P60_第15张图片

(三) 案例一 nginx启动与修改命令

1.2 案例 nginx 启动命令
docker run --name my-nginx -d -p 8080:80 nginx

微服务2 Docker学习 P42-P60_第16张图片

1.3 案例 进入nginx修改文件
  • docker exec: 进入容器内部 执行命令

微服务2 Docker学习 P42-P60_第17张图片

进入nginx容器

 docker exec -it my-nginx bash

微服务2 Docker学习 P42-P60_第18张图片

sed -i 's#Welcome to nginx#无敌的Nginx#g' index.html
sed -i 's###g' index.html

微服务2 Docker学习 P42-P60_第19张图片

(四) 案例二 redis 启动与进入

4.1 官网

redis - Official Image | Docker Hub

4.2 运行redis容器
  • docker run --name some-redis -d redis redis-server 

微服务2 Docker学习 P42-P60_第20张图片

进入redis

  • docker exec -it myredis bash
  • redis-cli

直接进入redis

  • docker exec -it myredis  redis-cli

测试redis

  • set num 666
  • key *

五 Docker-数据卷的学习

微服务2 Docker学习 P42-P60_第21张图片

微服务2 Docker学习 P42-P60_第22张图片

(一) 数据卷命令

1.1 操作数据卷

微服务2 Docker学习 P42-P60_第23张图片

1.2 小案例

微服务2 Docker学习 P42-P60_第24张图片

(1) 创建数据卷

docker volume create html

(2) 查看数据卷

docker volume ls

(3) 查看数据卷详细信息

docker volume inspect html 

微服务2 Docker学习 P42-P60_第25张图片

1.3 总结

微服务2 Docker学习 P42-P60_第26张图片

(二)  使用Docker-使用数据卷挂载到容器当中

2.1 -v 挂载

微服务2 Docker学习 P42-P60_第27张图片

2.2 挂载案例操作 --Nginx       (-v volume : 容器内目录  宿主机-系统生成对应目录)

微服务2 Docker学习 P42-P60_第28张图片

微服务2 Docker学习 P42-P60_第29张图片

2.3 挂载案例 --Mysql  (-v 文件/目录 挂载到对应的卷)

微服务2 Docker学习 P42-P60_第30张图片

 docker run \
 --name mysql \
 -v /temp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
 -v /tmp/mysql/data:/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=123456 \
 -p 3306:3306 \
 -d mysql:5.7
2.4 总结

微服务2 Docker学习 P42-P60_第31张图片

六 Docker-自定义镜像结构 --Dockerfile

微服务2 Docker学习 P42-P60_第32张图片

(一) 镜像的结构

1.1 介绍

微服务2 Docker学习 P42-P60_第33张图片

微服务2 Docker学习 P42-P60_第34张图片

1.2 总结

微服务2 Docker学习 P42-P60_第35张图片

(二)  自定义镜像 --Dockerfile

2.1  什么是Dockerfile

微服务2 Docker学习 P42-P60_第36张图片

官网

Dockerfile reference | Docker Docs

(三) 案例 基于Ubuntu镜像 构建一个新镜像, 运行一个java项目

3.1 说明

微服务2 Docker学习 P42-P60_第37张图片

dockerfile 文件

# 指定基础镜像
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
3.2 构建镜像  docker build
  •  docker build  -t name:tag dockerfile目录
  • docker build  -t
  • javaweb  是名称
  • 1.0    是版本
  • "." 是dockerfile 所在的目录
docker build -t javaweb:1.0 .
3.3 启动容器
 
docker run --name web -p 8090:8090 -d javaweb:1.0

(四) 案例 基于java:8-alpine镜像 将一个java项目构建为镜像

微服务2 Docker学习 P42-P60_第38张图片

4.1 制作自定义镜像
# 指定基础镜像
FROM java:8-alpine

# 拷贝java项目的包
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
4.2 启动容器
docker build -t javaweb:1.0 .
docker run --name web -p 8091:8090 -d javaweb:2.0

(五) 总结

微服务2 Docker学习 P42-P60_第39张图片

七 DockerCompose

官方网站

Overview | Docker Docs

(一) 初识Compose

微服务2 Docker学习 P42-P60_第40张图片

微服务2 Docker学习 P42-P60_第41张图片

(二) 安装Compose

(1) 安装
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

微服务2 Docker学习 P42-P60_第42张图片

(2) 修改权限
# 修改权限
chmod +x /usr/local/bin/docker-compose
(3) Base自动补全命令

这个不行用下面的

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

微服务2 Docker学习 P42-P60_第43张图片

(4) 总结

微服务2 Docker学习 P42-P60_第44张图片

八 案例 部署 cloud-demo 

(1) 部署

微服务2 Docker学习 P42-P60_第45张图片

微服务2 Docker学习 P42-P60_第46张图片

(2) 运行 docker-compose 
docker-compose up -d
docker-compose up -d --build
(3) userervice启动失败 是因为nacos先启动
docker-compose restart gateway userservice orderservice
(4) 解决 报错问题
(4.1) docker-compose启动时unknown flag: --iidfile问题

docker -v 可以查看版本  docker-compose 1.29版本太高了

换成docker-compose-1.26 即可 

链接:https://pan.baidu.com/s/1qg6BiRw0dhQC3XuVoYkXWQ?pwd=b9pm 
提取码:b9pm

(4.2)  修改docker-compose 文件的数据库名称和数据库密码

数据库名称: cloud_order 和 cloud_user

密码: 123456 

微服务2 Docker学习 P42-P60_第47张图片

微服务2 Docker学习 P42-P60_第48张图片

修改好后 : docker-compose up -d 重新执行  

或者 docker-compose restart gateway userservice orderservice

如果执行还报错 就给镜像 容器全部删掉 重新 docker-compose -up -d 构建一下

(4.3) 数据库连接不上

DockerCompose部署微服务连接数据库报错的,

可以修改/cloud-demo/mysql/conf/hmy.cnf文件,末尾加一行skip-grant-tables

然后重启mysql容器,

docker exec -it yoursql bash 进入容器内部,

mysql -uroot -p直接登录mysql,可以不用密码登陆,敲回车即可.

use mysql;  确认库

然后修改密码,

UPDATE user SET authentication_string = password ( 'your password' ) WHERE User = 'root';

刷新权限 flush privileges;

再将hmy.cnf里加的那一行删掉就可以了.

九 Docker镜像仓库(中心)

(1) Docker镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \
    --restart=always \
    --name registry	\
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

(2) 带有图形化界面版本

​​​​​​​​​​​​​​

​​​​​​​使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=YOURS私有仓库
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

(3) 配置Docker信任地址

 我们的私服采用的是http协议,默认不被Docker信任,所以需要做一个配置:

# 打开要修改的文件
vi /etc/docker/daemon.json
# 添加内容:
"insecure-registries":["http://192.168.150.101:8080"]
# 重加载
systemctl daemon-reload
# 重启docker
systemctl restart docker

微服务2 Docker学习 P42-P60_第49张图片

(4) 私有镜像添加镜像

重新tag本地镜像 前缀为 私有仓库地址: 192.168.1.100:8080

docker tag nginx:latest 192.168.1.100:8080/nginx:1.0

推送镜像

docker push 192.168.1.100:8080/nginx:1.0

拉去镜像

docker pull 192.168.1.100:8080/nginx:1.0

微服务2 Docker学习 P42-P60_第50张图片

(5) 总结

微服务2 Docker学习 P42-P60_第51张图片

你可能感兴趣的:(微服务,docker,架构)