文章目录

  • 安装和卸载
  • 检查
  • 卸载旧版本
  • 安装
  • 镜像加速
  • 卸载
  • 镜像
  • 查找镜像
  • 拉取镜像
  • 列出镜像
  • 运行镜像启动容器
  • 删除镜像
  • 容器
  • 启动容器
  • 查看容器
  • 停止容器
  • 进入容器
  • 删除容器
  • 查看控制台


安装和卸载

以 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 <FQPN> 
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镜像,有些是有限制的。总的来说还是阿里云镜像好用。

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 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/


删除镜像、容器、配置文件等内容:

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>
  • -d: 让容器在后台运行。
  • -P: 将容器内部使用的网络端口随机映射到我们使用的主机上。
  • docker run -d -P influxdb:1.8.10
  • -p: 参数来设置指定的端口
  • -v:将主机/opt/docker_v/mysql/conf目录挂载到容器的/etc/mysql/conf.d
  • 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 一样来输出容器内部的标准输出。