Docker(一)Hello Docker
Docker是基于Go语言实现的开源容器项目。如果要把Docker和虚拟机相比较,Docker更加轻量,易部署和迁移。借助Docker可以大幅提示开发和运维效率。
Docker核心概念
1. 镜像 image
镜像类似于模板,通过模板可以创建出很多实例。
2. 容器 container
容器就是模板(镜像)创建出的实例。容器可以类比为虚拟机,但比虚拟机更轻量,在一台物理机上可以运行多个容器。容器内再运行各类应用,例如MySQL、webapp等。
3. 仓库 repository
仓库是存放镜像的地方,每一个仓库存放一类镜像,例如Ubuntu仓库只存放Ubuntu操作系统的镜像。仓库中的镜像可以有多个,通过 标签(tag) 来区分。
没有规定标签值具体表示什么含义,但通常情况下标签会用来表示版本号。因此镜像通常会表示为 repository:tag,如果不指定tag,就表示tag是latest,也就是该镜像的最新版本。
4. 注册服务器 registry
Registry是存放仓库的地方,有点类似于GitHub。Registry/仓库/镜像之间的关系如下图所示:
Docker安装
Linux安装
以centos为例,要求centos7以上。
# 安装必要的软件包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 添加yum仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# yum install
sudo yum install docker-ce docker-ce-cli containerd.io
# 启动docker
sudo systemctl start docker
# 把用户加入docker组
sudo usermod -aG docker your-userMacOS安装
下载安装Docker Desktop for Mac即可,详情可查看https://docs.docker.com/docker-for-mac/,注意操作系统版本号的限制。
Windows安装
下载安装Docker Desktop for Windows即可,详情可查看https://docs.docker.com/docker-for-windows/,注意需要开启Hyper-V虚拟化。
提示
Windows7和Windows8都只能通过虚拟机的方式运行docker容器,Windows10才真正原生支持docker。因此如果要在Windows平台上上运行docker,建议操作系统使用Windows10。
一些初始化配置
在linux服务器上,配置文件存放位置/etc/docker/daemon.json
在mac上,配置文件存放位置~/.docker/daemon.json
在mac或windows上也可以进入Preferences菜单进行配置
{
"debug" : true,
"live-restore": true, # 关闭docker daemon后不关闭容器
"data-root": "/docker/path/root", # docker运行的根目录,默认是/var/lib/docker
"experimental" : false,
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://mirror.ccs.tencentyum.com"
] # 配置国内docker镜像服务器的mirror
}配置后重启docker daemon。
Hello World
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
......如上所示,执行了run hello-world命令后,输出了一些信息。实际上Docker完成了这些事:
- docker客户端访问docker后台服务,查询是否有
hello-world这个镜像 - 由于首次使用本地还不存在镜像,尝试去Docker Hub上pull
hello-world:latest镜像 - 根据该镜像创建了一个docker容器,且容器被运行
- 容器的运行效果就是输出后面的一段文字
此时运行docker images可以看到hello-world镜像已经下载保存到本地。