一、安装docker
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
通过 uname -r 命令查看你当前的内核版本
uname -r
- yum 包更新到最新
sudo yum update
3、卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源,下面是阿里数据源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装。
7.安装docker
$ yum list docker-ce --showduplicates | sort -r
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
8、启动并加入开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version
10、如果之前安装过旧版本的docker,安装会报错:
Transaction check error: file /usr/bin/docker from install of
docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from
package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file
/usr/bin/docker-containerd from install of
docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from
package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file
/usr/bin/docker-containerd-shim from install of
docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from
package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64 file
/usr/bin/dockerd from install of
docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from
package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
卸载旧版本的包
sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
再次安装docker
$ sudo yum install docker-ce
二、配置镜像加速器
1./etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件)
第一种,使用官方中国镜像
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
第二种,使用阿里云专用镜像
首先,进入阿里云控制台,搜索容器镜像服务
2.重启服务
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
3.查看服务器是否生效
配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info
,拉到最底下,如果从结果中看到了如下内容,说明配置成功。
Registry Mirrors:
https://registry.docker-cn.com/
三、docker镜像简单操作
1.获取镜像
从 Docker 镜像仓库获取镜像的命令是 docker pull
。其命令格式为:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
拉取镜像的时候可能会出现以下问题
error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/
出现这个问题,一般的原因是无法连接到 docker hub,通过:
systemctl stop docker
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://f2d6cb40.m.daocloud.io\"" | sudo tee -a /etc/default/docker
service docker restart
然后就能正常使用docker pull
上面的命令中没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub(https://hub.docker.com/
)获取镜像。
从下载过程中可以看到我们之前提及的分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。
2.运行镜像
有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。以上面的 mysql为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。
[root@localhost sysconfig]# docker run -it mysql:5.7.28 bash
root@820d3989a81a:/# ls -al /etc/mysql/ total 8 drwxr-xr-x. 4 root
root 94 Oct 17 04:49 . drwxr-xr-x. 1 root root 66 Nov 10 15:17 …
drwxr-xr-x. 2 root root 62 Oct 17 04:49 conf.d lrwxrwxrwx. 1 root
root 24 Oct 17 04:49 my.cnf -> /etc/alternatives/my.cnf
-rw-r–r--. 1 root root 839 Jul 9 2016 my.cnf.fallback
-rw-r–r--. 1 root root 1215 Sep 27 07:17 mysql.cnf drwxr-xr-x. 2 root root 24 Oct 17 04:49 mysql.conf.d
docker run 就是运行容器的命令,我们这里简要的说明一下上面用到的参数。
-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
mysql:5.7.28:这是指用 mysql:5.7.28 镜像为基础来启动容器。
bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash。
进入容器后,我们可以在 Shell 下操作,执行任何所需的命令。
最后我们通过 exit
退出了这个容器。
3.列出镜像
要想列出已经下载下来的镜像,可以使用 docker image ls 命令。
列表包含了 仓库名、标签、镜像 ID、创建时间 以及 所占用的空间。
我们可以发现size的大小跟hub里面的大小不一样,原因是hub里边针对的是压缩后的大小,这里显示的是实际大小。
虚悬镜像
<none> <none> 00285df0df87 5 days ago 342 MB
有时候我们发现了上面的现象,这就是虚悬镜像,使用了docker pull 或者docker build可能会出现这正情况。就是当我们拉取的镜像是在原来的基础上更新的,那么之前的镜像就会变成虚悬镜像。
一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,可以用下面的命令删除。
docker image prune
3.删除本地镜像
如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:
docker image rm [选项] <镜像1> [<镜像2> ...]
删除之前要先删除容器。以下命令查看终止的容器:
docker ps -a
删除容器:
docker rm <容器id>
删除镜像:
docker image rm cd3ed0dfff7e
或者以下命令强制删除镜像:
docker image rm -f <镜像id>
四、docker容器基本操作
1.启动容器
docker run -it tomcat bash
启动一个 bash 终端,允许用户进行交互。
其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。
2.启动已终止容器
使用docker ps -a
查看已经终止的容器,接着利用 docker restart <容器id>
命令,直接将一个已经终止的容器启动运行。
2.1.查看正在运行的容器
docker ps
3.守护太运行容器
更多的时候,需要让 Docker 在后台运行而不是直接把执行命令的结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现。
docker run -p 8081:8080 --name tomcat1 -d tomcat
8081是宿主机端口,8080是容器端口,tomcat1是容器名字,-d,守护态运行。
4.终止容器
可以使用 docker container stop
来终止一个运行中的容器。
docker container stop <容器id>/<容器名字>
5.进入容器
使用exec 命令
-i -t 参数
docker exec 后边可以跟多个参数,这里主要说明 -i -t 参数。
只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。
当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。
docker exec -it <容器id> bash