Docker-容器-基础
本文最后更新于:2021年5月28日 中午
环境
- Centos7 腾讯云服务器
官方文档
https://docs.docker.com/install/linux/docker-ce/centos/
Docker的优点
快速,一致地交付您的应用程序
Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。
- 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
- 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
- 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
- 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
响应式部署和扩展
Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。
Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。
在同一硬件上运行更多工作负载
Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。
Docker 架构
Docker 包括三个基本概念:
- 镜像(Image)
Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 - 容器(Container)
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 - 仓库(Repository)
仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
概念 | 说明 |
---|---|
Docker 镜像(Images) | Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。 |
Docker 容器(Container) | 容器是独立运行的一个或一组应用,是镜像运行时的实体。 |
Docker 客户端(Client) | Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。 |
Docker 主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
Docker Registry | Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。 |
Docker Machine | Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 |
安装
Docker CE
即社区免费版Docker EE
即企业版,强调安全,但需付费使用
此处为Docker CE
安装的前提条件
CentOS7 发行版 64位
内核版本3.10以上
1 |
|
过程
- 卸载旧版本
1
2
3
4
5
6
7
8sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine - 安装必要的包
1
2
3sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 - 设置可靠的存储库
1
2
3sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo - 安装Docker-ce
1
yum install -y docker-ce
- 启动Docker-ce
1
systemctl start docker
- 测试运行 hello-world由于本地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运行,看到以上界面说明Docker已经成功安装
1
docker run hello-world
将docker修改为国内镜像源
国内pull
很慢, 需要更换镜像源
可选的国内加速地址有不少,你应该稍微测试一下能不能用,毕竟这东西不时出问题
镜像信息 | 内容 |
---|---|
Docker中国区官方镜像 | https://registry.docker-cn.com |
网易 | http://hub-mirror.c.163.com |
ustc | https://docker.mirrors.ustc.edu.cn |
中国科技大学 | https://docker.mirrors.ustc.edu.cn |
阿里云容器 | https://cr.console.aliyun.com/ 首页点击“创建我的容器镜像” 得到一个专属的镜像加速地址 |
- 打开/创建配置文件
没有这个文件就创建1
vim /etc/docker/daemon.json
- 修改配置文件
填入镜像地址配置,保存退出1
2
3{
"registry-mirrors": ["https://registry.docker-cn.com"]
} - 重新加载配置
1
systemctl daemon-reload
- 重启Docker服务
1
sudo service docker restart
常用操作
拉取镜像
1
docker pull <镜像名>
容器启动
1
docker run <参数> <镜像名>
常用参数
参数 | 简写 | 意义 |
---|---|---|
–detach | -d | 在后台运行容器,并且打印容器id |
–interactive | -i | 即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用 |
–tty | -t | 分配一个伪tty,一般与 -i 连用 |
-i
-t
-d
可以简写为-itd
查看容器运行情况
1 |
|
可填入-a
以查看所有的容器
其他操作
卸载Docker-ce
1 |
|
查看Docker版本
1 |
|
问题
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!