IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker第一篇:基础+操作 -> 正文阅读

[系统运维]Docker第一篇:基础+操作

什么是Docker?

Docker是一个开源项目,诞生于2013年初,最初是 dotcloud公司内部的一个业余项目。它基于Goolge公司推出的Go语言实现。项目后来加入了Linux基金会,遵从管理Apache2.0协议,项目代码在github上进行维护。
Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器等技术。
云计算兴起后,服务器硬件扩展非常便利,软件服务部署称为了瓶颈,docker乘势而兴起。

为什么需要Docker?

容器的启动可以在秒级实现,比传统的虚拟机方式要快的多,对系统资源的利用率很高,一台主机上可以同时运行数千个Docker容器。Docker的出现,让开发、测试、线上的环境部署,成为了便利一条龙。
1、 更快速的交付和部署
对于开发和运维(devop)来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
开发者可以是使用一个标准的镜像来构建一套开发容器,开发完成后,运维人员可以直接使用这个容器来部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器很轻很快,容器的启动时间是秒级的,大量的节约开发、测试、部署的时间。
2、 更高效的虚拟化
Docker容器的运行不需要额外的hypervisor支持,他是内核级的虚拟化,因此可以实现更高的性能和效率。
3、 更轻松的迁移和扩展
Docker容器几乎可以在任何的平台上运行,包括物理机、虚拟机、共有云、私有云、个人电脑、服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个平台。
4、 更简单的管理
要用Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。
5、 对比传统虚拟机总结
在这里插入图片描述

Docker架构

在这里插入图片描述
Images:Docker镜像,用于创建Docker容器的模板
Container:Docker容器,独立运行的一个或一组应用
Client:Docker客户端,使用docker api于Docker的守护进程进行通信
Host:Docker主机,一个物理或者虚拟的机器,用于执行Docker守护进程和容器
Registry:Docker仓库,用来保存镜像
Machine:一个简化Docker安装的命令行工具

Docker环境安装

在这里插入图片描述
Docker支持Centos6及以后的版本
第一:卸载系统中是否安装过的Docker包
1.查询安装过的包
yum list installed | grep docker
docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo
2.删除安装的软件包
yum -y remove docker-engine.x86_64
3.删除镜像/容器等
rm -rf /var/lib/docker

第二:安装系统的yum源
第一种方式:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce
在这里插入图片描述

第二种方式:
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce

第三、安装Docker
默认安装
yum install –y docker
安装指定版本的docker
yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io –y
查看Docker版本
docker version
在这里插入图片描述
查看docker信息
docker info在这里插入图片描述
启动docker
service docker start
或者$systemctl start docker
systemctl enable docker
设置随系统启动
sudo chkconfig docker on
在这里插入图片描述
修改为阿里云的镜像仓库地址:
默认是docker官方的仓库,但是服务器在国外会很慢
在这里插入图片描述
在这里插入图片描述

运行第一个Docker容器

1、安装运行hello-world并运行容器
在这里插入图片描述
2、安装mysql容器
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
docker启动mysql容器
-d :在后台运行
–name:表示启动的容器的名称
-p 3306:3306 :表示将物理主机的3306端口开放给容器3306端口
-e MYSQL_ROOT_PASSWORD=root mysql:5.7:表示mysql容器的密码为root,安装的mysql版本为5.7
在这里插入图片描述
测试:
在这里插入图片描述

Docker基础操作

镜像、容器的关系

在这里插入图片描述

容器的使用

在这里插入图片描述
容器是独立运行的一个或者一组应用,以及他们运行态的环境
容器基础属性参数:
docker run 创建一个容器并运行
docker create 创建一个容器,但是不启动
-d:后台运行容器,并返回容器id
-i:已交互模式运行容器,通常与-t同时使用
-p:端口映射。格式为主机端口:容器端口
–name=“ngnix-lb”:为容器指定一个名称
–dns 8.8.8.8:指定容器使用的dns服务器,默认和宿主一致
-m:设置容器使用内存的最大值
–net=“bridge”:网络连接类型,支持bridge、none、host、container四种类型
–link=[]:添加链接到另一个容器
–expose=[]:开放一个端口或者一组端口

docker [run|start|stop|restart|kill|rm|pause|unpause]
? run/create[镜像名]: 创建一个新的容器并运行一个命令
create:只创建容器,但是不运行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查询所有容器,并运行
在这里插入图片描述
run 创建并运行:
在这里插入图片描述
测试:
在这里插入图片描述
在这里插入图片描述
? start/stop/restart [容器名]:启动/停止/重启一个容器
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
? kill [容器名]: 直接杀掉容器,不给进程响应时间
在这里插入图片描述
? rm [容器名]:删除已经停止的容器
在这里插入图片描述
? pause/unpause [容器名]:暂停/恢复容器中的进程
docker [ps|inspect|exec|logs|export|import]
? ps :查看容器列表(默认查看正在运行的容器,-a 查看所有容器)
在这里插入图片描述
? inspect [容器名]:查看容器配置元数据
在这里插入图片描述
在这里插入图片描述
? exec -it [容器名] /bin/bash:进入容器环境中交互操作
在这里插入图片描述
? logs --since=“2019-02-01” -f --tail=10 [容器名]:查看容器日志
在这里插入图片描述
? cp path1 [ 容器名]:path 容器与主机之间的数据拷贝
在这里插入图片描述
将主机文件下的home文件夹复制到nginx4 容器下/etc/nginx/conf.d 目录下:
在这里插入图片描述
将容器nginx2中的文件复制到宿主机home同级文件中:
在这里插入图片描述
容器nignx4之前的目录下也会同步复制default.conf文件
在这里插入图片描述
? export -o test.tar [容器名] / docker export [容器名]>test.tar : 文件系统作为一个 tar 归档文件
? import test.tar [ 镜像名: 版本号]:(不使用)

镜像的使用docker images|rmi|tag|build|history|save|load]

在这里插入图片描述
a、当用镜像模板创建容器时,是直接在镜像的文件层级上,加一层容器读写层
b、反过来,如果想要创建一个新的镜像,直接把容器对应的所有文件层,转为只读层

? images :列出本地镜像列表
去docker中央仓库去寻找需要安装的docker镜像
在这里插入图片描述
在这里插入图片描述
? rmi [镜像名:版本]:删除镜像
1、首先需要删除镜像是否关联相关容器
在这里插入图片描述
2、首先删除该镜像关联的容器,然后在删除镜像
在这里插入图片描述
? tag [镜像名:版本] [仓库]/[镜像名:版本]: 标记本地镜像,将其归入某一仓库

? build -t [镜像名:版本] [path] :Dockerfile 创建镜像
在这里插入图片描述
? history [镜像名:版本] : 查看指定镜像的创建历史
在这里插入图片描述
? save -o xxx.tar [镜像名:版本] / save [镜像名:版本] >xxx.tar : 将成 镜像保存成 tar 归档文件
? load --input xx.tar / docker load<xxx.tar : (不使用)

镜像的制作方法

1、由容器制作镜像
(1)创建tomcat容器
在这里插入图片描述
(2)向其中添加一个项目的war包
在这里插入图片描述
测试容器:
在这里插入图片描述
2、要复用这个容器,使用commit创建一个新镜像
在这里插入图片描述
以新建的镜像,创建容器
在这里插入图片描述

测试容器
在这里插入图片描述

2、Dockerfile使用
虽然使用容器,可以转换为镜像,但不是常规手段,
一般情况下,我们使用dockerfile方式创建容器:
在这里插入图片描述
Dockerfile指令:
FROM:
FROM {base 镜像}
必须放在Dockerfile的第一行,表示从哪个baseimage开始构建
MAINTAINTER:
可选的,用来标识image作者的地方
RUN:
RUN都是启动一个容器,执行命令、然后提交存储层文件变更
第一层RUN command1的执行仅仅是当前进程,一个内存上的变化而已,其结果不会造成任何文件的修改。
而到第二层的时候,启动的是一个全新的容器,跟第一层的容器更是完全没有关系,自然不可能继承前一层构建过程中的内存变化。
而如果需要将俩条命令或者多条命令联合起来执行需要加上&&
如:cd /usr/local/src && wget XXX
CMD:
CMD的作用是作为执行container时候的默认行为(容器默认的启动命令)
当运行container的时候声明了command,则不在用image中的CMD默认所定义的命令
一个Dockerfile中只能有一个有效的CMD,当定义多个CMD的时候,只有最后一个才会起作用
EXPOSE:
EXPOSE指令时申明运行时容器提供服务端口,这只是一个申明,在运行时不会因为这个声明应用就会开启这个端口的服务。在Dockerfile中写入这样的声明有俩个好处:一个是帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射;另一用处则是在运行时随机端口映射时,也就是docker run –p是,会自动随机映射EXPOSE的端口。
ENTRYPOINT(默认使用这个命令作为入口命令):
Entrypoint的作用是,把整个container变成可执行的文件,且不能够通过替换CMD的方法来改变创建container的方式。但是可以通过参数传递的方法影响到container内部。
每个Dockerfile只能包含一个entrypoint,多个entrypoint只有最后一个有效
当定义了entrypoint以后,CMD只能够作为参数进行传递。
ADD&COPY
把host上的文件或者目录复制到image中(能够进行自动解压压缩包)
ENV
用来设置环境变量,后续的RUN可以使用它来创建的环境变量
WORKDIR
用来指定当前的工作目录(或者成为当前目录)
USER
运行RUN指令的用户
VOLUME
用来创建一个在image之外的mount point

Dockerfile的使用实例

1、用dockerfile方式创建War包容器
(1)创建Dockerfile脚本文件
在这里插入图片描述
(2)构建镜像
在这里插入图片描述
(3)构建容器并运行
在这里插入图片描述
在这里插入图片描述

仓库的使用

1、私有仓库的使用:
搭建
下载 registry 镜像:docker pull registry
在这里插入图片描述
启动
在这里插入图片描述
配置http传输
私服默认只能使用https,需要配置开放http
在这里插入图片描述
配置完毕重启下 docker 服务
systemctl daemon-reload
systemctl restart docker

私服仓库推送镜像
在这里插入图片描述
查询镜像
在这里插入图片描述
在这里插入图片描述

Docker镜像的结构

在这里插入图片描述
1、一组只读目录组成一个镜像
2、每一个目录是一个layer,多个layer按照一定的顺序组成一个stack
3、在容器创建时,docker增加在stack之上加一个thin和writable layer
在这里插入图片描述
1、lower和upper目录最终被挂载到merged目录
2、upper覆盖lower的同名文件
3、upper合并lower的同目录文件

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 10:14:35  更:2021-08-06 10:16:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:52:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码