一、Centos安装DOCKER
文档地址:https://docs.docker.com/install/linux/docker-ce/centos/
docker hub地址:https://hub.docker.com/_/centos/
前提条件
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
查看内核版本
[he@NginxTest ~]$ uname -r
3.10.0-862.el7.x86_64
查看centos版本
[he@NginxTest ~]$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
安装
以下命令均为root权限执行。
如果之前安装过,先卸载旧版。
目录/var/lib/docker/的内容,包括镜像,容器,数据卷以及网络配置将被保留
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
1、安装 yum-utils , 使用 yum-config-manager 工具设置Yum源, 后面两个是 devicemapper驱动依赖
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
2、使用以下命令来添加docker的yum源。
官网命令(此处可能会报错 (原因是国内访问不到docker官方镜像的缘故)):
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
3、安装最新版本的Docker Engine-Community和containerd。
yum install docker-ce docker-ce-cli containerd.io
安装成功后,会创建一个用户组docker
。
4、启动docker
systemctl start docker
5、通过运行hello-world
映像来验证是否正确安装了Docker Engine-Community 。
docker run hello-world
会报错,国外镜像仓库慢,跟maven一个道理,修改仓库地址,下一步讲的内容
配置镜像服务
登录阿里云,获取加速器地址
弹性计算–>容器镜像服务–>管理控制台–>镜像加速器
然后根据你的linux发行版查看对应操作文档,我的为Centos7,具体步骤如下:
在/etc/docker/daemon.json文件中修改配置,中括号里为加速器地址,如没有该文件,创建即可。
{
"registry-mirrors": ["https://01k52ymj.mirror.aliyuncs.com"]
}
接着执行命令
# daemon-reload: 重新加载某个服务的配置文件,如果新安装了一个服务,归属于 systemctl 管理,要使新服务的服务程序配置文件生效,需重新加载。
systemctl daemon-reload --加载daemon.json
systemctl restart docker --重启docker
操作完成以后再运行hello-world
就能执行成功了,结果如下:
[root@NginxTest docker]# docker run hello-world
Unable to find image 'hello-world:latest' locally --本地没有hello-world镜像
latest: Pulling from library/hello-world --拉取镜像
1b930d010525: Pull complete
Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
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/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
二、DOCKER 命令
注意:镜像名称后面没加:TAG,即默认是最新版,为:latest
1、docker --help
帮助命令,会列出所有docker命令,查看具体一个命令的说明,使用docker command --help查看
2、docker images
列出本地主机上的镜像
语法
[root@NginxTest docker]# docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show numeric IDs
-a, --all 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
--digests 显示镜像的摘要信息
-f, --filter filter 根据提供的条件过滤输出
--format string
--no-trunc 不截断输出,显示完整的镜像信息
-q, --quiet 只显示镜像ID
示例
[root@NginxTest docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 10 months ago 1.84kB
docker images -a
docker images -q
docker images -qa
第一行为表头,表头说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
如果你不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像,即最新
2、docker search
从Docker Hub查找镜像
语法
[root@NginxTest ~]# docker search --help
Usage: docker search [OPTIONS] TERM
Search the Docker Hub for images
Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
-f, --filter filter 根据提供的条件过滤输出,比如点赞数过滤,-f=stars=30,过滤出点赞数大于30的,模式是-f=name=value
--format string
--limit int 最大搜索结果数(默认为25)
--no-trunc 不截断输出,显示完整的镜像信息
示例
docker search -f=stars=30 tocmat
补充:
如果docker search报错,报错信息如下:
[root@NginxTest /]# docker search mysql
Error response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: dial tcp: lookup index.docker.io on 192.168.52.2:53: read udp 192.168.52.145:38063->192.168.52.2:53: i/o timeout
1、修改/etc/resolv.conf,把里面内容清除(我是把里面内容注释了),修改为:
nameserver 8.8.8.8
nameserver 8.8.8.4
然后重启网络服务即可
systemctl restart network
2、编辑/etc/docker/daemon.json文件,添加如下内容:
"dns": ["8.8.8.8", "8.8.4.4"]
3、docker pull
从镜像仓库中拉取或者更新指定镜像
[root@NginxTest ~]# docker pull --help
Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Pull an image or a repository from a registry
Options:
-a, --all-tags Download all tagged images in the repository
--disable-content-trust Skip image verification (default true)
-q, --quiet Suppress verbose output
-a, --all-tags 下载存储库中的所有标记图像
--disable-content-trust 跳过镜像验证
-q, --quiet 禁止详细输出
示例
# tomcat后没接:TAG,表示拉取最新版
docker pull tomcat
4、docker rmi
删除本地一个或多少镜像。
[root@NginxTest ~]# docker rmi --help
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
Options:
-f, --force Force removal of the image
--no-prune Do not delete untagged parents
-f, --force 强制删除镜像
--no-prune 不删除未标记的父级