Dokcer入门杂记


一、Docker基础

1.1 什么是Docker

Docker是一个轻量级的虚拟化技术,其解决了软件运行环境和配置等不统一的问题。
Docker已逐渐发展成为一个可持续集成和整体发布的开放平台。
Docker的理念:

Securely build, share and run any application, anywhere

Docker是将与应用相关的所有组件和环境进行封装,只要宿主机支持Docker,就可以运行各式各样的应用,不用额外的环境和配置,以此达到了“一次构建,处处执行”的目标。

1.2 Docker三要素

  • 镜像 Image
  • 容器 Container
  • 仓库 Registry

镜像是模板,容器是根据镜像构建的一个个实例,它们的关系类似于类和对象。
仓库是一个存储、分发各类镜像的地方。

1.3 对比虚拟机

images

虚拟机在宿主机上利用硬件资源虚拟出一个个操作系统,是完全独立的系统。
容器通过Docker Engine直接使用宿主机的内核,不完全独立。

容器 虚拟机
所属 操作系统层虚拟化 硬件层虚拟化
占用资源
资源利用率
启动速度 秒级 分钟级

1.4 Docker安装

官方文档

CentOS上安装Docker社区版

1. 使用Docker存储库安装
yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
2. 设置稳定的存储库
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
3. 安装Docker-ce
yum install docker-ce docker-ce-cli containerd.io

二、Docker常用命令

以下操作的环境:CentOS 7

2.1 基本操作

1. Docker的启动、停止、重启、状态、设置开机自启:
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker
2. Docker的版本信息、概要信息、帮助命令:
docker version
docker info
docker --help

2.2 镜像相关

1. 查看镜像、搜索镜像、拉取镜像:
docker images
docker search 镜像名称
docker pull 镜像名称
2. 删除镜像、删除所有镜像:
docker rmi 镜像名称或ID
docker rmi $(docker images -q)
3. 镜像加速器:

由于镜像拉取的网站是国外的,其会遇到困难,此时可配置国内的镜像加速器

  • /etc/docker/daemon.json中写下如下内容
{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}
  • 重启docker服务
systemctl daemon-reload
systemctl restart docker

2.3 容器相关

1. 创建容器,以下为参数:
  • -i 交互式运行容器
  • -t 给容器分配一个伪终端
  • -d 以守护进程的方式运行(后台运行)
  • -p 分配端口——宿主机端口:容器端口
  • -e 添加环境变量
  • --name 自定义容器名称
docker run -参数 镜像名称
2. 容器启动、停止、重启:
docker start 容器名称或ID
docker stop 容器名称或ID
docker restart 容器名称或ID
3. 查看容器,若无参数则查看正在运行中的容器:
  • -a 查看所有容器
  • -f status=exited 查看已停止的容器
docker ps -参数
4. 进入容器:(退出容器:ctrl+D或exit,退出但不停止容器:ctrl+P+Q)
docker attach 容器名称或ID #以此方式进入容器中,exit后容器也停止
docker exec -it 容器名称或ID /bin/bash #以此方式进入容器中,exit后容器不停止
5. 在容器中执行命令并直接返回到宿主机:
docker exec 容器名称或ID CMD
6. 查看容器内部细节、查看容器内部进程、查看容器日志:
docker inspect 容器名称或ID #-f "{{.层级目录}}"——详细查询
docker top 容器名称或ID
docker logs 容器名称或ID #-f跟踪日志输出;-t显示时间戳;--tail+n显示末尾n条日志
7. 删除容器、删除所有容器:
docker rm 容器名称或ID
docekr rm $(docker ps -q)
8. 从宿主机拷贝文件到容器中,反之:
docker cp 宿主机文件 容器名称或ID:/目录
docker cp 容器名称或ID:/目录/文件 宿主机目录

2.4 其他

2.4.1 数据卷

数据卷的作用是数据持久化+数据共享(宿主机与容器,容器与容器)。
宿主机与容器:

  • docker run命令添加参数 -v /宿主机绝对路径目录:/容器内目录
  • 容器停止退出后,宿主机修改数据仍同步
  • -v /目录:/目录:ro(修改权限,read only表示仅可在宿主机上进行写操作)

容器与容器:

  • docker run命令添加参数 --volumes-from 父容器
  • 容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用为止
  • 还可用Dockerfile添加数据卷

2.4.2 迁移与备份

1. 提交容器副本成为一个新的镜像:
docker commit 容器名称或ID 新的镜像名称 #-m="提交的描述信息",-a="作者"
2. 镜像备份:
docker save -o ***.tar 镜像名称或ID
3. 恢复镜像:
docker load -i ***.tar
posted @ 2019-09-22 15:58  没钱撒欢  阅读(120)  评论(0编辑  收藏  举报