![20c86f2fc4e6056a8accc018db14ca90.png](https://i-blog.csdnimg.cn/blog_migrate/e00cd9e28313dbd964adc3e5fa4ef8c0.jpeg)
本文不讲如何安装Docker,深入了解Docker,请移步至:https://hub.docker.com/。
1、什么是Docker?
Docker是用Go语言开发实现,对进程进行封装隔离,属于操作系统层面的虚拟化技术。
由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器(Container)。
Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。
2、Docker的基本概念
(1)image-镜像:一个独立的文件系统fileSystem(类似虚拟机里的镜像,包含运行时需要的系统、软件、代码、库、环境变量、配置文件等)
比如下图,从远端仓获取到的2个image,busybox和hello-world
![382a426cd9d94e39ce3e6ca8875ef2df.png](https://i-blog.csdnimg.cn/blog_migrate/0dc8bebd3880d8949e41997a8371754d.png)
(2)container-容器:由镜像(image)创建的运行实例(类似虚拟机,可以对它执行启动、停止、删除等操作)
比如下图,每个container都有一个唯一的container ID,每个container都运行在对应的image中,如:da587e94c42d这个container就是image busybox创建的一个实例。
![8f43514fff7347bad5335b4859e1a2f9.png](https://i-blog.csdnimg.cn/blog_migrate/38590a28af9e8a8ed9c80b39e990c4c2.png)
(3)repository-仓库:提供集中存储、镜像分发的服务,类似github。用户可以从仓库(repository)上传或下载镜像
比如:https://hub.docker.com/ 上的busybox和hello-world仓,我们可以执行docker pull命令,将这些存储在远端仓的image拉取到本地。
3、与传统vm的区别
(1)每个vm都对应自己独立的os
(2)每个container共享一个os的资源
4、常用docker的操作命令
(1)docker pull busybox
这条命令从docker hub上下载busybox镜像存在本地。
(2)docker images
这条命令查看本地images list
(3)docker ps -a
这条命令显示所有容器
![1618cdf5e1aba587941241e547cb28f3.png](https://i-blog.csdnimg.cn/blog_migrate/2b2eb07a33ffab8a18df20fa9da13a2a.png)
(4)docker run -it busybox
连接进入到容器中的tty
(5)docker rm 96dfce02247d
删除容器,相当于删除了96dfce02247d这个container。
这里需要注意:如果96dfce02247d的STATUS状态没有Exit,rm操作会发生错误。
比如:
$docker run -it busybox
![b53587b354c003024b4b758ab0a13bb8.png](https://i-blog.csdnimg.cn/blog_migrate/5ae080eecfa88f92a933ba43d78e70ca.png)
此时,ed99941f052d container并不是Exit状态,执行$docker rm ed99941f052d ,会报错
$ docker rm ed99941f052d
Error response from daemon: You cannot remove a running container ed99941f052db108164e583363b809c7955292ba74a26d45dea12811766a3afc. Stop the container before attempting removal or force remove
解决方法:
A、主动退出busybox container
B、执行docker stop ed99941f052d命令
![9883fbff22d9b31a6dcf9c113a050558.png](https://i-blog.csdnimg.cn/blog_migrate/accac08da281c97963cd691946f3fd73.png)
(6)docker start
此命令启动一个container,比如:
docker start da587e94c42d — 启动container By ContainerID
docker logs da587e94c42d — 查看这个容器的日志log
![74d8671627e8720a0a7c84e5875af3bd.png](https://i-blog.csdnimg.cn/blog_migrate/d26cf05f7487aced5e78adc55fe37f6f.jpeg)
(7)批量start/stop/rm container/images
$docker stop $(docker ps -a -q) #停止所有的container
$docker rm $(docker ps -a -q) #删除所有的container
$docker rmi $(docker images -q) #删除所有的image
(8)docker search busybox
此命令查询远端仓中的image
>> 本文结束end