微服务2 Docker学习 P42-P60

2023-12-13 19:48:53

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

(二) 解决兼容问题

(三) Docker和虚拟机的差异

(四) Docker架构

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

二 Docker 安装

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

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文件:

上传到/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 基础命令

?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加载回来

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

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

??

(二) 容器相关命令

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? ? ? ? ? ? ? ? 删除指定容器

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

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

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

进入nginx容器

 docker exec -it my-nginx bash

sed -i 's#Welcome to nginx#无敌的Nginx#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

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

4.1 官网

redis - Official Image | Docker Hub

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

进入redis

  • docker exec -it myredis bash
  • redis-cli

直接进入redis

  • docker exec -it myredis ?redis-cli

测试redis

  • set num 666
  • key *

五 Docker-数据卷的学习

(一) 数据卷命令

1.1 操作数据卷

1.2 小案例

(1)?创建数据卷

docker volume create html

(2) 查看数据卷

docker volume ls

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

docker volume inspect html?

1.3 总结

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

2.1 -v 挂载

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

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

 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 总结

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

(一) 镜像的结构

1.1 介绍

1.2 总结

(二)? 自定义镜像 --Dockerfile

2.1? 什么是Dockerfile

官网

Dockerfile reference | Docker Docs

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

3.1 说明

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项目构建为镜像

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

(五) 总结

七 DockerCompose

官方网站

Overview | Docker Docs

(一) 初识Compose

(二) 安装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) 修改权限
# 修改权限
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

(4) 总结

八 案例 部署 cloud-demo?

(1) 部署

(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?

修改好后 : 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

(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

(5) 总结

文章来源:https://blog.csdn.net/weixin_43247803/article/details/134808080
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。