首选需要大家搭建好Docker环境,没有环境的可以查看前面的详细讲解安装Docker引擎的文章(在CentOS上安装Docker引擎_征服bug的博客-CSDN博客)
首先是安装好Docker 引擎
一,如何启动与停止引擎服务
#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#重启docker
systemctl restart docker
#查看docker状态
systemctl status docker
二,docker引擎安装校验与查看docker的详细信息
#查看docker概要信息
docker info
#查看docker帮助文档
docker –help
#安装校验
docker -v #docker的版本号
docker version #docker的详细信息
三,配置镜像加速
可以通过配置国内镜像源的方式,从国内获取镜像,提高拉取速度。这里介绍中国科学技术大学 (LUG@USTC)的开源镜像:https://docker.mirrors.ustc.edu.cn 和网易的开源镜像:http://hub-mir ror.c.163.com
编辑文件 daemon.json
mkdir -p /etc/docker
vi /etc/docker/daemon.json
在文件中输入以下内容并保存
{
"registry-mirrors": ["http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"]
}
重新加载配置信息及重启 Docker 服务
# 重新加载某个服务的配置文件
systemctl daemon-reload
# 重新启动
docker sudo systemctl restart docker
拉去
docker run hello-world 命令执行流程图如下。
Docker命令
查看镜像
docker images
REPOSITORY :镜像在仓库中的名称,本文中以后都简称镜像名称
TAG :镜像标签
IMAGE ID :镜像
ID CREATED :镜像的创建日期(不是获取该镜像的日期)
SIZE :镜像大小
这些镜像都是存储在 Docker 宿主机的 /var/lib/docker 目录下。
搜索镜像
如果你需要从网络中查找需要的镜像,可以通过以下命令搜索。
docker search 镜像名称
NAME :镜像名称
DESCRIPTION :镜像描述
STARS :用户评价,反应一个镜像的受欢迎程度
OFFICIAL :是否为官方构建
AUTOMATED :自动构建,表示该镜像由
Docker Hub 自动构建流程创建的。
拉取镜像
拉取镜像就是从中央仓库下载镜像到本地。
docker pull 镜像名称
通过查看 tag 信息,如果我们要下载 centos7 的镜像。
docker pull centos:7
删除镜像
# 删除单个镜像
docker rmi 镜像ID
# 删除多个镜像
docker rmi 镜像ID 镜像ID 镜像ID
docker images -q 可以查询到所有镜像的 ID,通过组合命令可以实现删除所有镜像的操作。
docker rmi `docker images -q`
注意:如果通过某个镜像创建了容器,则该镜像无法删除。
解决办法:先删除镜像中的容器,再删除该镜像。
容器相关命令
查看容器
查看正在运行的容器。
docker ps
字段说明:
CONTAINER ID :容器 ID
IMAGE :所属镜像
COMMAND :
CREATED :创建时间
STATUS :容器状态
PORTS :端口
NAMES :容器名称
查看停止的容器
docker ps -f status=exited
查看所有容器(包括运行和停止)。
docker ps -a
查看容器的ID
docker ps -q
查看最后一次运行的容器。
docker ps -l
列出最近创建的 n 个容器。
docker ps -n 5
查看docker内容器的运行状态
docker stats
创建与启动容器
格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
选项:
-i :表示运行容器;
-t :表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪 终端;
--name :为创建的容器命名;
-v :表示目录映射关系(前者是宿主机目录,后者是映射到容器上的目录),可以使用多个 -v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上;
-d :在 run 后面加上 -d 参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登 录容器,如果只加 -i -t 两个参数,创建容器后就会自动进容器里);
-p :表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个 -p 做多个端口 映射。
-P :随机使用宿主机的可用端口与容器内暴露的端口映射。
创建并进入容器
下面这行命令的意思就是通过镜像 AA 创建一个容器 BB,运行容器并进入容器的 /bin/bash 。
docker run -it --name 容器名称 镜像名称:标签 /bin/bash
注意:Docker 容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为是空闲状态,就 会自动退出。
退出当前容器:exit
守护式方式创建容器
docker run -di --name 容器名称 镜像名称:标签
登录守护式容器方式
docker exec -it 容器名称|容器ID /bin/bash
停止与启动容器
# 停止容器
docker stop 容器名称|容器ID
# 启动容器
docker start 容器名称|容器ID
# 重启容器
docker restart 容器名称|容器ID
# 停止容器
docker kill 容器名称|容器ID
删除容器
# 删除指定容器
docker rm 容器名称|容器ID
# 删除多个容器
docker rm 容器名称|容器ID 容器名称|容器ID
文件拷贝
如果我们需要将文件拷贝到容器内可以使用 cp 命令。
格式:docker cp 需要拷贝的文件或目录 容器名称:容器目录
也可以将文件从容器内拷贝出来(命令在宿主机中使用)。
docker cp 容器名称:容器目录 需要拷贝的文件或目录
目录挂载(容器数据卷操作)
创建容器添加 -v 参数,格式为 宿主机目录:容器目录 ,
例如:
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7
# 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
匿名挂载
匿名挂载只需要写容器目录即可,容器外对应的目录会在 /var/lib/docker/volumes 中生成。
# 匿名挂载
docker run -di -v /usr/local/data --name centos7-02 centos:7
# 查看 volume 数据卷信息
docker volume ls
具名挂载
具名挂载就是给数据卷起了个名字,容器外对应的目录会在 /var/lib/docker/volume 中生成。
# 具名挂载
docker run -di -v docker_centos_data:/usr/local/data --name centos7-03 centos:7
# 查看 volume 数据卷信息
docker volume ls
指定目录挂载
一开始给大家讲解的挂载方式就属于指定目录挂载,这种方式的挂载不会在 /var/lib/docker/volume 目录生成内容。
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7 # 多目录挂载
docker run -di -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名
查看目录挂载关系
通过 docker volume inspect 数据卷名称 可以查看该数据卷对应宿主机的目录地址。
docker volume inspect docker_centos_data
通过 docker inspect 容器ID或名称 ,在返回的 JSON 节点中找到 Mounts ,可以查看详细的数据 挂载信息。
只读/读写挂载
# 只读。只能通过修改宿主机内容实现对容器的数据管理。
docker run -it -v /宿主机目录:/容器目录:ro 镜像名
# 读写,默认。宿主机和容器可以双向操作数据。
docker run -it -v /宿主机目录:/容器目录:rw 镜像名
volumes-from(继承)
# 容器 centos7-01 指定目录挂载
docker run -di -v /mydata/docker_centos/data:/usr/local/data --name centos7-01 centos:7 # 容器 centos7-04 和 centos7-05 相当于继承 centos7-01 容器的挂载目录
docker run -di --volumes-from centos7-01:ro --name centos7-04 centos:7 docker run -di --volumes-from centos7-01:rw --name centos7-05 centos:7
查看容器 IP 地址
我们可以通过以下命令查看容器的元信息。
docker inspect 容器名称|容器ID
也可以直接执行下面的命令直接输出 IP 地址。
格式:docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器ID