1 . 对docker的理解:
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
- DockerClient客户端
- DockerClient客户端
- Docker Image镜像
- DockerContainer容器
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
docker的优点:
- 轻量级:所有容器在一台机器上共享同一个操作系统内核,这样他们立即开始,并更有效地利用内存。Image 是从分层文件系统的构建,这样他们能够共享公共文件,使得磁盘使用率和 Image 的下载更加高效。
- 开放:Docker 容器是基于开发的标准,允许容器运行在主流的 Linux 发布版和 Microsoft 操作系统作为所有的基础设施。
- 安全:容器使得应用程序彼此隔离,而基础架构同时为应用程序提供了额外的保护层。
Docker 与 虚拟机的区别
- 每个虚拟机都包括应用程序、必要的二进制文件和库以及一个完整的客户操作系统(Guest OS),尽管它们被分离,它们共享并利用主机的硬件资源,将近需要十几个 GB 的大小。
- 容器包括应用程序及其所有的依赖,但与其他容器共享内核。它们以独立的用户空间进程形式运行在主机操作系统上。他们也不依赖于任何特定的基础设施,Docker 容器可以运行在任何计算机上,任何基础设施和任何云上。
2 . docker部署
1 . 安装docker和相关依赖性
在官网进行下载:https://docs.docker.com/
安装docker,同时还会自动安装其他依赖软件,需要提前设置好系统yum源,可以使用7.3或者7.5的镜像源
yum install docker-ce.x86_64 docker-ce-cli.x86_64 containerd.io.x86_64 container-selinux.noarch -y
2.打开docker服务
systemctl start docker
3 . 安装bash等相关安装包,当使用docker的时候,发现可以成功补齐。
yum install -y bash-*
4 . 安装成功之后查看docker信息
系认会自动产生一个docker网络接口
3 . docker简单的用法
1 . docker的一些常用命令:(以ubuntu镜像为模板)
docker load -i ubuntu.tar | 导入镜像 |
---|---|
docker run -it --name vm1 ubuntu | 创建容器 |
docker ps | 查看容器状态 |
docker ps -a | 查看容器状态(包括不活跃的容器) |
docker images | 查看已导入的所有镜像 |
docker attach vm1 | 连接容器 |
docker top vm1 | 查看容器进程 |
docker logs vm1 | 查看容器指令输出 -f 参数可以实时查看 |
docker inspect vm1 | 查看容器详情 |
docker stats vm1 | 查看容器资源使用率 |
docker diff vm1 | 查看容器修改 |
docker start/stop vm1 | 开启/停止 容器 |
docker kill vm1 | 强制关闭容器 |
docker restart vm1 | 重启容器 |
docker pause/unpause vm1 | 暂停/恢复容器 |
docker rm vm1 | 删除容器 |
docker rmi ubuntu | 删除镜像 |
docker version | 查看docker安装版本信息 |
docker info | 显示 Docker 系统信息,包括镜像和容器数 |
2 . docker 对镜像的所有操作命令
[root@docker ~]# docker image
build import load prune push save
history inspect ls pull rm tag
3 . docker 对容器的所有操作命令
[root@docker ~]# docker container
attach diff kill port rm stop wait
commit exec logs prune run top
cp export ls rename start unpause
create inspect pause restart stats update
4 . 运行一个简单的容器
docker load -i game2048.tar # 导入镜像
docker run -d --name vm1 -p 80:80 game2048 # 运行容器 -d 是打入后台
--name 是给容器的命名 -p作端口预设 物理机端口:docker 端口
docker ps # 查看运行的容器
浏览器访问查看运行结果: