参考来源

docker最直观的好处:一次创建或配置,可以在“任意地方”正常运行,且性能远超虚拟机,这一切的优势都归功于Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。

docker 的三大组件: 镜像 、 容器 、 仓库

Docker 镜像 是一个特殊的文件系统, 提供容器运行时所需的各种环境和配置参数。

Docker 容器 是镜像运行时的试题,容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间(opens new window)。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。

Docker 仓库 是一个集中的存储、分发镜像的服务,它允许我们在线下载想要的镜像。仓库中唯一标识镜像的格式是“仓库名:版本标签”,比如 ubuntu:18.04 ,标签缺省值为latest表示最新版本。

docker 命令的使用帮助
docker xx命令 --help
$ docker pull --help 就会给出pull命令的说明

docker run

格式: $ docker run -it --rm ubuntu:18.04 bash 。 解释: docker run -it --rm ubuntu:18.04 好比配置好系统环境(即创建一个容器),bash就是我们真正要执行的命令,如下:

  1. $ docker run ubuntu:18.04 /bin/echo 'Hello world'
  2. Hello world
  • 更多 ```bash docker run… #运行一个容器 —name ${container name} #设置容器名称 -p ${host port}:${container port} #映射主机和容器内的端口 -e ${env name}=${env value} #添加环境变量 -d #后台运行 -v ${host folder path}:${container folder path} #将主机目录挂在到容器内 -it # -i 交互运行,-t终端运行
  1. <a name="W3lxw"></a>
  2. ## docker start、restart、stop、rm
  3. ```bash
  4. docker rmi ${IMAGE NAME/ID} #删除镜像
  5. docker rm ${CONTAINER NAME/ID} #删除容器
  6. docker start ${CONTAINER NAME/ID} #运行一个以前运行过的容器
  7. docker stop ${CONTAINER NAME/ID} #停止一个正在运行的容器
  8. docker restart $(docker ps -q) #重启所有正在运行的容器
  9. docker stop $(docker ps -a -q) #停止所有容器
  10. docker rm $(docker ps -a -q) #删除所有容器
  11. docker rm $(docker ps -f "status=exited" -q) #删除所有退出的容器
  12. docker rm $(docker stop $(docker ps -a -q)) #停止并删除所有容器
  13. docker start $(docker ps -a -q) #启动所有容器
  14. docker rmi $(docker images -a -q) #删除所有镜像

docker exec

作用:能够进入容器的内部命令行。

  • 一个反例:

$ docker run -dit ubuntu 这里-d 使得容器后台了。

  • 一个正例:

    1. $ docker exec -it 69d1 bash
    2. root@69d137adef7a:/#

    进入了docker的环境中,出现了熟悉的“root@69d137adef7a:/#”。 再次说明,-it是交互式终端运行的容器。

  • 更多

    1. docker exec -it ${CONTAINER NAME/ID} /bin/bash #进入容器内
    2. docker exec -it ${CONTAINER NAME/ID} ping ${CONTAINER NAME/ID} #一个容器ping另外一个容器

命令总结

  1. docker pull ${CONTAINER NAME} #拉取镜像
  2. docker images #查看本地所有镜像
  3. docker ps #查看所有正在运行的容器,加-q返回id
  4. docker ps -a #查看所有容器,加-q返回id
  5. docker rmi ${IMAGE NAME/ID} #删除镜像
  6. docker rm ${CONTAINER NAME/ID} #删除容器
  7. docker save ${IMAGE NAME} > ${FILE NAME}.tar #将镜像保存成文件
  8. docker load < ${FILE NAME}.tar #从文件加载镜像
  9. docker start ${CONTAINER NAME/ID} #运行一个以前运行过的容器
  10. docker stop ${CONTAINER NAME/ID} #停止一个正在运行的容器
  11. docker logs ${CONTAINER NAME/ID} #显示运行容器的日志
  12. docker run... #运行一个容器
  13. --name ${container name} #设置容器名称
  14. -p ${host port}:${container port} #映射主机和容器内的端口
  15. -e ${env name}=${env value} #添加环境变量
  16. -d #后台运行
  17. -v ${host folder path}:${container folder path} #将主机目录挂在到容器内
  1. # Advance use
  2. docker ps -f "status=exited" #显示所有退出的容器
  3. docker ps -a -q #显示所有容器id
  4. docker ps -f "status=exited" -q #显示所有退出容器的id
  5. docker restart $(docker ps -q) #重启所有正在运行的容器
  6. docker stop $(docker ps -a -q) #停止所有容器
  7. docker rm $(docker ps -a -q) #删除所有容器
  8. docker rm $(docker ps -f "status=exited" -q) #删除所有退出的容器
  9. docker rm $(docker stop $(docker ps -a -q)) #停止并删除所有容器
  10. docker start $(docker ps -a -q) #启动所有容器
  11. docker rmi $(docker images -a -q) #删除所有镜像
  12. docker exec -it ${CONTAINER NAME/ID} /bin/bash #进入容器内
  13. docker exec -it ${CONTAINER NAME/ID} ping ${CONTAINER NAME/ID} #一个容器ping另外一个容器
  14. docker top ${CONTAINER NAME/ID} #显示一个容器的top信息
  15. docker stats #显示容器统计信息(正在运行)
  16. docker stats -a #显示所有容器的统计信息(包括没有运行的)
  17. docker stats -a --no-stream #显示所有容器的统计信息(包括没有运行的) ,只显示一次
  18. docker stats --no-stream | sort -k8 -h #统计容器信息并以使用流量作为倒序
  19. docker system
  20. docker system df #显示硬盘占用
  21. docker system events #显示容器的实时事件
  22. docker system info #显示系统信息
  23. docker system prune #清理文件