Docker系列之3-常用命令

常用 Docker 命令列表

目前,Docker 共有 13 个管理命令和 41 个通用命令,以下是常用 Docker 命令列表:
docker help — 列出 Docker 可用命令;
docker attach — 将本地输入、输出、错误流附加到正在运行的容器;
docker commit — 从当前更改的容器状态创建新镜像;
docker exec — 在活动或正在运行的容器中运行命令;
docker history — 显示镜像历史记录;
docker info — 显示系统范围信息;
docker inspect — 查找有关 docker 容器和镜像的系统级信息;
docker login — 登录到本地注册表或 Docker Hub;
docker pull — 从本地注册表或 Docker Hub 中提取镜像或存储库;
docker ps — 列出容器的各种属性;
docker restart — 停止并启动容器;
docker rm — 移除容器;
docker rmi — 删除镜像;
docker run — 在隔离容器中运行命令;
docker search — 在 Docker Hub 中搜索镜像;
docker start — 启动已停止的容器;
docker stop — 停止运行容器;
docker version — 提供 docker 版本信息。

查看 Docker 版本和系统信息

无论是在本地还是云端,我们都需要检查 Docker 版本和系统信息,可以使用以下命令找到 Docker 版本:
$ docker version

该命令将显示部分设备信息,比如服务器版本、存储驱动程序、内核版本、操作系统、总内存等。当尝试为当前 Docker 安装启动新资源或尝试找出系统级资源分配问题时,这些信息非常有用,这也是检查运行、停止容器数量及下载镜像数量的快速方法。
$ docker info

搜索和下载 Docker 镜像

可以使用 docker search 命令在 Docker Hub 搜索已有镜像:
$ docker search ubuntu

以上对 ubuntu 的搜索显示可用镜像、描述和官方状态等信息。如果要下载 ubuntu 镜像,可以使用 docker pull 命令:
$ docker pull ubuntu
$ docker pull nginx

如果寻找 Ubuntu 16.04 版本,可使用 16.04 标签下载特定版本:
$ docker pull ubuntu:16.04

查看 Docker 镜像

使用 docker info 命令查找拥有镜像数量:
$ docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 1

docker images 命令可详细列出拥有镜像:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 5e8b97a2a082 2 weeks ago 114MB
ubuntu latest 113a43faa138 2 weeks ago 81.2MB
nginx latest cd5239a0906a 2 weeks ago 109MB

运行镜像的 Docker 容器

假设想在 docker 上运行 NGINX 服务器,可运行以下命令:
$ docker run -p 8080:80 nginx

用 run 命令从 Docker Hub 提取 nginx 映像创建 NGINX 容器。 -p 8080:80 会告诉 Docker 将 localhost 端口 8080 映射到 Docker 容器端口 80,应该能够从 http:// localhost:8080 访问 NGINX 服务器。

NGINX 容器已附加到命令行。如果退出命令行,容器将会停止,可使用 detach(’-d’)启动 NGINX 容器,这样即使退出命令行也可继续运行。
$ docker run -p 8080:80 -d nginx
以上命令将以分离模式启动容器并返回命令行。

也可在容器创建过程中为容器命名。创建一个名为 my_nginx 的 NGINX 容器:
$ docker run –name my_nginx -p 8888:80 -d nginx

使用 docker ps 命令列出 Docker 容器

docker ps 命令允许查找正在运行的所有容器:
$ docker ps

要显示暂停或已停止的容器,需要加 -a 选项:
$ docker ps -a

启动,停止,重启和杀死容器

假设要停止’my_nginx’容器,可使用 CONTAINER ID 或 NAME。
$ docker stop my_nginx

如果’my_nginx’容器处于退出状态。可使用 docker start 再次启动容器:
$ docker start my_nginx

如果由于某些问题而需重启容器,则可使用 restart 命令,这比单独停止和启动容器速度更快:
$ docker restart my_nginx

可以像进程一样终止 docker 容器,比如终止 my_nginx 容器:
$ docker kill my_nginx

Docker Exec Bash 和 Docker SSH

如果需要与 shell 进行交互以创建服务或解决问题,可以使用 docker exec 命令创建交互式 shell。比如,用 bash shell 从 ubuntu 映像启动一个容器:
$ docker run –name my_ubuntu -it ubuntu:latest bash
root@a19c770b8621:/#

root @haracle#表示位于 Docker 容器的 bash shell 中,可以运行 shell 命令:
root@a19c770b8621:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@a19c770b8621:/# pwd
/

如果 my_ubuntu 正在运行。假设想将 Docker ssh 放入’my_ubuntu’容器中,可以使用 docker exec bash:
$ docker exec -it my_ubuntu bash
root@a19c770b8621:/#
使用 docker exec 向容器发出命令。例如,可以直接用命令提示符在 my_ubuntu 容器上运行 ls 命令:
$ docker exec -it my_ubuntu ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr

以分离模式启动容器并使用 docker attach

以上示例用附加模式启动 ubuntu 容器,我们也可在分离模式下启动:
$ docker run -it -d –name my_ubuntu_2 ubuntu:latest bash
75b28b7208359137b3e1dc2843387918e28b4c6c4860ef0cdeac79c205f5cbc4
验证容器是否正在运行:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75b28b720835 ubuntu:latest “bash” 3 minutes ago Up 3 minutes

使用 docker attach 命令获取 docker exec bash-like 效果:
$ docker attach my_ubuntu_2
root@75b28b720835:/#