二.为什么说Docker是容器化技术?百度百科:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
docker官网:http://www.docker.com
三.Docker 理念容器化技术的特点:标准化:每个容器都是标准化、可移植的,因为他们直接运行在宿主机的内核上隔离:容器互相隔离,互不干扰,独立运行高性能:容器性能开销极低,可以实现分钟级甚至秒级的部署和启动版本:CE(Community Edition:社区版)和 EE(Enterprise Edition:企业版)
四.Docker 架构Build,Ship and Run Any App,Anywhere,在任何地方构建、 发布并运行任何应用程序(一次封装,到处运行)
docker 由三部分组成:
Client 客户端docker 主机Registry 镜像仓库服务器
docker daemon:
docker 安装后,会以后台运行、守护进程的形式存在images 镜像: 镜像可以用来创建 docker 容器,一个镜像可以创建很多容器containers: 镜像和容器的关系类似面向对象设计中的类和对象, 镜像是容器的模板,容器是基于镜像创建出来的。 容器可以被创建、启动、停止、删除等等。
Registry:
镜像注册服务器 https://hub.docker.com 一个 docker Registry(仓库注册服务器) 中可以包含多个 Repository(仓库); 每个仓库可以包含多个标签/版本(Tag);每个标签对应一个镜像。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式,公开仓库就是 docker 官方仓库,私有仓库是自己搭建的 docker 私服
五.CentOS7 安装 docker(1)安装需要的软件包:Client:
Docker 终端 安装好 docker 中,同时包含了 docker 客户端,客户端负责执行 docker 命令, 发送给 docker 主机中的 docker 守护进程,例如:从仓库下载镜像,通过镜像创 建容器等等
yum install -y yum-utils device-mapper-persistent-data lvm2
(2)设置 docker 下载镜像(推荐用阿里云,一个字:快)yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(3)更新 yum 软件包索引yum makecache fas
(4)安装 DOCKER CE (社区版)yum install -y docker-ce docker-ce-cli containerd.io
注意第一次安装可能会出现错误,重新执行一下安装的命令就好了
systemctl start docker # 启动docker
systemctl enable docker # 设置开机自启动
docker version
systemctl stop docker
yum remove -y docker-ce
rm -rf /var/lib/docker
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ny5dsu6o.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
七.Docker 常用命令(1).Docker 基本命令
- 版本信息:docker version
- 详细信息:docker info
- 帮助文档:docker --help 列出所有的docker命令
- 启动Docker服务:systemctl start docker
- 关闭Docker服务:systemctl stop docker
- 查看Docker状态:systemctl status docker
- 重启Docker服务:systemctl restart docker
- 设置Docker服务跟随虚拟机开机自启:systemctl enable docker
- 取消Docker服务跟随虚拟机开机自启:systemctl disable docker
- 查看所有的本机镜像:docker images [-q|--no-trunc],-q:查看镜像ID --no-trunc:查看完成的镜像ID
- 查找镜像:docker search 镜像名称
- 下载镜像:docker pull 镜像名称:版本号,不加版本号默认是latest最新版
- 删除镜像:docker rmi [-f] 镜像名|镜像ID:版本号,删除指定版本镜像,版本为latest版本号可以省略,[-f]:强制删除
- 批量删除:docker rmi [-f] mysql tomcat redis ,除多个镜像,使用空格间隔不同的镜像名称
我就不演示了
- 删除全部镜像:docker rmi -f $(docker images -q)
我就不演示了
- 查看镜像详情:docker inspect 镜像名|镜像ID
- 列出所有正在运行的容器,不包含已停止的容器(容器怎么运行可以看后面):docker ps
- 列出当前所有已经创建的容器:docker ps [-aq]
- 创建容器:
docker create 镜像名称 # 根据镜像名创建一个容器
docker create --name tomcat1 镜像名称 # 根据镜像创建名为 tomcat1 的容器
docker create 镜像 id # 根据镜像 id 新建一个容器
- 启动、停止、重启容器:
docker start 容器名|容器ID
docker stop 容器名|容器ID
docker restart 容器名|容器ID
docker kill 容器名|容器ID 根据容器名强制停止一个容器
- 创建并启动容器:docker run --name tomcat2 tomcat
当本地镜像存在时,相当于 docker create docker start
当本地镜像不存在时,相当于 docker pull docker create docker start - 删除容器:
docker rm 容器名称 #删除未启动的容器
docker rm -f 容器名称 #强制删除已启动的容器
docker rm -f $(docker ps -qa) #删除所有容器,包括正在运行的容器
我就不演示了
docker ps -a -q | xargs docker rm #删除所有容器,不包括正在运行的容器
我就不演示了
- 交互式启动:docker run -it --name qiu 镜像名|镜像ID
- 进入容器:docker exec -it 容器ID|容器名称 /bin/bash
- 退出容器:
ctrl p q # 不停止退出容器
exit #容器停止退出,此时执行
- 启动守护式容器:docker run -d --name qiu 镜像名|镜像ID
推荐直接使用:docker run -itd --name qiu 镜像名|镜像ID
八.数据卷(1)什么是数据卷:数据卷是存在于一个或多个容器中的特定文件或文件夹,这个文件或文件夹以独立于 docker 文件 系统的形式存在于宿主机中(2)解决了什么问题?例如:MySQL 容器损坏无法启动,需要删除容器重新创建,那么数据库数据将会丢失