微服务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

(二) 解决兼容问题

(三) 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.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repoyum 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: registryvolumes:- ./registry-data:/var/lib/registryui:image: joxit/docker-registry-ui:staticports:- 8080:80environment:- REGISTRY_TITLE=传智教育私有仓库- REGISTRY_URL=http://registry:5000depends_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: registryvolumes:- ./registry-data:/var/lib/registryui:image: joxit/docker-registry-ui:staticports:- 8080:80environment:- REGISTRY_TITLE=YOURS私有仓库- REGISTRY_URL=http://registry:5000depends_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) 总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/256662.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

labelme等标注工具/数据增强工具输出JSON文件格式检查脚本

标注的文件太多了&#xff0c;还有用数据增强工具生成了一票的新数据。在转换或使用训练时候会报错&#xff0c;错误原因是json中语法有问题&#xff0c;这样会中断程序运行&#xff0c;调试造成很大困扰。 检查确实最后有问题&#xff0c;多写了一次 写一个脚本&#xff0c;用…

CentOS上配置和管理HTTP服务器的工具和实用程序

在CentOS系统上&#xff0c;有多个工具和实用程序可以帮助你配置和管理HTTP服务器。以下是一些常用的工具和实用程序&#xff1a; Apache HTTP服务器&#xff1a; Apache是CentOS上最常用的HTTP服务器之一。它是一个开源的Web服务器软件&#xff0c;具有高度的可配置性和可扩…

ARCGIS 中使用 ChatGPT 的 5 种方式

ChatGPT 一度成为最热门的话题。什么是 ChatGPT&#xff1f;谁能比 ChatGPT 本身更好地回答这个问题呢&#xff1f;我们要求它写一个关于 ChatGPT 是什么的简短描述&#xff0c;这是它的回应&#xff1a; ChatGPT 是一个聊天机器人&#xff0c;使用 OpenAI 开发的 GPT-3 语言模…

【智能家居】六、摄像头安装实现监控功能点、人脸识别(face_recognition的使用)

一、定义及第三方库的说明 OCR &#xff08;光学字符识别&#xff09;文字识别、图像识别mjpg-streamer实时流式传输视频工具树莓派mjpg-streamer Face Recognition人脸识别 Dlib 计算机视觉问题的工具和算法face_recognition库OpenCV 计算机视觉和机器学习的开源库 三、香…

大数据分析与应用实验任务十一

大数据分析与应用实验任务十一 实验目的 通过实验掌握spark Streaming相关对象的创建方法&#xff1b; 熟悉spark Streaming对文件流、套接字流和RDD队列流的数据接收处理方法&#xff1b; 熟悉spark Streaming的转换操作&#xff0c;包括无状态和有状态转换。 熟悉spark S…

【深度学习】一维数组的聚类

在学习聚类算法的过程中&#xff0c;学习到的聚类算法大部分都是针对n维的&#xff0c;针对一维数据的聚类方式较少&#xff0c;今天就来学习下如何给一维的数据进行聚类。 方案一&#xff1a;采用K-Means对一维数据聚类 Python代码如下&#xff1a; from sklearn.cluster im…

[VSCode] Java开发环境配置

文章目录 1 VSCode & Java 安装1.1 安装 VSCode1.2 安装 JDK 2 环境变量配置3 在 VSCode 中安装 Java 扩展4 运行测试 1 VSCode & Java 安装 1.1 安装 VSCode Visual Studio Code 官方下载 地址&#xff1a; https://code.visualstudio.com/详细安装步骤这里不做赘…

m1编译xgboost的jar报错

1、编译 cd jvm-package包&#xff0c;然后进行编译mvn install -P libxgboost,java -DskipTests 2、报错信息&#xff1a; 3、解决方法 A、在jvm-packages包下找到xgboost4j中找到pom.xml&#xff0c;如图&#xff1a; B、修改python的额目录或者脚本&#xff1a; C、继续执…

图像处理之把模糊的图片变清晰

1.图片如果是有雾化效果的对图像产生影响的,要先进行图形增强,Retinex是基于深度神经网络了,我在之前图形处理的文章一路从神经网络(概率统计)—>积卷神经网络(对区域进行概率统计,对图片进行切割多个识别对象)–>深度积卷神经网络(RetinexNet也是模拟人脑的处理过程,增加…

【无线网络技术】——无线城域网(学习笔记)

&#x1f4d6; 前言&#xff1a;无线城域网&#xff08;WMAN&#xff09;是指在地域上覆盖城市及其郊区范围的分布节点之间传输信息的本地分配无线网络。能实现语音、数据、图像、多媒体、IP等多业务的接入服务。其覆盖范围的典型值为3~5km&#xff0c;点到点链路的覆盖可以高达…

Pytorch线性回归教程

import torch import numpy as np import torch.nn as nn import matplotlib.pyplot as plt生成测试数据 # 长期趋势 def trend(time, slope0):return slope * time# 季节趋势 def seasonal_pattern(season_time):return np.where(season_time < 0.4,np.cos(season_time * …

微信小程序js数组对象根据某个字段排序

一、排序栗子 注: 属性字段需要进行转换,如String类型或者Number类型 //升序排序 首元素(element1)在前 降序则(element1)元素在后 data data.sort((element1, element2) >element1.属性 - element2.属性 ); 二、代码 Page({/*** 页面的初始数据*/data: {user:…