以 root 用户执行
sudo -i
查看 Linux 发行版本
cat /etc/os-release
查看内核版本
uname -r
Docker 支持 64 位版本 CentOS 7/8,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如
overlay2
存储层驱动)无法使用,并且部分功能可能不太稳定。
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 或者
yum remove docker*
# 更新到最新 yum 包
yum update -y
# 卸载旧版本(如果安装过旧版本的话)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
# 安装需要的软件包
# yum-util 提供 yum-config-manager 功能, 另外两个是 devicemapper 驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置 yum 源设置稳定的仓库,官方源地址(比较慢)
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 阿里云
# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 清华大学源
# yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 查看所有仓库中所有 docker 版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
# 安装最新稳定版
yum install -y docker-ce
# 安装指定版本
# yum install -y
yum install -y docker-ce-18.03.1.ce
# 启动并加入开机启动
systemctl start docker
systemctl enable docker
# 验证安装是否成功(有 client 和 service 两部分表示 docker 安装启动都成功了)
docker version
Docker在合并镜像时默认使用的是Docker Hub的地址,在国内,Docker Hub下载速度会非常慢。
在不使用代理加速的情况下,虽然还能使用。但是使用镜像加速会好很多,国内也有很多docker镜像,有些是有限制的。总的来说还是阿里云镜像好用。
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
镜像测试 这个 GitHub 仓库,我们会在此更新各个镜像地址的状态。
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。
先执行以下命令,查看是否在 docker.service
文件中配置过镜像地址。
systemctl cat docker | grep '\-\-registry\-mirror'
如果该命令有输出,那么请执行 $ systemctl cat docker
查看 ExecStart=
出现的位置,修改对应的文件内容去掉 --registry-mirror
参数及其值,并按接下来的步骤进行配置。
如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件):
由于镜像服务可能出现宕机,建议同时配置多个镜像。
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务:
systemctl daemon-reload
systemctl restart docker
检查加速器是否生效
docker info
如果从结果中看到了如下内容,说明配置成功。(在最后面)
Registry Mirrors:
https://hub-mirror.c.163.com/
卸载Docker之前,最好删除所有容器,镜像,卷和网络。否则你计算机将会存在大量docker镜像,docker的临时数据。占用着你磁盘空间。
删除镜像、容器、配置文件等内容:
rm -rf /var/lib/docker
删除安装包:
yum remove containerd.io docker-compose-plugin docker-ce
Docker Hub 上有大量的高质量的镜像可以用。
也可以使用 docker search 命令来搜索镜像。
docker search nginx
从 Docker 镜像仓库获取镜像的命令是 docker pull
。其命令格式为:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker pull influxdb:1.8.10
docker image ls
有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。
docker run -it --rm influxdb:1.8.10 bash
启动里面的
bash
并且进行交互式操作.
-it
:这是两个参数,一个是-i
:交互式操作,一个是-t
终端。我们这里打算进入bash
执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm
:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动docker rm
。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用--rm
可以避免浪费空间。
influxdb:1.8.10
:这是指用influxdb:1.8.10
镜像为基础来启动容器。
bash
:放在镜像名后的是 命令,这里我们希望有个交互式 Shell,因此用的是bash
。通过
exit
退出了这个容器。
docker image rm [选项] <镜像1> [<镜像2> ...]
其中,
<镜像>
可以是镜像短 ID
、镜像长 ID
、镜像名
或者镜像摘要
。
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(exited
)的容器重新启动。
因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
# 示例 前台运行
docker run -p 8086:8086 influxdb:1.8.10
# 后台运行
docker run -d -p 8086:8086 influxdb:1.8.10
# 启动一个已停止的容器
docker start <容器ID>
docker run -d -P influxdb:1.8.10
docker run - v /opt/docker_v/mysql/conf:/etc/mysql/conf.d
# 查看所有运行中的容器
docker container ls
# 或者
docker ps
# 查看所有的容器命令包括已停止的
docker ps -a
docker stop <容器ID>
docker exec -it <容器ID> bash
docker exec -it <容器ID> /bin/bash
// 如果上面报错就用下面这个
docker exec -it <容器ID> /bin/sh
docker rm -f <容器ID>
# 清理掉所有处于终止状态的容器
docker container prune
docker logs [ID或者名字] 可以查看容器内部的标准输出。
docker logs -f bf08b7f2cd89
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
参考:
https://www.jianshu.com/p/7d9ff93bc89e
https://yeasy.gitbook.io/docker_practice