云计算(Docker)

Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从 Apache2.0 协议开源。它可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。Docker 可用于开发应用、交付应用、运行应用等场景。

容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。Docker 允许用户将基础设施中的应用单独分割出来,形成更小的部分容器,从而提高软件交付速度。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版)和 EE(Enterprise Edition: 企业版),通常使用社区版就可以满足大多数业务场景。

Docker理念

Docker的主要目标是"Build,Ship and Run Any App,Anywhere",也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到"一次镜像,处处运行"。

Linux容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

Docker 容器与虚拟机的区别

  • Docker 容器与虚拟机很相似,但它们之间又有着很大的区别。
  • 虚拟机是通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。创建虚拟机时,会将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存,每个虚拟机都有独立的硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
  • 虚拟机会消耗大量系统资源和开销,尤其是当多个虚拟机在同一物理服务器上运行时,每个虚拟机都有自己的子操作系统,大量精力以及资源被用于虚拟化的部署和运行上。
  • 容器类似于虚拟机,只是容器不是完整的操作系统,容器通常只包含必要的操作系统包和应用程序,这就是它们轻量级的原因。

下载Docker

官网

• docker官网:http://www.docker.com

仓库

• Docker Hub官网: https://hub.docker.com

Docker安装

前提说明

CentOS Docker 安装

前提条件

目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上,要求系统为64位、Linux系统内核版本为 3.8以上,这里选用Centos7.x

查看自己的内核

uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。

cat /etc/redhat-release
uname -r
安装步骤

CentOS7安装Docker
Install Docker Engine on CentOS | Docker Docs

确定你是CentOS7及以上版本

cat /etc/redhat-release

卸载旧版本

yum安装gcc相关

CentOS7能上外网

yum -y install gcc
yum -y install gcc-c++
安装需要的软件包

执行命令

yum install -y yum-utils
设置stable镜像仓库

推荐

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
安装DOCKER CE
yum -y install docker-ce docker-ce-cli containerd.io
启动docker
systemctl start docker

测试

docker version
docker run hello-world

卸载

• systemctl stop docker

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

• rm -rf /var/lib/docker

• rm -rf /var/lib/containerd

阿里云镜像加速

开放云原生应用-云原生(Cloud Native)-云原生介绍 - 阿里云

步骤:

注册一个属于自己的阿里云账户(可复用淘宝账号)

获得加速器地址连接

登陆阿里云开发者平台

选择容器镜像服务

粘贴脚本直接执行

直接粘

或者分步骤都行

mkdir -p /etc/docker
vim  /etc/docker/daemon.json
  #阿里云
{
  "registry-mirrors": ["https://{自已的编码}.mirror.aliyuncs.com"]
}

激活配置文件 重启服务器

systemctl daemon-reload
systemctl restart docker

测试

docker run hello-world

Docker常用命令

帮助启动类命令
启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令 --help
镜像命令
docker images

各个选项说明:

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签版本号

IMAGE ID:镜像ID

CREATED:镜像创建时间

SIZE:镜像大小

同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像

• OPTIONS说明:

• -a :列出本地所有的镜像(含历史映像层)

• -q :只显示镜像ID。

查找镜像
docker search [OPTIONS] 镜像名字
OPTIONS说明:
--limit : 只列出N个镜像,默认25个
docker search --limit 5 redis
docker pull 某个XXX镜像名字
下载镜像
·docker pull 镜像名字[:TAG]
·docker pull 镜像名字
·没有TAG就是最新版
·等价于
·docker pull 镜像名字:latest
docker pull ubuntu
删除镜像
docker rmi 某个XXX镜像名字ID
·docker rmi  -f 镜像ID
·删除多个
·docker rmi -f 镜像名1:TAG 镜像名2:TAG
·删除全部
docker rmi -f $(docker images -qa)
容器命令

#使用镜像centos:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

docker run -it centos /bin/bash 

i: 交互式操作。

-t: 终端。

centos : centos 镜像。

/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是/bin/bash。

要退出终端,直接输入 exit:
-a :列出当前所有正在运行的容器+历史上运行过的

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

-n:显示最近n个创建的容器。 docker ps -n 1

-q :静默模式,只显示容器编号。

·退出容器
关系 指向 进入正在运行的容器并以命令行交互

·两种退出方式

exit

run进去容器,exit退出,容器停止

ctrl+p+q

run进去容器,ctrl+p+q退出,容器不停止

·启动已停止运行的容器

·docker start 容器ID或者容器名

·重启容器

·docker restart 容器ID或者容器名

·停止容器

·docker stop 容器ID或者容器名

·强制停止容器

·docker kill 容器ID或容器名

·删除已停止的容器

·docker rm 容器ID

·一次性删除多个容器实例

·docker rm -f $(docker ps -a -q)
·docker ps -a -q | xargs docker rm

重要

·有镜像才能创建容器,这是根本前提(下载一个Redis6.0.8镜像演示)

·启动守护式容器(后台服务器)

关系 前后对比 - 指向 启动交互式容器(前台命令行)

·在大部分的场景下,我们希望 docker 的服务是在后台运行的, 我们可以过 -d 指定容器的后台运行模式。

·docker run -d 容器名

使用镜像centos:latest以后台模式启动一个容器

docker run -d centos

发布阿里云

Docker镜像commit操作案例

·docker commit提交容器副本使之成为一个新的镜像

·docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

·案例演示ubuntu安装vim

·从Hub上下载ubuntu镜像到本地并成功运行

·原始的默认Ubuntu镜像是不带着vim命令的

·外网连通的情况下,安装vim

docker容器内执行上述两条命令:

apt-get update
apt-get -y install vim

·启动我们的新镜像并和原来的对比

1 官网是默认下载的Ubuntu没有vim命令

2 我们自己commit构建的镜像,新增加了vim功能,可以成功使用。

本地镜像发布到阿里云
将本地镜像推送到阿里云

·本地镜像素材原型

·阿里云开发者平台
·https://promotion.aliyun.com

·点击个人实例

·选择镜像仓库

·进入管理界面获得脚本

·将镜像推送到阿里云

·将镜像推送到阿里云registry

·管理界面脚本

·脚本实例

·设置访问凭证,输入三行命令

将阿里云上的镜像下载到本地

·将本地上传的镜像删除

docker rmi -f 0940de0a64e8

·从Registry中拉取镜像

·查看拉取的镜像

启动容器:docker run -it  0940de0a64e8 /bin/bash
相关推荐
NiNg_1_23432 分钟前
使用Docker Compose一键部署
运维·docker·容器
萠哥啥都行36 分钟前
Linux安装Docker以及Docker入门操作
运维·docker·容器
王哲晓37 分钟前
Linux通过yum安装Docker
java·linux·docker
汀、人工智能1 小时前
修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)
docker·容器
吃面不喝汤662 小时前
如何配置和使用自己的私有 Docker Registry
运维·docker·容器
Leighteen2 小时前
Docker常用命令
docker·容器
丶21362 小时前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
codelife3213 小时前
在Docker容器中执行命令
容器
petaexpress3 小时前
常用的k8s容器网络模式有哪些?
网络·容器·kubernetes
小安运维日记6 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql