持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天,点击查看活动详情
1 安装环境说明
这里将Docker安装到CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。
2 Docker安装与使用
2.0 windows安装
1 windows安装(不建议)http://get.daocloud.io/
2.1安装Docker(乌班图)
2.1.1 设置yum源
# 格式: yum-config-manager --add-repo yum源加速地址
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 为什么要设置yum源?
# 因为yum源默认是国外的,设置成国内的yum源有加速效果.类似配置Maven的私服

编辑
2.1.2 使用yum命令在线安装
# 卸载(如果没有安装过无需卸载)
yum remove docker docker-common docker-selinux docker-engine
rm -rf /var/lib/docker
# yum install -y 软件包列表
yum install -y docker-ce
安装成功的截图:

编辑
2.2安装后查看Docker版本
# 查看docker的版本号
docker -v
出现如↓
图字样,则表示Docker
安装成功
编辑
注意:自从区分docker-ce和docker-ee之后,docker最初始的版本是17.03,也就是17年发布的,所有17是老版本和新版本的分水岭
编辑
2.3启动与停止Docker
systemctl命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。
2.3.1 启动docker
systemctl start docker
2.3.2 停止docker
systemctl stop docker
2.3.3 重启docker
systemctl restart docker
2.3.4 查看docker状态
systemctl status docker
2.3.5 开机启动
systemctl enable docker
2.3.6 查看docker概要信息
docker info
2.3.7 查看docker帮助文档
docker --help
1.什么是Docker镜像
Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像。
2 Docker镜像操作
2.1 列出镜像
2.1.1 列出docker下的当前docker服务所在的系统里面所有镜像
docker images
编辑
REPOSITORY:镜像所在的仓库名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小 这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
2.1.2 同一个仓库下的不同镜像
Docker提供了一种称为标签(Tag)的功能。每个镜像在列出来时都带有一个标签,例如12.10、12.04等等。每个标签对组成特定镜像的一些镜像层进行标记(比如,标签12.04就是对所有Ubuntu12.04镜像层的标记)。这种机制使得同一个仓库中可以存储多个镜像。
在运行同一个仓库中的不同镜像时,可以通过在仓库名后面加上一个冒号和标签名来指定该仓库中的某一具体的镜像,例如
docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash
表明从镜像Ubuntu:12.04启动一个容器,而这个镜像的操作系统就是Ubuntu:12.04。在构建容器时指定仓库的标签也是一个好习惯。
2.3搜索镜像
如果需要从网络中查找需要的镜像,可以通过以下命令搜索:
# 搜索镜像:
方式一:https://hub.docker.com/ 点点点搜索
方式二:docker search 镜像名字
# # search作用:
搜索Docker Hub(镜像仓库)上的镜像
# 命令格式:
docker search [OPTIONS] TERM
# 命令参数(OPTIONS):
-f, --filter filter 根据提供的格式筛选结果
--format string 利用Go语言的format格式化输出结果
--limit int 展示最大的结果数,默认25个
--no-trunc 内容全部显示
# 命令演示
docker search -f is-offical=true tomcat
docker search tomcat
编辑
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
2.4拉取镜像
2.4.1从Docker Hub拉取
Docker Hubhttps://hub.docker.com/
Docker镜像首页,包括官方镜像和其它公开镜像。Docker Hub上最受欢迎的10大镜像(通过Docker registry API获取不了镜像被pull的个数,只能通过镜像的stars数量,来衡量镜像的流行度。毫无疑问,拥有最高stars数量的库都是官方库)。
由于国情的原因,国内下载 Docker HUB 官方的相关镜像比较慢,可以使用国内(docker.io)的一些镜像加速器,镜像保持和官方一致,关键是速度块,推荐使用。
2.4.2 Mirror与Private Registry的区别
Private Registry(私有仓库):开发者或者企业自建的镜像存储库,通常用来保存企业内部的 Docker 镜像,用于内部开发流程和产品的发布、版本控制。
Mirror:代理中转服务,比如daocloud提供的Mirror服务,直接对接Docker Hub的官方Registry。Docker Hub 上有数以十万计的各类 Docker 镜像。 在使用Private Registry时,需要在Docker Pull 或Dockerfile中直接键入Private Registry 的地址,通常这样会导致与 Private Registry 的绑定,缺乏灵活性。
使用 Mirror 服务,只需要在 Docker 守护进程(Daemon)的配置文件中加入 Mirror 参数,即可在全局范围内透明的访问官方的 Docker Hub,避免了对 Dockerfile 镜像引用来源的修改。
2.4.3 拉取镜像
# 拉取指定版本
docker pull centos:7
# 拉取最新版本
docker pull centos
目前国内访问docker hub速度上有点尴尬,使用docker Mirror势在必行。现有国内提供docker镜像加速服务的商家有不少,下面重点ustc镜像。 2.4.4
2.4.4 国内ustc镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
Docker 镜像使用帮助 - LUG @ USTCDocker 镜像使用帮助https://lug.ustc.edu.cn/wiki/mirrors/help/docker 步骤:
(1)编辑该文件:vi /etc/docker/daemon.json PS: 如果该文件不存在就手动创建;另外有可能如果没有vim 命令则使用vi命令即可。
(2)在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
还有本地阿里云的镜像地址,速度更快
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
3)一定要重启docker服务,如果重启docker后无法加速,可以重新启动OS,然后通过docker pull命令下载镜像 。
service docker restart
编辑
2.4 查看镜像
# 查看机器上有哪些镜像
# 命令:docker images
# 解释:
REPOSITORY TAG IMAGE ID CREATED SIZE
镜像名字 版本 id号 创建时间 大小
编辑
2.5 运行镜像
# 命令:
docker run 镜像名字
docker run hello-world
# 例:
第一个hello-world(没有任何意义)
docker run hello-world
1 客户端连到服务端,服务下载了hello-world镜像
2 通过镜像跑起容器来
3 容器输出一些东西,通过服务端发送给客户端,客户端展示在窗口里了
2.6 删除镜像
删除镜像方式1:根据仓库的名称(镜像的名称)来删除 还可以使用image_id来进行删除。
# 命令:
docker rmi 镜像名字/Id号
# 注意:
1.如果还有基于这个镜像的容器,是不允许删除镜像的
2.可以先删除容器,在删除镜像
# 查询容器依赖
docker ps -a
# 在删除要不允许的镜像
docker rm 容器/id
删除镜像方式2:
docker rmi `docker images -q`:删除所有镜像
编辑
2.7 镜像容器的实质
镜像容器是可以看作:
-镜像就是一堆文件,这堆文件通过docker跑起来,就是容器,你现在就把他当成,一个操作系统内跑了这个软件(比如就是:centos+redis)
-假设centos7的镜像跑起来,此时容器你就当成在你宿主机上跑了一个centos7的操作系统(虚拟机)