大佬教程收集整理的这篇文章主要介绍了一命通关——Docker与微服务(上),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
💻个人简介
docker是基于Go语言实现的云开源项目
在传统的开发过程中c;我们的项目依赖于本地电脑的配置和某些配置文件c;此时如果我们将项目移到服务器或者其他本地电脑上进行运行c;为了能够在这些环境上运行和通过质量检测c;会产生大量的配置环境的开销c;并且在部署时由于版本、配置问题项目经常会挂掉。总而言之c;环境配置相当麻烦c;换一台主机就要重新来配置一次c;费时费力。
docker从根本上解决换主机重新配置环境问题c;因为docker把原始的配置环境也复制一份过来。此时的docker像一个容器装载着源代码+配置+环境+版本+各种第三方组件并将这些打包成一个镜像iso文件c;让镜像文件在docker引擎上运行。更专业的来讲c;docker给出了一个标准化的解决方案——系统平滑移植c;容器虚拟化技术
docker是通过对组件的封装、分发、部署、运行等生命周期的管理c;使用户应用及其运行环境能够做到一次镜像c;处处运行
一句话概括
docker解决了运行环境和配置问题的软件容器c;方便做持续集成并有助于整体发布的容器虚拟化技术
面试题: 容器与虚拟机比较
传统虚拟机c;运行一个软件c;创建一个新的虚拟机实例。占用资源多、步骤冗余、启动慢
Linux容器是与系统其他部分隔离开的一系列进程c;从另一个镜像运行c;并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项c;因而在从开发到测试再到生产的整个过程中c;它都具有可移植性和一致性。
Linux容器:不需要模拟一个完整的操作系统c;而是对进程进行隔离。容器与虚拟机不同c;不需要捆绑一整套操作系统c;只需要软件所需的库资源和设置。系统因此变的高效轻量并保证部署在任何环境中的软件都能始终如一地运行
一次构建、随处运行
更快速的应用交付和部署 传统的应用开发完成后c;需要提供大量的安装程序和配置文件及说明文档c;安装部署后需根据配置文档进行繁杂的配置才能正常运行c;使用Docker只需要交付少量容器镜像文件c;在正常生产环境加载镜像并运行即可c;应用安装配置在镜像里已经内置好c;大大节省部署配置和测试验证时间
更简单的系统运维 应用容器化运行后c;生产环境运行的应用可与开发、测试环境的应用高度一致c;容器会将应用程序相关的环境和状态完全封装起来c;不会因为底层基础架构和操作系统的不一致性给应用带来影响c;产生新的BUG
更高效的计算资源利用 Docker是内核级虚拟化c;不需要额外的Hypervisor(虚拟机监视器c;是用来建立与执行虚拟机器的软件、固件或硬件)支持c;在一台主机上可以运行多个容器实例c;大大提升物理服务器的CPU和内存的利用率
镜像:
是一个只读的模板c;镜像可以用来创建Docker容器c;一个镜像可以创建多个容器 docker镜像文件类似于Java的类模板c;而docker容器实例类似于Java中new出来的实例
容器:
容器时用镜像创建的运行实例c;类似于一个虚拟化的运行环境c;可以看作是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序
仓库:
集中存放镜像文件的地方c;Docker公司提供的官方仓库 Docker Hub 存放了大量的镜像供用户下载。国内的公开阿里云等。
通俗来讲c;比如说王者荣耀的红蓝BUFF野怪c;新刷新出来的就相当于从天美游戏库模板中 创建出来一个野怪c;这个野怪(容器)在自己的坑位上可以移动、攻击、有血条是一个独立运行的最小单元。而腾讯云中存放了各种野怪的模板(镜像文件)
docker平台架构图解(入门版)
docker官网
注意:docker必须部署在Linux内核的系统上
1.打开docker官网
2.进入手册
3.以CentOS7及以上版本为例
4.卸载旧版本(第一次安装跳过此步骤)
5.yum安装gcc相关
yum -y install gcc
yum -y install gcc-c++
6.官网给出三种安装方法 我们选择第一种也是最常用的一种
安装yum工具包
yum install -y yum-utils
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
tips:建议更新下yum软件包索引
yum makecache fast
8.安装docker引擎
yum install docker-ce docker-ce-cli containerd.io
安装成功!!!
1.启动 docker
systemctl start docker
2.熟悉的Hello world
docker run Hello-world
docker测试通过!!!🥰🥰🥰
docker执行Hello world流程图解:
安装一遍不过瘾c;想要卸载重新再装一次
卸载命令
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
(你在期待什么?我可不演示哦🤪🤪🤪)
🐟1.启动:
systemctl start docker
🐟2.停止:
systemctl stop docker
🐟3.重启:
systemctl restart docker
🐟4.查看docker状态:
systemctl status docker
🐟5.开机启动:
systemctl enable docker
🐟6.查看docker概要信息:
docker info
🐟7.查看docker总体帮助文档:
docker --Help
🐟8.查看docker命令帮助文档:
docker +具体命令 --Help
🐟1.列出本机上的镜像: docker images
参数说明: -a
:列出本地所有的镜像(含历史映像层)
-q
: 只显示镜像ID
🐟2.查询某个镜像: docker search +镜像名
参数:--limit
只列出N个镜像c;默认25个
docker search --limit 5 Hello-world
🐟3.下载镜像 docker pull + 镜像名[:TAG]
TAG版本号 省略就是默认下载最新版本
🐟4.查看镜像/容器/数据卷所占的空间 docker system df
🐟5. 删除某个镜像 docker rmi +镜像名/镜像ID
强制删除 docker rmi -f 镜像ID
删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部 docker rmi -f $(docker images -qa)
面试题: 谈谈 docker 虚悬镜像是什么?
仓库名、标签都是<none>的镜像c;称为虚悬镜像
直接进行拉取Ubuntu最新版
🐟1. 新建+启动容器 docker run [OPTIONS] IMAGE [COMMAND][ARG...]
参数说明:--name ="容器新名字"
为容器指定一个名称
-d
:后台运行容器并返回容器IDc;启动守护式容器(后台运行):
在大部分场景下c;docker的服务是在后台运行的 docker run -d 容器名
因此像Ubuntu这样需要交互的需要用下面的启动方式
-i
: 以交互模式运行容器c;通常与-t 同时使用
-t
:为容器重新分配一个伪输入终端c;通常与 -i 同时使用
启动交互式容器(前台有伪终端c;等待交互)
而像redis这样只需要后台默默运行的c;如果使用前台交互的形式就会很容器因为一些操作造成容器退出 因此c;在使用docker启动容器前c;应该首先考虑容器是适合后台运行还是交互式运行-P
:随机端口映射c;大写P
-p
:指定端口映射c;小写p
🐟2.列出当前运行的所有容器 docker ps
新建一个会话 查看刚才运行的Ubuntu
创建一个名称为myu1的Ubuntu容器实例
再新建一个会话 查看所有运行的容器 参数:docker ps [OPTIONS]
-a
:列出当前所有正在运行和历史上运行过的容器
-l
:显示最近创建的容器
-n
:显示最近n个创建的容器
-q
:静默模式c;只显示容器编号
🐟3.退出容器
🐟4.启动已停止运行的容器 docker start 容器ID或者容器名
重启容器 docker restart 容器ID或者容器名
停止容器 docker stop 容器ID或者容器名
强制停止容器 docker kill 容器ID或者容器名
🐟5.删除已停止的容器 docker rm 容器ID
docker rm -f 容器ID
强制删除容器
docker rm -f $(docker ps -a -q)
删除多个容器实例
docker ps -a -q | xargs docker rm
删除多个容器实例
🐟6.查看容器日志 docker logs +容器ID
🐟7.查看容器内运行的进程 docker top + 容器ID
🐟8.查看容器内部细节 docker inspect 容器ID
🐟9.进入正在运行的容器并以命令行交互
启动ubuntu容器并使用Ctrl+p+q退出
这个时候使用 docker exec -it 容器ID bashSHell
继续进行命令行交互
命令 docker attach 容器ID
同样也可以
attach 直接进入容器启动命令的终端c;不会启动新的进程c;用exit退出c;会导致容器的停止
exec 在容器中打开新的终端c;并且可以启动新的进程c;用exit退出c;不会导致容器的停止
推荐使用 docker exec 命令c;这样退出容器终端不会导致容器退出
🐟10.从容器内拷贝文件到主机
docker cp 容器ID:容器内部路径 目的主机路径
在Ubuntu容器中创建一个a.txt文件
拷贝到本机 /opt目录下
🐟11. 导入/导出容器
导出容器的内容留作为一个tar归档文件 docker export 容器ID > 文件名.tar
从tar包中的内容创建一个新的文件系统再导入为镜像 cat 文件名.tar | docker import -镜像用户/镜像名:镜像版本号
以上是大佬教程为你收集整理的一命通关——Docker与微服务(上)全部内容,希望文章能够帮你解决一命通关——Docker与微服务(上)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。