一 Docker简介
官方地址:https://docs.docker.com/
Docker 是一个用 Go 语言开发的开源应用容器引擎,它允许开发者将应用程序及其依赖打包成轻量级、可移植的容器。这些容器可以部署到任何主流的 Linux 或 Windows 系统上,并具备虚拟化能力。
Docker 是一个开源的应用程序开发、交付和运行平台。它将应用程序与底层基础设施解耦,从而实现软件的快速交付。借助 Docker,开发者能够以管理应用程序的方式管理基础设施资源。通过 Docker 高效的代码交付、测试和部署机制,可以大幅缩短从开发到生产环境的周期。
Docker 作为革命性的开源项目,充分发挥了计算虚拟化的潜力,显著提升了应用维护效率,同时降低了云计算开发成本。它使应用的部署、测试和分发变得前所未有的简单高效。对于开发者、运维人员以及所有IT从业者而言,掌握 Docker 技术都是提升工作效率的重要途径。

二 Docker的主要特点
三 为什么要使用Docker?
因此,Docker 在软件开发、测试和运维中有着广泛的应用。
四 Docker核心概念
Docker三大核心概念:镜像 Image、容器 Container、仓库 Repository
1 镜像(Image)
Docker 镜像是容器的只读模板,为容器运行提供基础环境。一个镜像可以生成多个容器实例。
镜像包含了运行容器所需的所有组件:应用程序代码、运行时环境、依赖库、环境变量和配置文件等。其采用分层文件系统结构,每层对应 Dockerfile 中的一条指令,各层之间具有明确的依赖关系。
2 容器(Container)
Docker 容器是 Docker 镜像运行时的实例化体现。用户可以对容器执行创建、启动、停止、删除和暂停等操作。各容器之间具有完全隔离的运行环境,每个容器都拥有独立的文件系统和进程空间。
从技术架构来看,容器与镜像类似,都是由多层结构组成。区别在于容器的最上层是可读写层,而镜像的最上层始终是只读的。
3 仓库(Repository)
Docker 仓库(Repository)是用于存储和管理 Docker 镜像的场所,类似于代码版本控制系统中的代码仓库。用户可以在仓库中注册账户,既能上传和分享自己的镜像,也能下载他人共享的镜像。
Docker 仓库主要分为两种类型:
典型的 Docker 工作流程包含三个步骤:
五 Docker的核心架构
在 Docker 主要有以下几部分组成:

链接:https://hub.docker.com/
六 Centos7 Docker 安装
1 Docker自动化安装
官方的一键安装方式:
curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun
国内daocloud一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
执行上述任一条命令,耐心等待即可完成Docker的安装。
2 Docker手动安装
# 安装依赖工具
# yum-utils提供yum-config-manager
# device mapper存储驱动程序需要device-mapper-persistent-data和lvm2。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 配置镜像源, 我们使用的是阿里云的源
yum-config-manager –add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
# 安装 Docker
yum install docker-ce docker-ce-cli containerd.io
注意:执行最后 yum install docker-ce docker-ce-cli containerd.io
可能会出现下载失败,请自行替换yum的镜像源
yum install安装报错
https://blog.csdn.net/MrZhangTS/article/details/143773880
安装完成后,可通过以下命令管理Docker守护进程:
# 查看 docker 版本
docker version
# 启动 docker 服务
systemctl start docker
# 关闭 docker 服务
systemctl stop docker
# 重启 docker 服务
systemctl restart docker
# 查看 docker 状态
systemctl status docker
# 设置开机启动
systemctl enable docker
七 Docker 镜像操作
# 1. 查看镜像
docker images # 查看所有镜像
docker images -q # 只查看镜像的ID
docker images –no-trunc # 显示镜像完整信息
# 2. 搜索镜像
docker search 镜像名
# 3. 下载镜像
docker pull 镜像名:版本 # 不指定 TAG, 则默认使用 latest
# 4. 运行镜像
docker run -it 镜像名:版本 程序 # 交互式运行容器
docker run -it –name=标签名 镜像名:版本 程序 # 容器指定名字
docker run -itd 镜像名:版本 程序 # 后台运行容器
# 5. 删除镜像
docker rmi -f 镜像名 # 删除指定镜像
docker rmi -f 镜像ID # 删除指定镜像
docker rmi -f $(docker images -qa) # 删除所有镜像
# 6. 保存镜像, xxx是镜像名
docker save 镜像名:版本 -o xxx.tar
"""
[root@bogon ~]# docker save alpine:latest -o myalpine.tar
[root@bogon ~]# ls
anaconda-ks.cfg myalpine.tar
"""
# 7. 加载镜像
docker load -i xxx.tar
"""
[root@bogon ~]# docker load -i myalpine.tar
24302eb7d908: Loading layer [==================================================>] 5.811MB/5.811MB
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 9 months ago 231MB
"""
八 Docker 容器操作
# 1. 查看容器
docker ps # 查看正在运行的容器实例
docker ps -a # 查看正在运行或者已停止的容器实例
# 2. 运行容器
docker start 容器ID # 启动容器
docker restart 容器ID # 重启容器
# 3. 停止容器
docker stop 容器ID
# 4. 删除容器
docker rm -f 容器ID # 删除指定容器
docker rm -f $(docker ps -qa) # 删除所有容器
# 5. 进入容器
# attach 退出终端会导致容器停止
# exec 不会导致容器停止
docker attach 容器ID
docker exec -it 容器ID /bin/bash
# 6. 容器导出
docker export 容器ID > xxx.tar
# 7. 容器导入
docker import xxx.tar xxx:tag




