前言
Docker 容器使用沙箱机制,将每个容器彼此都隔离出来,极大程度上可以保护到其他容器的进行和使用,有镜像才能创建容器,这个是硬性要求,下面将模拟使用 centos 系统镜像来演示加深理解
拉取 centos 镜像
docker pull centos
创建容器并启动镜像
# 使用语法docker run [options] images [command][args]
| [options] 参数 | 说明 |
|---|---|
| —name | 为容器指定一个名称 |
| -d | 后台运行容器,并返回容器ID,也称启动守护式容器 |
| -l | 以交互模式运行容器,一般配合 -t 同时使用 |
| -t | 为容器重新分配一个伪输入端,类似windows的cmd窗口,一般配合 -l 同时使用 |
| -P | 随机端口映射 |
| -p | 指定端口映射,有四种格式 1、ip:hostPort:containerPort 2、ip::containerPort 3、hostPort:containerPort 4、containerPort |
使用默认语法运行

上面加了 -d 运行实例,按逻辑来说,centos 应该是支持后台运行的,但通过 docker ps 发现并没有在后台运行, docker ps -a 查看具体内容
发现 centos 一启动就关闭了,这是因为 Docker 容器后台运行,必须要有一个前台进程,容器运行的命令如果不是那些 一直挂起来的命令(比如运行top、tall),容器就会自动退出,这个是 docker 的机制问题,比如你的 web 容器,以 nginx 为例,正常情况下,我们配置启动服务然后启动service即可,例如 service nginx start ,但是,这样做,nginx 为后台进程模式运行,就导致 docker 前台没有运行的应用 ,这样的容器启动后,会自杀掉,因为它无事可做,自然就没有留下来的道理,最佳的解决方法是:将你要运行的程序以前台进程的形式去运行,也就是接下来所要介绍的
使用交互式运行
# 使用语法docker run -it --name xxxx 镜像名称或者镜像ID /bin/bash

bin 表示 linux 里面的一个目录名称,bash 相当于终端命令,运行后发现可以发现进去了容器里面的目录下, ls -l 查看
退出容器
既然可以进去容器内部,那又是如何从容器内部退出呢,其实也很简单
退出容器分 2 种情况,一种是停止容器并退出,另外一种是容器不停止退出
- 情况1:在容器内部执行
exit命令停止容器并退出 - 情况2:按住键盘
ctrl+p+q不停止容器退出列出容器
| options | 说明 | | —- | —- | | -a | 显示所有运行和不运行的容器,默认值列出正在运行的容器 | | -l | 列出最近创建的容器 | | -n | 列出最近 n 个创建的容器 | | -q | 静默模式,只显示容器ID | | —no-turnc | 不截断输出 |docker ps [options]
重启容器
docker restart 容器ID / 容器名称
启动容器
docker start 容器ID / 容器名称

停止容器
docker stop 容器ID / 容器名称

强制停止容器
docker kill 容器ID / 容器名称 (这里的kill用法和linux中kill用户一样)

删除已经停止的容器
rmi 是删除镜像 ,rm是删除容器
# 单个删除docker rm 容器ID# 多个删除docker rm -f $(docker ps -aq)

