Docker 是基于 Go 语言开发的,可以实现一次构建,多出运行
是一种 DevOps(开发运维)模式
Docker 架构图
图片来源与网络
安装教程
Step1 卸载旧版本
如果之前从未安装过,则可以跳过
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
Step2 设置存储库
# 安装 yum-utils 包(包含了 yum-config-manager 工具)
$ sudo yum install -y yum-utils
# 添加 Docker 存储库
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装要求:CentOS 7 以上,64 位系统,系统内核版本 3.10+
查看 Linux 系统内核版本:
$ uname -r
or
$ cat /etc/redhat-release
配置阿里云镜像加速器
# 创建 Docker 配置文件
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的阿里云加速地址"]
}
EOF
# 重新加载
$ sudo systemctl daemon-reload
# 重启 Docker
$ sudo systemctl restart docker
运行一个镜像
镜像就好比 Java 中的类,一个镜像可以生成多个容器(一个类可以实例出多个对象),容器就好比对象。
$ docker run hello-world
运行 run
时会先在本机存储库中寻找该的镜像;
- 如果有则以该镜像生成容器实例运行;
- 如果没有则去远程(已配置的阿里云)存储库中拉取到本地再运行
- 远程仓库能找到:下载该镜像到本地,并生成容器实例运行;
- 远程仓库找不到:返回错误信息;
执行结果:
Unable to find image 'hello-world:latest' locally
latest: Pulling from hello-world
882673a3c694: Pull complete
83f0de727d85: Pull complete
Digest: sha256: 4555e23a9cf5ala216bd8b0d1b08a25e4144c2ecf6adb26adb26df9620245ba99529
Status: Downloaded newer image for hello-world: latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
Command 命令
帮助命令
# 查看 Docker 版本信息
$ docker version
# 查看 Docker 的详细信息(容器、镜像等。比 docker version 更详细)
$ docker info
# 帮助信息
$ docker --help
镜像命令
列出本机所有镜像
$ docker images
Options(选项)
-a 列出本机所有镜像(包含中间映像层 - 镜像是分层的)。
-q 只查询出(镜像 ID)一列。
--digests 显示镜像摘要信息(描述)
--no-trunc 显示完整的镜像 ID
运行结果
仓库源 标签 镜像 ID 创建时间 大小
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 3 months ago 13.3kB
注意:同一仓库源下可以有多个 TAG,代表这个仓库源下的不同版本,可以使用 REPOSITORY:TAG 来定义不同的镜像。
如果不指定镜像版本标签,默认为 latest(最新版本)镜像
从 Docker Hub 中查找镜像
虽然已经配置了阿里云镜像加速,但是搜索镜像还是会去 Docker Hub 中去找。
# 查询镜像
$ docker search tomcat