什么是docker
不准确的说,docker是一种轻量级的虚拟机,它把可执行文件和运行环境打包成一个image,放在容器里运行,但是启动速度比虚拟机快很多,资源消耗小。这种技术主要是为了解决部署环境的问题。
从远程仓库获取image
docker pull <image:[tag]>
同一个名字的image可以加tag,用于区分版本。如果不加tag,默认是latest
container操作
创建container
docker run [options] <image> <cmd>
- -d daemon模式,后台运行
- --name 设置名字。最好设置一个,要不然在stop、rm的时候要通过id访问,麻烦
- --net networking模式,见后。
- --rm 在container退出后即删除。否则container还会以“exited”的状态存在
container的名字不能重复。
停止、启动(只是暂时停止,不会删除,可以继续运行)
docker stop|start <container_id|container_name>
删除
docker rm [-f] <container_id|container_name>
如果创建container时设置了名字,可以通过名字访问,并且支持tab补全。
显示进程
docker的container在退出后并不会自动删除,而是以停止的方式仍然存在。
docker ps [options]
- -a 显示所有的container。否则默认只显示正在运行的container
- -q 只显示id。否则默认显示id、名字、对应的image、启动时间等信息
清除
docker没有clean之类的命令,只能自行删除 删除所有container
docker rm -f $(docker ps -aq)
删除所有image
docker rmi $(docker images -q)
networking模式
docker支持host和container间多种networking模式,一种是默认的模式,用ifconfig可以看到多了一个网络接口,container开放的端口是不能通过host的ip进行访问的。另一种是host模式(使用参数--net=host),这个模式中,container直接使用host的network stack,端口直接通过host对外暴露。