前言
上一篇文章说到了docker的镜像以及常用命令,在docker的使用过程中,一般都是先拉取镜像,然后在镜像的基础上创建并启动容器来运行我们的项目。故此本篇主要是说下容器的创建和相关命令以及简单使用。
新建并启动容器
在docker我们可以通过docker run来新建并启动一个容器,该命令下面有很多选项。下面来列举一些常用的命令:
-d:表示后台运行
-P:随机端口映射
-p:指定端口映射
-t:在新容器内指定一个伪终端或终端。
-i:允许你对容器内的标准输入 (STDIN) 进行交互。
–network:指定网络模式 有以下4个参数可选
【–network=bridge:默认选项,表示连接到默认的网桥】
【–network=host:容器使用宿主机的网络】
【–network=container:NAME_or_ID:告诉Docker让新建的容器使用已有容器的网络配置】
【–network=none:不配置该容器的网络,用户可自定义网络配置】
示例1
echo
示例2
docker run -d -p 80:80 nginx
-d:表示后台运行
-p:表示将容器端口80映射到宿主机端口80
注意:每次docker run都会新建并启动一个容器。
列出容器
使用docker ps可以列出所有运行中的容器,执行命令后可以看到如下的内容
列出所有的容器,包括停止的容器可以使用docker ps-a,查出的列字段含义如下
CONTAINER_ID:表示容器ID。
IMAGE:表示镜像名称。
COMMAND:表示启动容器时运行的命令。
CREATED:表示容器的创建时间。
STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。
PORTS:表示容器对外的端口号。
NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的–name选项自行指定。
命令格式:docker ps [options]
--all,-a default:false 列出所有容器,包括未运行的容器,默认只展示运行的容器
--filter, -f 根据条件过滤显示内容
--format 通过Go语言模板文件展示镜像
--last, -n default:-1 显示最近创建n个容器(包含所有状态)
--latest, -l default:-1 显示最近创建的容器(包含所有状态)
--no-trunc default:fallse 不截断输出
--quiet, -q default:false 静默模式,只展示容器的编号
--size, -s default :false 显示总文件大小
示例
docekr ps -n 5
停止容器
使用docker stop
--time, -t default:10 强制杀死容器前等待的时间,单位是秒
示例
stop
强制停止容器使用docker kill
--signal, -s default:KILL 向容器发送一个信号
示例
kill
启动停止容器
docker run 是新建并启动一个容器,而docker start是启动一个已经创建的容器。
命令格式
docker
--attach, -a default:false 连接STDOUT/STDERR并转发信号
--checkpoint 从该检查点还原
--checkpoint-dir 使用自定义的检查点存储目录
--detach-keys 覆盖断开容器的关键顺序
--interactive, -i default:false 连接容器的STDIN
示例:
docker start 4a30b910f793/容器名称 启动容器
重启容器命令格式
docker
--time, -t default:10 关闭容器前等待的时间,单位是秒
示例:
stop 然后再
进入容器
在某些场景下面我们需要进入到容器进行相关操作
1、使用docker attach命令进入到容器
docker attach 4a30b910f793
在使用attach命令时,如果是多个窗口同时进入容器,很容易发生阻塞。
2、使用nsenter进入容器
nsenter工具包含在util-linux 2.23或更高版本中。为了连接到容器,我们需要找到容器第一个进程的PID,可通过以下命令获取
docker inspect --format
获得pid后就可以进入容器了
nsenter --target
示例
root@localhost ~]# docker inspect --format
3、使用docker exec进入到容器
exec -it 容器id /bin/bash
删除容器
使用docker rm可以删除指定容器
--force, -f default:false 通过SIGKILL信号强制删除正在运行中的容器
--link, -l default:false 删除容器间的网络连接
--volumes, -v default:false 删除与容器关联的卷
示例
4a30b910f793 删除指定的容器 如果删除运行中的容器则用-f参数
导出容器
导出容器指的是将容器导出为一个压缩包
export [OPTIONS] CONTAINER
示例
export docker
导入容器
使用docker import 命令即可从归档文件导入内容并创建镜像
docker
--change, -c 将Dockerfile指令应用到创建的镜像
--message, -m 为导入的镜像设置提交信息
示例
import nginx2.tar nginx 将打包的nginx容器导入