docker最直观的好处:一次创建或配置,可以在“任意地方”正常运行,且性能远超虚拟机,这一切的优势都归功于Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。
docker 的三大组件: 镜像 、 容器 、 仓库
Docker 镜像 是一个特殊的文件系统, 提供容器运行时所需的各种环境和配置参数。
Docker 容器 是镜像运行时的试题,容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间(opens new window)。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。
- 因为容器有生命周期,容器中不要保存个人文件。因此,所有的文件写入操作,都应该使用 数据卷(Volume)、或者 绑定宿主目录。
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就是我们真正要执行的命令,如下:
$ docker run ubuntu:18.04 /bin/echo 'Hello world'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终端运行
<a name="W3lxw"></a>## docker start、restart、stop、rm```bashdocker rmi ${IMAGE NAME/ID} #删除镜像docker rm ${CONTAINER NAME/ID} #删除容器docker start ${CONTAINER NAME/ID} #运行一个以前运行过的容器docker stop ${CONTAINER NAME/ID} #停止一个正在运行的容器docker restart $(docker ps -q) #重启所有正在运行的容器docker stop $(docker ps -a -q) #停止所有容器docker rm $(docker ps -a -q) #删除所有容器docker rm $(docker ps -f "status=exited" -q) #删除所有退出的容器docker rm $(docker stop $(docker ps -a -q)) #停止并删除所有容器docker start $(docker ps -a -q) #启动所有容器docker rmi $(docker images -a -q) #删除所有镜像
docker exec
作用:能够进入容器的内部命令行。
- 一个反例:
$ docker run -dit ubuntu 这里-d 使得容器后台了。
一个正例:
$ docker exec -it 69d1 bashroot@69d137adef7a:/#
进入了docker的环境中,出现了熟悉的“root@69d137adef7a:/#”。 再次说明,-it是交互式终端运行的容器。
更多
docker exec -it ${CONTAINER NAME/ID} /bin/bash #进入容器内docker exec -it ${CONTAINER NAME/ID} ping ${CONTAINER NAME/ID} #一个容器ping另外一个容器
命令总结
docker pull ${CONTAINER NAME} #拉取镜像docker images #查看本地所有镜像docker ps #查看所有正在运行的容器,加-q返回iddocker ps -a #查看所有容器,加-q返回iddocker rmi ${IMAGE NAME/ID} #删除镜像docker rm ${CONTAINER NAME/ID} #删除容器docker save ${IMAGE NAME} > ${FILE NAME}.tar #将镜像保存成文件docker load < ${FILE NAME}.tar #从文件加载镜像docker start ${CONTAINER NAME/ID} #运行一个以前运行过的容器docker stop ${CONTAINER NAME/ID} #停止一个正在运行的容器docker logs ${CONTAINER NAME/ID} #显示运行容器的日志docker run... #运行一个容器--name ${container name} #设置容器名称-p ${host port}:${container port} #映射主机和容器内的端口-e ${env name}=${env value} #添加环境变量-d #后台运行-v ${host folder path}:${container folder path} #将主机目录挂在到容器内
# Advance usedocker ps -f "status=exited" #显示所有退出的容器docker ps -a -q #显示所有容器iddocker ps -f "status=exited" -q #显示所有退出容器的iddocker restart $(docker ps -q) #重启所有正在运行的容器docker stop $(docker ps -a -q) #停止所有容器docker rm $(docker ps -a -q) #删除所有容器docker rm $(docker ps -f "status=exited" -q) #删除所有退出的容器docker rm $(docker stop $(docker ps -a -q)) #停止并删除所有容器docker start $(docker ps -a -q) #启动所有容器docker rmi $(docker images -a -q) #删除所有镜像docker exec -it ${CONTAINER NAME/ID} /bin/bash #进入容器内docker exec -it ${CONTAINER NAME/ID} ping ${CONTAINER NAME/ID} #一个容器ping另外一个容器docker top ${CONTAINER NAME/ID} #显示一个容器的top信息docker stats #显示容器统计信息(正在运行)docker stats -a #显示所有容器的统计信息(包括没有运行的)docker stats -a --no-stream #显示所有容器的统计信息(包括没有运行的) ,只显示一次docker stats --no-stream | sort -k8 -h #统计容器信息并以使用流量作为倒序docker systemdocker system df #显示硬盘占用docker system events #显示容器的实时事件docker system info #显示系统信息docker system prune #清理文件
