微服务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.mzph.cn/news/205735.shtml

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

相关文章

redis-学习笔记(list)

因为 list 可以头插头删, 尾插尾删, 所以其实更像 C 中的 deque (双端队列) ---- 知道就好, 别乱说, 具体底层编码是啥, 俺也不知道(没注意过) 可以通过组合, 把 list 当作队列 / 栈来用 list 的几种底层编码: ziplist(压缩列表) , linkedlist(链表) , quicklist ziplist 就是将…

12-07 周四 Pytorch 使用Visdom 进行可视化

简介 在完成了龙良曲的Pytroch视频课程之后&#xff0c;楼主对于pytroch有了进一步的理解&#xff0c;比如&#xff0c;比之前更加深刻的了解了BP神经网络的反向传播算法&#xff0c;梯度、损失、优化器这些名词更加熟悉。这个博客简要介绍一下在使用Pytorch进行数据可视化的一…

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架

1.安装ThinkPHP6框架 这里我们使用的是composer安装的安装方式&#xff0c;请确保电脑已经安装了composer&#xff0c;如未安装可查看Composer 安装与使用 | 菜鸟教程 composer create-project topthink/think tp 上面命令安装的是稳定版的&#xff0c;也是最新的稳定版&…

Jquery easyui异步提交表单的两种方式

这篇文章分享一下easyui常用的两种表单异步提交的方式。 目录 第一种&#xff1a;利用ajax提交 $.post() $.ajax() 第二种&#xff1a;使用easyui提供的表单提交方式 首先&#xff0c;准备一个简单的表单&#xff0c;包含三个输入框&#xff0c;在页面引入easyui的js文件。…

探索 HTML 语义化:让你的网页更有意义(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【Linux】进程通信之命名管道mkfifo

1.认识命名管道 匿名管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信。如果我们想在不相关的进程之间交换数据&#xff0c;可以使用FIFO文件来做这项工作&#xff0c;它经常被称为命名管道。命名管道是一种特殊类型的文件 2.在命…

时间序列预测实战(二十四)PyTorch实现RNN进行多元和单元预测(附代码+数据集+完整解析)

一、本文介绍 本篇文章给大家带来的是利用我个人编写的架构进行RNN时间序列卷积进行时间序列建模&#xff08;专门为了时间序列领域新人编写的架构&#xff0c;简单且不同于市面上大家用GPT写的代码&#xff09;&#xff0c;包括结果可视化、支持单元预测、多元预测、模型拟合…

【Java代码接口自动化测试】REST Assured接口测试 HTTPClient接口测试

近几年接口自动化变得越来越热门&#xff0c;相对比于UI自动化&#xff0c;接口自动化有一些优势 1.运行比UI更稳定&#xff0c;让BUG更容易定位 2.UI自动化维护成本太高&#xff0c;接口相对低一些 接口测试其实有很多方式&#xff0c;主要有两种&#xff0c;一个是工具&am…

JM中ref_pic_list_modification bug记录

问题描述 今天在用JM对YUV420p编码时,发现编出的码流用ffplay播放花屏,报如下错误: JM的版本时19.1,没有使能B帧,PicOrderCntType设置为2,其它都是encoder.cfg中的默认配置。我用一些码流分析工具播放H264码流正常,用一些播放器播放也都存在花屏,不过大多数播放器都是…

k8s集群部分使用gpu资源的pod出现UnexpectedAdmissionError问题

记录一次排查UnexpectedAdmissionError问题的过程 1. 问题 环境 3master节点N个GPU节点 kubelet版本&#xff1a;v1.19.4 kubernetes版本&#xff1a;v1.19.4 生产环境K8S集群&#xff0c;莫名其妙的出现大量UnexpectedAdmissionError状态的Pod&#xff0c;导致部分任务执…

12.07

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口设置//去掉表头this->setWindowFlags(Qt::FramelessWindowHint);//重新设置大小this->resize(800,420);//设置背景颜色this->setStyleSheet("background-color:whi…

【推荐系统】了解推荐系统的生态(重点:推荐算法的主要分类)

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍推荐系统的关键元素和思维模式、推荐算法的主要分类、推荐系统常见的问题、推荐系统效果评测。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一…

javaee实验:Spring Boot 整合 Mybatis

目录 MybatisMyBatis 框架简介Mybatis 框架执行流程图映射器 实验目的实验内容实验过程数据库准备项目结构代码实现 实验结果 Mybatis MyBatis 框架简介 Mybatis 的前身是 Apache 的开源框架 iBatis&#xff0c;与 Hibernate 一样是一个 Java 持久层的框 架。Mybatis 的优势在…

使用Python实现的Excel像素画

简介&#xff1a;本项目主要使用python语言&#xff0c;将图片转为 Excel&#xff0c;图片中的每一个像素转化为 Excel 中的每一个单元格。主要使用pillow和xlsxwriter这两个模块。项目使用一个python文件即可。 一&#xff1a;项目功能和流程介绍 项目的主要功能&#xff1a…

Python-封装配置文件

Code [url] baidu http://www.baidu.com[value] send_value 百度[server] ip 220.181.111.188封装的格式可以套用 # 封装,类似函数调用 import configparserclass ReadConfigIni():def __init__(self,filename):self.cf configparser.ConfigParser()self.cf.read(filenam…

Pr项目标准化ProjectNormalizer插件|解决PR剪辑视频在Windows和Mac电脑切换打开pr项目工程文件需要重新链接媒体问题

当我们在 Windows 中打开在 Mac 上剪辑视频的 Premiere Pro 项目文件时&#xff0c;需要重新链接媒体。通常&#xff0c;如果选中“自动重新链接其他人”复选框&#xff0c;媒体将在某种程度上链接在一起。但是&#xff0c;有时这是行不通的&#xff0c;并且可能是一个非常困难…

java获取ip的工具类

java获取ip的工具类 直接上代码 package com.loit.park.common.utils;import org.slf4j.Logger; import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletRequest; import java.net.InetAddress; import java.net.UnknownHostException;/*** author hanjinqun*…

百面嵌入式专栏(岗位分析)大疆嵌入式工程师【通信/流媒体】

文章目录 一、岗位简介二、解析2.1、网络协议2.2、音视频传输算法2.3、大规模音视频会议或直播系统 三、简历 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01;&#x1f604; &#x1f4e2;本篇我们将对大疆嵌入式工程师【通信/流媒体】岗位进行分析 。 一、…

视频封面提取:精准截图,如何从指定时长中提取某一帧图片

在视频制作和分享过程中&#xff0c;一个有吸引力的封面或截图往往能吸引更多的观众点击观看。有时候要在特定的时间段内从视频中提取一帧作为封面或截图。如果每个视频都手动提取的话就会耗费很长时间&#xff0c;那么如何智化能批量提取呢&#xff1f;现在一起来看下云炫AI智…

用户案例|Milvus 助力 Credal.AI 实现 GenAI 安全与可控

AIGC 时代&#xff0c;企业流程中是否整合人工智能&#xff08;AI&#xff09;对于的企业竞争力至关重要。然而&#xff0c;随着 AI 不断发展演进&#xff0c;企业也在此过程中面临数据安全管理、访问权限、数据隐私等方面的挑战。 为了更好地解决上述问题&#xff0c;Credal.A…