Docker 命令
上一篇文章我们了解如何在CentOs安装Docker,接下来我们学习Docker 命令
Docker镜像常用命令
命令 | 解释 |
---|---|
docker images 或者 docker image ls | 列表本地所有镜像 |
docker search 关键词 | 在Docker Hub中搜索镜像 |
docker pull 镜像名称 | 下载Docker镜像 |
docker rmi 镜像id | 删除Docker镜像。加参数-f表示强制删除。 |
docker run 镜像名称称 | 下载Docker镜像 |
docker build -t 标签名称 目录 | 构建Docker镜像,-t 表示指定一个标签 |
docker tag | 为镜像打标签 |
Docker 容器常用命令
命令 | 解释 |
---|---|
docker ps | 列表所有运行中的Docker容器(包括已停止的容器)。该命令参数比较多,-a:列表所有容器;-f:过滤;-q 只列表容器的id。 |
docker version | 查看docker 版本信息 |
docker –version | 查看docker 版本 |
docker info | 查看Docker系统信息,例如:CPU、内存、容器个数等等 |
docker kill 容器id | 杀死id对应容器 |
docker start / stop / restart 容器id | 启动、停止、重启指定容器 |
1 | # 搜索镜像 nginx |
- NAME:镜像仓库名称。
- DESCRIPTION:镜像仓库描述。
- STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于GitHub的Stars。
- OFFICAL:表示是否为官方仓库,该列标记为[OK]的镜像均由各软件的官方项目组创建和维护。由结果可知,java这个镜像仓库是官方仓库,而其他的仓库都不是镜像仓库。
- AUTOMATED:表示是否是自动构建的镜像仓库。
1 | #下载镜像 |
列出镜像
docker images 或者 docker image ls
1
2
3REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 27a188018e18 7 days ago 109MB
hello-world latest fce289e99eb9 3 months ago 1.84kBREPOSITORY:镜像所属仓库名称。
TAG:镜像标签。默认是latest,表示最新。
IMAGE ID:镜像ID,表示镜像唯一标识。
CREATED:镜像创建时间。
SIZE:镜像大小。
删除镜像
1 |
|
docker run 命令启动容器
- 该命令即可新建并启动一个容器
选项 | 含义 |
---|---|
-d | 表示后台运行2 |
-P | 随机端口映射(指定端口映射) |
1 | # 指定端口映射,有以下四种格式。 |
例子 启动一个nginx容器
1 |
|
Docker基本命令实践
列出容器
docker ps -a
1
2CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ded3613de77d nginx "nginx -g 'daemon ..." 4 hours ago About an hour 0.0 :91->80/tcp nervous_curieCONTAINER_ID:表示容器ID。
IMAGE:表示镜像名称。
COMMAND:表示启动容器时运行的命令。
CREATED:表示容器的创建时间。
STATUS:表示容器运行的状态。Up表示运行中,Exited表示已停止。
PORTS:表示容器对外的端口号。
NAMES:表示容器名称。该名称默认由Docker自动生成,也可使用docker run命令的–name选项自行指定。
停止、强制停止、重启、删除容器
1 |
|
进入、退出容器
使用nsenter工具进入容器(nsenter工具包含在util-linux 2.23或更高版本中)
1
2
3
4# 找到容器第一个进程的PID,可通过以下命令获取
docker inspect --format "{{.State.Pid}}" $CONTAINER_ID
# 获得PID,使用nsenter命令进入容器
nsenter --target "$PID" --mount --uts --ipc --net --pid实战例子
1 | [root@gxst_docker_76_16 ~] |
- 退出容器,在容器中使用exit命令即可
1 | root@ded3613de77d:/# exit |
- 可以结合以上两条命令写一个进入容器脚本
1 | # 新建脚本文件 |
脚本代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#Use nsenter to access docker
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
if [ "$#" -gt 1 ]; then
nsenter --target $CPID --mount --uts --ipc --net --pid -- "$2"
else
nsenter --target $CPID --mount --uts --ipc --net --pid -- /bin/bash
fi使用脚本进入容器
1 | sh docker-enter.sh ded3613de77d(容器名称或者ID) |