1. 对Docker的理解
- 容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
- 借助Docker ,您可将容器当做重量轻、模块化的虚拟机使用。同时,您还将获得高度的灵活性,从而实现对容器的高效创建、部署及复制,并能将其从一个环境顺利迁移至另一个环境。假定您在开发一个应用。您使用的是一台笔记本电脑,而且您的开发环境具有特定的配置。其他开发人员身处的环境配置可能稍有不同。您正在开发的应用依赖于您当前的配置,还要依赖于某些特定文件。与此同时,您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。您希望尽可能多在本地模拟这些环境,而不产生重新创建服务器环境的开销。
- 10张图带你理解Docker容器和镜像
2. Docker与虚拟机的区别
- 让多个操作系统在单个虚拟机监控程序上运行以实现虚拟化,并不能达成和使用容器同等的轻量级效果。事实上,在仅拥有容量有限的有限资源时,您需要能够可以进行密集部署的轻量级应用。Linux容器可从单个操作系统运行,在所有容器中共享该操作系统,因此应用和服务能够保持轻量级,并行快速运行。
3. Docker常用命令
创建容器:
$ docker run -itd --name 容器名 镜像名 /bin/bash
创建指定名字的容器,容器在后台运行,该命令不会直接进入容器;
特权模式:
$ docker run -itd --privileged=true --name 容器名 镜像名 /bin/bash
进入容器:
$docker exec -it 容器ID /bin/bash
退出容器按ctrl+D,退出后容器不会终止运行;
查看所有容器:
$docker ps -a
启动/终止/重启容器:
$docker start/stop/restart 容器ID
导入导出:
可以分为两组命令,区别在于是否带有元数据(metadata)
1. 包含元数据:
-
导出容器:
$ docker save 镜像ID -o 名字.tar
创建一个镜像的压缩文件,这个文件能够在另外一个主机的Docker上使用。该命令只对镜像有效; -
导入镜像:
$ docker load < 镜像.tar -
如果我们对Container做出了修改,如果想要保留这个修改,可以通过commit命令来生成一个新的Image。
-m为描述信息 -a为作者 1f9是你要保存的容器id 取前3个字符 docker可以自行识别
sylvanassun/redis为镜像名 :test 为一个tag 一般用于标识版本
[root@Jack ~]# docker commit -m “test” -a “SylvanasSun” 1f9
sylvanassun/redis:test sha256:e7073e8e5bd70b8d58092fd6bd8c2551e65dd29241c235eddf2a7f4b4b25cbbd
2. 不包含元数据:
-
导出容器:
$ docker export 容器ID > 容器命名.tar
不打包元数据,因此不包含.json文件,只包含layer.tar包。无法用docker load命令导入; -
导入镜像:
$ cat 打包好的容器.tar | docker import - 镜像命名:版本
用于导入export命令导出的镜像;
eg: $ cat daochu1.tar | docker import - daochujingxiang:v1
删除容器:
$ docker rm -f 容器ID
$ docker container prune 此命令删除所有停止状态的容器
删除已导入的镜像:
$ docker rmi 镜像ID
删除镜像前要确保其衍生的容器均处于关闭状态;