一、Docker安装
1-1、docker-ce、docker-ee介绍
(1)Docker-CE:
指Docker社区版,由社区维护和提供技术支持,为免费版本,适合个人开发人员和小团队使用。
(2)Docker-EE:
指Docker企业版,为收费版本,由售后团队和技术团队提供技术支持,专为企业开发和IT团队而设计。
1-2、docker-ce安装
(1)centos7 上安装 docker-ce
# 0 卸载老版本(新机器不用操作)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# yum list installed | grep docker
# yum remove docker-ce.x86_64 docker-ce-cli.x86_64
# rm -rf /var/lib/docker
# sudo yum update
# 1 安装必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 2 添加源信息
-官方:地址在国外,很慢
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-阿里云:(推荐)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3 检查一下/etc/yum.repos.d/docker-ce.repo 中的url地址是不是都是阿里云
cat /etc/yum.repos.d/docker-ce.repo
# 4 安装
sudo yum -y install docker-ce
# 5 开启docker服务
systemctl start docker
# 6 docker info 查看docker信息
(2)ubuntu 上安装 docker-ce
# 0 卸载
sudo apt-get remove docker docker-engine docker.io containerd runc
# 1 安装必要工具
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
# 2 安装GPG证书
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#换成阿里云
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 2 写入软件源信息
#官方
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
#换成阿里云
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 3 更新并安装docker-ce
sudo apt-get -y install docker-ce
# 4 开启docker服务
systemctl status docker
二、Docker常用命令
2-1、容器命令
2-1-1、列出容器
命令:docker ps [OPTIONS]
OPTIONS说明:
序号 | OPTIONS命令 | 描述说明 |
1 | -a | 显示所有的容器,包括未运行的 |
2 | -f | 根据条件过滤显示的内容 |
3 | --format | 指定返回值的模板文件 |
4 | -l | 显示最近创建的容器 |
5 | -n | 列出最近创建的n个容器 |
6 | --no-trunc | 不截断输出 |
7 | -q | 静默模式,只显示容器编号 |
8 | -s | 显示总的文件大小 |
示例:
#查看正在运行的容器
docker ps
#查看所有的容器
docker ps –a
#检索所有包含peer0的容器
docker ps -a | grep peer0
2-1-2、查看容器日志
命令:docker logs [OPTIONS] CONTAINER_ID
OPTIONS说明:
序号 | OPTIONS命令 | 描述说明 |
1 | --details | 显示更多的信息 |
2 | -f, --follow | 跟踪实时日志 |
3 | --since string | 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟) |
4 | --tail string | 从日志末尾显示多少行日志, 默认是all |
5 | -t, --timestamps | 显示时间戳 |
6 | --until string | 显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟) |
示例:
#查看容器baa8ca7f50f5的日志
docker logs baa8ca7f50f5 | tail -20
2-1-3、杀死正在运行的容器
(1)杀死某个容器。命令:docker kill 容器ID
(2)杀死所有正在运行的容器。命令:docker kill $(docker ps -a -q)
2-1-4、删除容器
(1)删除某个容器。命令:docker rm 容器ID
(2)删除所有已经停止的容器。命令:docker rm $(docker ps -a -q)
2-1-5、重启容器
命令:docker restart 容器ID
2-1-6、启动和停止容器
(1)停止容器。命令:docker stop 容器id或者容器名
(2)启动容器。命令:docker start 容器id或者容器名
2-1-7、创建容器
实际上是有docker create方法的,这样就是创建一个容器,并不会运行,run相当于create+start,新版docker推荐使用run
命令:docker run [OPTIONS]
OPTIONS说明:
序号 | OPTIONS命令 | 描述说明 |
1 | -i | 表示创建并运行容器 |
2 | -t | 表示容器启动后会进入其命令行。通常于-i一起使用:-it表示创建并运行容器,且运行之后自动进入为当前应用打开一个默认终端 |
3 | --name | 为创建的容器命名 |
4 | -v | 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射 |
5 | -d | 在run后面加上-d参数,则会创建一个守护式容器在后台运行,与-t相反 |
6 | -p | 表示端口映射,前者是宿主机端口,后者是容器内的映射端口,程序访问是通过宿主机映射端口来访问容器的。可以使用多个-p做多个端口映射 |
7 | -e | 表示添加容器的环境变量。 |
8 | --rm | 让容器在退出时,自动清除挂在的卷,以便清除数据。等价于在容器退出后,执行docker rm -v |
示例:
1)交互式的方式创建容器:这样的方式我们直接就进入了容器内部
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
2)后台式创建容器:这样的方式创建成功之后没有进入容器内部
docker run -id --name=容器名称 镜像名称:标签
如果想要进入容器内部可以用下面的命令:
docker exec -it 容器名称(或者容器ID) /bin/bash
3)目录映射:
我们可以在创建容器的时候通过 -v参数,将宿主机的目录文件与容器内的目录文件进行映射,这样我们就可以通过修改宿主机目录文件从而去影响容器。
#格式:创建容器 –v 宿主机的目录:容器的目录
docker run -id -v /usr/local/dunm.rdb:/data/dunm.rdb --name=myRedis redis:latest
4)通过镜像文件创建容器 :
docker run -id --name=docker_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=rootcentos/mysql-57-centos7
MYSQL_ROOT_PASSWORD参数表示登录MySQL的root用户的密码。
5)配置容器磁盘使用空间大小:
docker run -it --storage-opt size=120G fedora /bin/bash
2-1-8、拷贝容器文件
1)把宿主机的文件拷贝到容器里
命令:docker cp 需要拷贝的文件或目录 容器名称:容器目录
2)从容器中拷贝文件到宿主机
命令:docker cp 容器名称:容器目录 需要拷贝的文件或目录
2-1-9、查看容器的数据
命令:docker inspect 容器名称(容器ID)
2-1-10、把容器保存为镜像
命令:docker commit 容器名 保存的镜像名
2-1-11、容器备份
命令:docker save –o 打包的后的文件名.tar 镜像名
2-1-12、容器恢复
命令:docker load –i 你的备份镜像tar包
2-1-13、监控容器使用的系统资源
命令:docker stats
默认情况下,stats 命令会每隔 1 秒钟刷新一次输出的内容直到你按下 ctrl + c。下面是输出的主要内容:
序号 | 字段 | 描述说明 |
1 | CONTAINER | 以短格式显示容器的 ID |
2 | CPU % | CPU 的使用情况 |
3 | MEM USAGE / LIMIT | 当前使用的内存和最大可以使用的内存 |
4 | MEM % | 以百分比的形式显示内存使用情况 |
5 | NET I/O | 网络 I/O 数据 |
6 | BLOCK I/O | 磁盘 I/O 数据 |
7 | PIDS | PID 号 |
如果不想持续的监控容器使用资源的情况,可以通过 --no-stream 选项只输出当前的状态:
docker stats --no-stream
只输出指定的容器:
docker stats --no-stream 容器的名称或容器ID
注意,多个容器的名称或者是 ID 之间需要用空格进行分割
格式化输出的结果:
docker stats --format "table {
{.Name}}\t{
{.CPUPerc}}\t{
{.MemUsage}}"
docker stats 命令支持我们通过 --format 选项自定义输出的内容和格式
上面的命令中我们只输出了 Name, CPUPerc 和 Memusage 三列。下面是自定义的格式中可以使用的所有占位符:
序号 | 占位符 | 描述说明 |
1 | .Container | 根据用户指定的名称显示容器的名称或 ID |
2 | .Name | 容器名称 |
3 | .ID | 容器 ID |
4 | .CPUPerc | CPU 使用率 |
5 | .MemUsage | 内存使用量 |
6 | .NetIO | 网络 I/O |
7 | .BlockIO | 磁盘 I/O |
8 | .MemPerc | 内存使用率 |
9 | .PIDs | PID 号 |
有了这些信息我们就可以完全按照自己的需求或者是偏好来控制 docker stats 命令输出的内容了。
除了以 table 格式输出结果,还可以通过 format 选项输出 json 格式的结果:
docker stats --no-stream --format "{\"container\":\"{
{ .Container }}\",\"memory\":{\"raw\":\"{
{ .MemUsage }}\",\"percent\":\"{
{ .MemPerc }}\"},\"cpu\":\"{
{ .CPUPerc }}\"}"
2-1-14、导出容器
命令:docker export [OPTIONS] CONTAINER
OPTIONS说明:
序号 | OPTIONS命令 | 描述说明 |
1 | -o | 将输入内容写到文件 |
示例:
docker export -o export123.tar a404c6c174a2
2-2、镜像命令
2-2-1、列出镜像
命令:docker images
字段说明:
序号 | 字段 | 描述说明 |
1 | REPOSITORY | 镜像名称 |
2 | TAG | 镜像标签 |
3 | IMAGE ID | 镜像ID |
4 | CREATED | 镜像的创建日期(不是获取该镜像的日期) |
5 | SIZE | 镜像大小 |
2-2-2、删除镜像
1)删除某个镜像。命令:docker rmi 镜像ID
2)删除所有镜像。命令:docker rmi $(docker images -q)
2-2-3、强制删除所有镜像
命令:docker rmi -f $(docker images -q)
2-2-4、搜索镜像
命令:docker search 镜像名
2-2-5、拉取镜像
命令:docker pull 镜像名:版本
备注:如果不加版本默认会为我们下载latest版本
2-2-6、制作镜像
命令:docker build -t 镜像名 .
备注:
1)最后是有个“.”的,表示使用当前目录的Dockerfile构建;
2)-t参数表示制成的镜像名,可任意定义。
2-2-7、将镜像保存为归档文件
命令:docker save [OPTIONS] IMAGE [IMAGE...]
OPTIONS 说明:
序号 | OPTIONS命令 | 描述说明 |
1 | -o | 输出到的文件 |
示例:
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
2-2-8、从归档文件创建镜像
命令:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
OPTIONS说明:
序号 | OPTIONS命令 | 描述说明 |
1 | -c | 应用docker 指令创建镜像 |
2 | -m | 提交时的说明文字 |
示例:
docker import my_ubuntu_v3.tar runoob/ubuntu:v4
2-2-9、从归档文件导入镜像
命令:docker load [OPTIONS]
OPTIONS 说明:
序号 | OPTIONS命令 | 描述说明 |
1 | --input , -i | 指定导入的文件,代替 STDIN |
2 | --quiet , -q | 精简输出信息 |
示例:
docker load --input fedora.tar
docker load < busybox.tar.gz
备注:
1)docker load和docker import的区别:
实际上,既可以使用docker load命令来导入镜像库存储文件到本地镜像库,也可以使用docker import命令来导入一个容器快照到本地镜像库。
两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。此外从容器快照文件导入时,也可以重新指定标签等元数据。
2-2-10、修改镜像的tag和name
命令:docker tag 【镜像id】 【镜像名称】:【镜像版本】
示例:
docker tag 9aed1ced115f imagename:1.0.4
2-2-11、清理Build缓存
命令:docker builder prune