微服务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.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) 总结

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python第三次练习

Python 一、如何判断一个字符串是否是另一个字符串的子串二、如何验证一个字符串中的每一个字符均在另一个字符串中出现三、如何判定一个字符串中既有数字又有字母四、做一个注册登录系统 一、如何判断一个字符串是否是另一个字符串的子串 实现代码&#xff1a; string1 inp…

5G - NR物理层解决方案支持6G非地面网络中的高移动性

文章目录 非地面网络场景链路仿真参数实验仿真结果 非地面网络场景 链路仿真参数 实验仿真结果 Figure 5 && Figure 6&#xff1a;不同信噪比下的BER和吞吐量 变量 SISO 2x2MIMO 2x4MIMO 2x8MIMOReyleigh衰落、Rician衰落、多径TDL-A(NLOS) 、TDL-E(LOS)(a)QPSK (b)16…

【React Hooks】useReducer()

useReducer 的三个参数是可选的&#xff0c;默认就是initialState&#xff0c;如果在调用的时候传递第三个参数那么他就会改变为你传递的参数&#xff0c;实际开发不建议这样写。会增加代码的不可读性。 使用方法&#xff1a; 必须将 useReducer 的第一个参数&#xff08;函数…

代码随想录算法训练营 ---第五十七天

今天是两道动态规划的经典题目。 第一题&#xff1a; 简介&#xff1a; 做了今天的题目我有了新的理解&#xff0c;我觉得过去我过于注重对于二维数组的理解&#xff0c;忽略了对dp数组i 和 j 的含义的理解。 动态规划五部曲&#xff1a; 1.确定dp数组的含义 本题我们将i …

【Flutter】vs2022上开发flutter

在vs上开发flutter&#xff0c;结果扩展仓库上没办法找到Dart&#xff0c;Flutter。 在 这 搜索Dart时也无法找到插件。 最后发现是安装工具出错了 安装了 开发需要的是

Cython批量编译py文件并打包python项目为whl

1、Cython批量编译py文件 Cython是一个编程语言&#xff0c;它通过类似Python的语法来编写C扩展并可以被Python调用。能够将PythonC混合编码的.pyx脚本转换为C代码&#xff0c;主要用于优化Python脚本性能或Python调用C函数库。基于它的原理&#xff0c;可以得到一种代码加密的…

C++——红黑树

作者&#xff1a;几冬雪来 时间&#xff1a;2023年12月7日 内容&#xff1a;C——红黑树讲解 目录 前言&#xff1a; 红黑树的概念&#xff1a; 红黑树的性质&#xff1a; 红黑树的路径计算&#xff1a; 最长路径和最短路径&#xff1a; AVL树与红黑树的区别&#xff…

测试新手百科:Postman简介、安装、入门使用方法详细攻略!

一、Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的&#xff0c;用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网…

zabbix(2)

zabbix的自动发现机制 zabbx客户端主动和服务端联系&#xff0c;将自己的地址和端口发送服务端&#xff0c;实现自动添加监控主机 客户端是主动的一方 缺点&#xff1a;自定义网段中主机数量太多&#xff0c;登记耗时会很久&#xff0c;而且这个自动发现机制不是很稳定 zabb…

Python---面向对象的综合案例

案例1&#xff1a;定义学员信息类&#xff0c;包含姓名、成绩属性&#xff0c;定义成绩打印方法&#xff08;90分及以上显示优秀&#xff0c;80分及以上显示良好&#xff0c;70分及以上显示中等&#xff0c;60分及以上显示合格&#xff0c;60分以下显示不及格&#xff09; 学员…

easyexcel导出报错 java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader

报错&#xff1a; org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoaderorg.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWit…

微信小程序-发消息

一、引言 作者开发《目的地到了》的时候需要给用户发消息&#xff0c;一开始用了消息模板&#xff0c;后面上真机才发现微信把这个给取消掉了。后面通知用户都是通过订阅消息 二、前端 调用wx的api&#xff0c;要把模板id传进去&#xff0c;如果用户没有点击过同意会弹出弹窗提…

多人群聊代码

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…

MTK平台如何debug A2DP 卡音问题

一 听auido文件 卡音问题首先要听以下3个部分的audio文件 1 .auido dump中的af_mixer_write_pcm_xxx.wav,这是auido传 给A2DP的源文件,如果这里有卡音,可以转给auido的人check • track是AudioTrack送到AudioFlinger的聲音 • mixer_pcm是AudioFlinger處理過程中的聲音 •…

Java多线程技术二:线程间通信——InheritableThreadLocal的使用

1 概述 使用InheritableThreadLocal可以在子线程中取得父线程继承下来的值。 2 ThreadLocal类不能实现值的继承 public class Tools {public static ThreadLocal t1 new ThreadLocal(); } public class ThreadA extends Thread{Overridepublic void run(){try {for (int i…

功能测试,接口测试,自动化测试,压力测试,性能测试,渗透测试,安全测试,具体是干嘛的?

软件测试是一个广义的概念&#xff0c;他包括了多领域的测试内容&#xff0c;比如&#xff0c;很多新手可能都听说&#xff1a;功能测试&#xff0c;接口测试&#xff0c;自动化测试&#xff0c;压力测试&#xff0c;性能测试&#xff0c;渗透测试&#xff0c;安全测试等&#…

【Python】流畅!一个非常好用的网络数据采集工具!

文章目录 前言一、注册二、初窥三 数据集四 自定义网站网络爬虫总结 前言 你是否曾为获取重要数据而感到困扰&#xff1f;是否因为数据封锁而无法获取所需信息&#xff1f;是否因为数据格式混乱而头疼&#xff1f;现在&#xff0c;所有这些问题都可以迎刃而解。让我为大家介绍…

2023年12月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…

docker的基本管理和概念

docker是什么&#xff1f; docker是开源的应用容器引擎。基于go语言开发的。运行在Linux系统中的开源的轻量级的“虚拟机”。 docker的容器技术可以在一台主机上轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器 docker的宿主机是linux系统。集装箱可以理解为相互…