容器是镜像的运行时实例。正如从虚拟机模板上启动 VM 一样,用户也同样可以从单个镜像上启动一个 或多个容器。虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之 上相比,容器会共享其所在主机的操作系统/内核。大概是这种感觉:

可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、互不可见的。可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间 等)以及运行在其中的应用程序打包而成的盒子。容器是基于镜像启动起来的,容 器中可以运行一个或多个进程。镜像是Docker生命周期 中的构建或打包阶段,而容器则是启动或执行阶段。镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。
新建并启动容器:
这个命令包含两步:新建,启动。这也是我们启动容器最常用的命令。
后面还还会有新建容器命令,启动容器命令。
docker run -itd --rm --name tomcat -p 8080:8080 tomcat:9.0.20-jre8-alpine
docker run命令常用参数比较多,这里仅仅列出开发岗常用参数,请小伙伴们自行查找资料获得更多参 数信息
-d, --detach=false: 后台运行容器,并返回容器ID
-i, --interactive=false: 以交互模式运行容器,通常与 -t 同时使用
-P, --publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口。不推荐各位小伙伴 使用该参数
-p, --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口,推荐各位小伙伴们使用
-t, --tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name="nginx-lb": 为容器指定一个名称
-h , --hostname="laosiji": 指定容器的hostname -e , --env=[]: 设置环境变量,容器中可以使用该环境变量
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
--link=[]: 添加链接到另一个容器;不推荐各位小伙伴使用该参数
-v, --volume : 绑定一个卷
--privileged=false: 指定容器是否为特权容器,特权容器拥有所有的capabilities
--restart=no:指定容器停止后的重启策略 no:容器退出时不重启 on-failure:容器故障退出(返回值非零)时重启 always:容器退出时总是重启,推荐各位小伙伴们使用
--rm=false: 指定容器停止后自动删除容器,不能以docker run -d启动的容器
容器日志:
docker logs -f 容器名
docker logs -f tomcat9
常用参数 -f : 跟踪日志输出 --tail :仅列出最新N条容器日志
删除容器:
删除容器docker rm 容器名:删除一个或多个容器。
docker rm命令只能删除处于终止或退出状态的容器,并不能删除 还处于运行状态的容器。可以使用-f参数强制删除。
杀掉容器:dock kill
docker run -it --name tomcat9 -p 8081:8080 tomcat:9.0.20-jre8-alpine docker kill tomcat9
删除所有正在运行的容器:
docker rm -f $(docker ps -aq)




