将docker的安装和一些命令的使用进行简单的记录,仅供自己使用
- Docker安装
1.docker需要linux内核最低为3.10版本,查看操作系统版本
centos查看系统内核与系统版本等信息
uname -r 查看当前系统版本的详细信息
cat /etc/redhat-release
- 安装需要的软件包, 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
- 查看所有仓库中所有docker版本,并选择特定版本安装.
yum list docker-ce --showduplicates | sort -r
- 安装Docker,命令:yum install docker-ce-版本号,我选的是17.12.1.ce
yum install docker-ce-17.12.1.ce
如果提示:Delta RPMs disabled because /usr/bin/applydeltarpm not installed
则执行yum -y install deltarpm
- 启动Docker,命令:systemctl start docker,然后加入开机启动
systemctl start docker (启动docker)
systemctl enable docker(加入开机启动中)
systemctl stop docker (停止docker)
systemctl status docker (查看docker状态)
- Docker使用
docker run 镜像名 (从指定的镜像中启动一个容器)
docker run可使用的选项
--detach在后台运行
--name <一个名字> 给容器指定一个名称
docker run --interactive --tty \ //interactive表示保持输入输出流对docker容器开放,即使容器没有终端连接, tty告诉docker给容器分配一个虚拟终端,从而可以发信号给容器
--link web:web \
--name web_test \
busybox:latest /bin/sh
docker help 或者 docker help 命令 (查看docker的命令帮助)
docker ps 查看正在运行的容器
docker restart 容器名 //重启容器
docker exec 容器名 命令 //在运行的容器中执行其他的命令(也就是运行额外的进程)
docker top 容器名 //显示的是docker所在的那台宿主机为docker中的进程分配的pid,此pid为宿主机中的pid
docker exec 容器名 ps //显示的是docker容器中的进程pid,此pid为docker容器分配
docker run 镜像名 //镜像名由仓库名和标签组成,中间用冒号隔开,仓库名的组成如下:
一个镜像仓库中包含多个镜像,每个镜像可以由一个标签来唯一标识,表示方法为在镜像后跟冒号,再跟标签,一个完整的镜像名称示例如下:
quay.io/dockerinaction/ch3_hello_registry:latest
注意:一个标签在一个仓库中只能被应用到一个镜像上,但是一个镜像可以有多个标签
Docker从镜像仓库拉镜像很缓慢的问题,采用阿里云镜像加速器,步骤为:
登录阿里云->打开左侧导航栏->搜索镜像容器服务->点击搜索出的镜像容器服务->在左侧栏中找到镜像加速器->复制出加速器的地址,根据提示有不同系统的操作说明文档,我用的是centos. 配置完后docker下载镜像的速度就非常快了.
- Docker存储卷
Docker存储卷分为两种:
第一种:绑定挂载存储卷,指向主机文件系统上用户指定的位置.这种存储卷在需要将主机提供的文件或者目录挂载到容器目录的指定位置时非常有用
用法: 使用-v参数,例如:
-v 主机的目录路径:容器中的目录路径
第二种:docker管理卷,由docker守护程序在主机文件系统中创建存储卷,并由docker管理(使用管理卷是一种在主文件系统特定位置解耦卷的方法)
例如: -v 容器中的路径
docker inspect 容器名 //该命令可以看到容器的所有配置,包括存储卷,该命令输出为json格式的内容,在Mounts字段中为存储卷的信息
共享存储卷
在容器之间共享存储卷的方法:
1.使用绑定存储卷进行共享,这种方式是依赖宿主机
2.使用--volumes-from选项共享,这种方式是从指定的容器继承存储卷,如果从多个容器中继承的存储卷的挂载点相同,则会相互覆盖,只有一个能被继承,其他的将会被覆盖
使用如下命令可以清理不用的卷(孤立卷) docker volume prune
-f 强制删除
- Docker网络访问
Docker网络分为单主机虚拟网络和多主机虚拟网络两种.多主机虚拟网络是在单主机虚拟网络之上建立的,是基础.
Docker提供了四种网络容器原型,四种原型如下,它们的隔离程度依次降低.
- Closed容器
- Bridged容器
- Joined容器
- Open容器
Closed容器
这种容器隔离程度最高,只能访问本地回环接口,可以使用 docker run --net none 创建这种类型的容器
Bridged容器
这种容器时docker默认的网络模型,可以使用 docker run --net bridge创建这种类型的容器
Joined容器
这种容器模型的容器之间没有任何隔离,这种容器通过将网络接口的访问权提供给另一个容器的方式来创建新的容器,因此这种模式下的网络接口就类似于共享的存储卷(两个容器共享相同的网络接口).
Open容器
这种容器模型没有网络容器,并且对宿主机网络具有完全访问权限
跨容器网络访问
链接--本地服务发现,使用方式:
--link 要链接到的容器名:容器的别名
Docker资源隔离
资源分配
- 内存限制:限制容器中的进程能够使用的内存大小
- 限制cpu使用
- 各种硬件设备的挂载
共享内存
- 跨进程通讯,类似于unix管道的在不同进程间通讯的手段,使用--ipc参数
- 开放容器内存,和宿主机运行在同一个命名空间中