docker的简介
- Docker 是一种运行于 Linux 和 Windows 上的软件,用于创建、管理和编排容器。(企业版(EE)和社区版(CE))
- Docker 公司,位于旧金山,是整个 Moby 开源项目的维护者。Docker 公司还提供包含支持服务的商业版本的 Docker。
提示:“Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人。
- 使用Linux容器来部署应用程序称为集装箱化.
- 集装箱化的优点:
灵活:即使是复杂的应用程序也可封装。
轻量级:容器利用并共享主机内核。
便携式:您可以在本地构建,部署到云上并在任何地方运行。
可扩展性:您可以增加和自动分发容器副本。
可堆叠:您可以垂直堆叠服务并及时并及时堆叠服务。
docker容器与虚拟机的比较
- 虚拟机:
资源占用多:虚拟机会独占一部分内存和硬盘空间。它运行的时候,其他程序就不能使用这些资源了。哪怕虚拟机里面的应用程序,真正使用的内存只有1M,虚拟机依然需要几百MB的内容才能运行。
冗余步骤多:虚拟机是完整的操作系统,一些系统级别的操作步骤,往往无法跳过,比如用户登录。
启动慢:启动操作系统需要多久,启动虚拟机就需要多久。可能要等几分钟,应用陈故乡才能真正运行。
- linux容器
- 启动快:容器里面的应用,直接就是底层系统的一个进程,而不是虚拟机内部的进程。所以,启动容器相当于启动本机的一个进程,而不是启动一个操作系统,速度就快很多。
资源占用少:容器只占用需要的资源,不占用那些没有用到的资源;虚拟机由于是完整的操作系统,不可避免要占用所以资源。另外,多个容器可以共享资源,虚拟机都是独享资源。
体积小:容器只要包含用到的组件即可,而虚拟机是整个操作系统的打包,所以容器文件比虚拟机文件要小很多。总之,容器有点像轻量级的虚拟机,能够提供虚拟化的环境,但是成本开销小得多。
docker组件
(1) docker服务器与客户端
(2)docker镜像(类)与容器(对象)
- Docker镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
- Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器),也可以实现虚拟化
(3) Rgistry仓库
- 有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。
docker安装
(1)官方的命令行全自动安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh
curl (用来请求 Web 服务器,它的名字就是客户端(client)的 URL 工具的意思。)
curl命令详解如下:
https://www.cnblogs.com/duhuo/p/5695256.html
http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
(2)手动安装
- 安装所需的软件包 yum-utils 提供了 yum-config-manager 并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
yum install -y yum-utils device-mapper-persistent-data lvm2
- 选择国内源下载:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.安装docker社区版yum install docker-ce
- 启动docker
systemctl start docker
- 查看docker版本信息
docker version
- 运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
docker run hello-world
(3)设置ustc的镜像
- 作用: ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务
mkdir -p /etc/docker/daemon.json
vim /etc/docker/daemon.json
- 文件内容
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"insecure-registries": ["192.168.10.77"]
}
5.其它镜像
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
(4)docker的启动与停止
1.启动dockersystemctl start docker
2. 停止docker systemctl stop docker
3. 查看docke信息 docker info
4. docke命令帮助 docker --help
docker常用命令
一.镜像命令
- 查看镜像
- 镜像存储在Docker宿主机的
/var/lib/docker
下
docker images
- 搜索镜像
docker search 镜像名称
- 拉取镜像
docker pull 镜像名称
例如: 我要下载centos7镜像
docker pull centos:7
- 删除镜像
docker rmi 镜像ID
- 删除所有镜像
docker rmi
docker images -q
(红色两边存在单引号)
二.容器命令
(1) 查看容器
- 查看正在运行的容器
docker ps
- 查看所有容器
docker ps -a
- 查看最后一次运行的容器
docker ps -l
- 停止所有容器
docker stop $(docker ps -aq)
- 启动容器
docker start 容器name或者容器ID
(2)创建与启动容器
- 创建容器
- docker run
- -i 表示运行容器
-t 表示容器启动后会进入命令行—伪终端
-name 创建的容器名字
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以用多个-v做多个目录或文件映射
-d 创建一个守护进程在后台运行,不会自动登录容器
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口,可做多个p做多个端口映射
1.交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
2.守护式方式创建容器
docker run -di --name=mycentos2 centos:7
docker exec -it mycentos2 /bin/bash
3.文件的拷贝
(1)从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
例如:
(2)拷贝到容器中
docker cp 需要拷贝的文件或目录 容器名称:容器目录
4.目录的挂载
5.查看容器IP地址
docker inspect 容器名称(容器ID)
直接查询
后期陆续部署其它应用