程序笔记   发布时间:2022-06-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了一命通关——Docker与微服务(上)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

💻个人简介

  • ⌨️作者简介: 大家好࿰c;我是〖雪月清〗 ❄️
  • 🎉个人主页:〖雪月清〗🌸
  • 📣文章参:尚硅谷Docker

🐳Docker

  • 🐳1.Docker简介
    • 🐋1.背景
    • 🐋2.理念
    • 🐋3.优势
  • 🐳2.Docker安装与卸载
    • 🐋1.docker三要素:
    • 🐋2.安装Dockers引擎
    • 🐋3.测试
    • 🐋4.卸载
  • 🐳3.Docker常用命令
    • 🐋1.帮助启动类命令
    • 🐋2.镜像命令
    • 🐋3.容器命令

🐳1.Docker简介

docker是基于Go语言实现的云开源项目

🐋1.背景

在传统的开发过程中࿰c;我们的项目依赖于本地电脑的配置和某些配置文件࿰c;此时如果我们将项目移到服务器或者其他本地电脑上进行运行࿰c;为了能够在这些环境上运行和通过质量检测࿰c;会产生大量的配置环境的开销c;并且在部署时由于版本、配置问题项目经常会挂掉。总而言之࿰c;环境配置相当麻烦࿰c;换一台主机就要重新来配置一次࿰c;费时费力。

docker从根本上解决换主机重新配置环境问题࿰c;因为docker把原始的配置环境也复制一份过来。此时的docker像一个容器装载着源代码+配置+环境+版本+各种第三方组件并将这些打包成一个镜像iso文件࿰c;让镜像文件在docker引擎上运行。更专业的来讲࿰c;docker给出了一个标准化的解决方案——系统平滑移植࿰c;容器虚拟化技术

🐋2.理念

docker是通过对组件的封装分发部署运行等生命周期的管理࿰c;使用户应用及其运行环境能够做到一次镜像࿰c;处处运行

一句话概括

docker解决了运行环境和配置问题的软件容器࿰c;便做持续集成并有助于整体发布的容器虚拟化技术

面试题: 容器与虚拟机比较

传统虚拟机࿰c;运行一个软件࿰c;创建一个新的虚拟机实例。占用资源多、步骤冗余、启动慢

一命通关——Docker与微服务(上)

Linux容器是与系统其他部分隔离开的一系列进程࿰c;从另一个镜像运行࿰c;并由该镜像提供支持进程所需的全部文件容器提供的镜像包含了应用的所有依赖项࿰c;因而在从开发到测试再到生产的整个过程中࿰c;它都具有可移植性和一致性。

Linux容器:不需要模拟一个完整的操作系统࿰c;而是对进程进行隔离。容器与虚拟机不同࿰c;不需要捆绑一整套操作系统࿰c;只需要软件所需的库资源和设置。系统因此变的高效轻量并保证部署在任何环境中的软件都能始终如一地运行

一命通关——Docker与微服务(上)

🐋3.优势

一次构建、随处运行

  • 更快速的应用交付和部署 传统的应用开发完成后c;需要提供大量的安装程序和配置文件及说明文档࿰c;安装部署后需根据配置文档进行繁杂的配置才能正常运行࿰c;使用Docker只需要交付少量容器镜像文件࿰c;在正常生产环境加载镜像并运行即可࿰c;应用安装配置在镜像里已经内置好࿰c;大大节省部署配置和测试验证时间

  • 便捷的升级和扩缩容 当现有容器不足以支撑业务时࿰c;可通过镜像运行新的容器进行快速扩容。

  • 更简单的系统运维 应用容器化运行后࿰c;生产环境运行的应用可与开发、测试环境的应用高度一致࿰c;容器会将应用程序相关的环境和状态完全封装起来࿰c;不会因为底层基础架构和操作系统的不一致性给应用带来影响࿰c;产生新的BUG

  • 更高效的计算资源利用 Docker是内核级虚拟化࿰c;不需要额外的Hypervisor(虚拟机监视器࿰c;是用来建立与执行虚拟机器的软件、固件或硬件)支持࿰c;在一台主机上可以运行多个容器实例࿰c;大大提升物理服务器的CPU和内存的利用率

🐳2.Docker安装与卸载

🐋1.docker三要素:

镜像:

是一个只读的模板࿰c;镜像可以用来创建Docker容器࿰c;一个镜像可以创建多个容器 docker镜像文件类似于Java的类模板࿰c;而docker容器实例类似于Java中new出来的实例

容器:

容器时用镜像创建的运行实例࿰c;类似于一个虚拟化的运行环境࿰c;可以看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序

仓库:

集中存放镜像文件的地方࿰c;Docker公司提供的官方仓库 Docker Hub 存放了大量的镜像供用户下载。国内的公开阿里云等。

通俗来讲࿰c;比如说王者荣耀的红蓝BUFF野怪࿰c;新刷新出来的就相当于从天美游戏库模板中 创建出来一个野怪࿰c;这个野怪(容器)在自己的坑位上可以移动、攻击、有血条是一个独立运行的最小单元。而腾讯云中存放了各种野怪的模板(镜像文件)

docker平台架构图解(入门版)

一命通关——Docker与微服务(上)

🐋2.安装Dockers引擎

docker官网

注意:docker必须部署在Linux内核的系统上

1.打开docker官网

一命通关——Docker与微服务(上)

2.进入手册

一命通关——Docker与微服务(上)

3.以CentOS7及以上版本为例

一命通关——Docker与微服务(上)

4.卸载旧版本(第一次安装跳过此步骤)

一命通关——Docker与微服务(上)

5.yum安装gcc相关

yum -y install gcc

一命通关——Docker与微服务(上)

yum -y install gcc-c++

一命通关——Docker与微服务(上)

6.官网给出三种安装方法 我们选择第一种也是最常用的一种

一命通关——Docker与微服务(上)

安装yum工具包

一命通关——Docker与微服务(上)

yum install -y yum-utils

一命通关——Docker与微服务(上)

7.设置stable镜像仓库

官网给的是:

yum-config-manager 
    --add-repo 
    https://download.docker.com/linux/centos/docker-ce.repo

但是这个镜像仓库服务器在国外࿰c;我们使用可能会经常连接超时。

我们使用阿里云的镜像仓库

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

一命通关——Docker与微服务(上)

tips:建议更新下yum软件包索引

yum makecache fast

一命通关——Docker与微服务(上)

8.安装docker引擎

一命通关——Docker与微服务(上)

yum install docker-ce docker-ce-cli containerd.io

一命通关——Docker与微服务(上)

一命通关——Docker与微服务(上)

安装成功!!!

🐋3.测试

1.启动 docker

systemctl start docker

一命通关——Docker与微服务(上)

查看docker进程

2.熟悉的Hello world

docker run Hello-world

一命通关——Docker与微服务(上)

docker测试通过!!!🥰🥰🥰

docker执行Hello world流程图解:

一命通关——Docker与微服务(上)

🐋4.卸载

安装一遍不过瘾࿰c;想要卸载重新再装一次

卸载命令

systemctl stop docker

yum remove docker-ce docker-ce-cli containerd.io

rm -rf /var/lib/docker

rm -rf /var/lib/containerd

(你在期待什么?我可不演示哦🤪🤪🤪)

🐳3.Docker常用命令

🐋1.帮助启动类命令

🐟1.启动:

systemctl start docker

一命通关——Docker与微服务(上)

🐟2.停止:

systemctl stop docker

一命通关——Docker与微服务(上)

🐟3.重启:

systemctl restart docker

🐟4.查看docker状态:

systemctl status docker

🐟5.开机启动:

systemctl enable docker

一命通关——Docker与微服务(上)

🐟6.查看docker概要信息:

docker info

一命通关——Docker与微服务(上)

🐟7.查看docker总体帮助文档:

docker --Help

一命通关——Docker与微服务(上)

🐟8.查看docker命令帮助文档:

docker +具体命令 --Help

🐋2.镜像命令

🐟1.列出本机上的镜像: docker images

一命通关——Docker与微服务(上)

参数说明: -a:列出本地所有的镜像(含历史映像层)

-q : 只显示镜像ID

一命通关——Docker与微服务(上)

🐟2.查询某个镜像: docker search +镜像名

参数:--limit 只列出N个镜像࿰c;默认25个

docker search --limit 5 Hello-world

一命通关——Docker与微服务(上)

参数说明

一命通关——Docker与微服务(上)

🐟3.下载镜像 docker pull + 镜像名[:TAG]

TAG版本号 省略就是默认下载最新版本

一命通关——Docker与微服务(上)

🐟4.查看镜像/容器/数据卷所占的空间 docker system df

一命通关——Docker与微服务(上)

🐟5. 删除某个镜像 docker rmi +镜像名/镜像ID

强制删除 docker rmi -f 镜像ID

删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG

删除全部 docker rmi -f $(docker images -qa)

面试题: 谈谈 docker 虚悬镜像是什么?

仓库名、标签都是<none>的镜像࿰c;称为虚悬镜像

一命通关——Docker与微服务(上)

🐋3.容器命令

直接进行拉取Ubuntu最新版

一命通关——Docker与微服务(上)

🐟1. 新建+启动容器 docker run [OPTIONS] IMAGE [COMMAND][ARG...]

参数说明:--name ="容器新名字" 为容器指定一个名称

-d :后台运行容器并返回容器ID࿰c;启动守护式容器(后台运行):

在大部分场景下࿰c;docker的服务是在后台运行的 docker run -d 容器名

一命通关——Docker与微服务(上)

Dokcer容器后台运行࿰c;就必须有一个前台进程

因此像Ubuntu这样需要交互的需要用下面的启动方式

-i : 以交互模式运行容器࿰c;通常与-t 同时使用

-t :为容器重新分配一个伪输入终端࿰c;通常与 -i 同时使用

启动交互式容器(前台有伪终端࿰c;等待交互)

一命通关——Docker与微服务(上)

而像redis这样只需要后台默默运行的࿰c;如果使用前台交互的形式就会很容器因为一些操作造成容器退出

一命通关——Docker与微服务(上)

因此࿰c;在使用docker启动容器前࿰c;应该首先虑容器是适合后台运行还是交互式运行

-P:随机端口映射࿰c;大写P

-p:指定端口映射࿰c;小写p

🐟2.列出当前运行的所有容器 docker ps

新建一个会话 查看刚才运行的Ubuntu

一命通关——Docker与微服务(上)

创建一个名称为myu1的Ubuntu容器实例

一命通关——Docker与微服务(上)

再新建一个会话 查看所有运行的容器

一命通关——Docker与微服务(上)

参数:docker ps [OPTIONS]

-a :列出当前所有正在运行和历史上运行过的容器

-l :显示最近创建的容器

-n:显示最近n个创建的容器

-q:静默模式࿰c;只显示容器编号

🐟3.退出容器

  • exit run进去容器࿰c;exit退出࿰c;容器停止
  • ctrl+p+q run进去容器࿰c;ctrl+p+q退出࿰c;容器不停止

一命通关——Docker与微服务(上)

🐟4.启动已停止运行的容器 docker start 容器ID或者容器名

重启容器 docker restart 容器ID或者容器名

停止容器 docker stop 容器ID或者容器名

强制停止容器 docker kill 容器ID或者容器名

🐟5.删除已停止的容器 docker rm 容器ID

一命通关——Docker与微服务(上)

一命通关——Docker与微服务(上)

docker rm -f 容器ID 强制删除容器

docker rm -f $(docker ps -a -q) 删除多个容器实例

docker ps -a -q | xargs docker rm 删除多个容器实例

🐟6.查看容器日志 docker logs +容器ID

一命通关——Docker与微服务(上)

🐟7.查看容器内运行的进程 docker top + 容器ID

一命通关——Docker与微服务(上)

🐟8.查看容器内部细节 docker inspect 容器ID

一命通关——Docker与微服务(上)

🐟9.进入正在运行的容器并以命令行交互

启动ubuntu容器并使用Ctrl+p+q退出

一命通关——Docker与微服务(上)

这个时候使用 docker exec -it 容器ID bashSHell 继续进行命令行交互

一命通关——Docker与微服务(上)

命令 docker attach 容器ID 同样也可以

attach 直接进入容器启动命令的终端࿰c;不会启动新的进程࿰c;用exit退出࿰c;会导致容器的停止

exec 在容器中打开新的终端࿰c;并且可以启动新的进程࿰c;用exit退出࿰c;不会导致容器的停止

一命通关——Docker与微服务(上)

一命通关——Docker与微服务(上)

推荐使用 docker exec 命令࿰c;这样退出容器终端不会导致容器退出

🐟10.从容器内拷贝文件到主机

docker cp 容器ID:容器内部路径 目的主机路径

在Ubuntu容器中创建一个a.txt文件

一命通关——Docker与微服务(上)

拷贝到本机 /opt目录下

一命通关——Docker与微服务(上)

🐟11. 导入/导出容器

导出容器的内容留作为一个tar归档文件 docker export 容器ID > 文件名.tar

一命通关——Docker与微服务(上)

从tar包中的内容创建一个新的文件系统再导入为镜像 cat 文件名.tar | docker import -镜像用户/镜像名:镜像版本号

一命通关——Docker与微服务(上)

大佬总结

以上是大佬教程为你收集整理的一命通关——Docker与微服务(上)全部内容,希望文章能够帮你解决一命通关——Docker与微服务(上)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。