本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一、帮助命令
1.查看版本:
docker version
2.查看docker信息:
docker info
3.查看docker命令帮助:
docker --help
二、操作镜像命令
1.列出本地主机上的镜像:
docker images [OPTIONS]
OPTIONS 选项说明(可组合使用):
- -a:列出本地所有镜像(含中间映像层)
- -q:只显示镜像ID
- --digests:显示镜像的摘要信息
- --no-trunc:显示完整的镜像信息 (完整的镜像ID)
2.根据镜像名搜寻镜像:
docker search [OPTIONS] 镜像名[:TAG](例:tomcat)
搜索的地址是(可以直接在网站的search搜寻):https://hub.docker.com
OPTIONS 选项说明(可组合使用)
- --no-trunc:显示完整的镜像描述
- -s number:显示start不小于number的镜像
- --automated:只列出自动编译类型的(automated build)镜像
3.下载镜像:
docker pull 镜像名[:TAG]
* TAG 为镜像的版本(默认为last)
4.删除某个镜像:
docker rmi [OPTIONS] 镜像名字(或ID)[:TAG]
- TAG 为镜像的版本(默认为last)
- OPTIONS 选项说明(可组合使用)
- -f:强制删除已经有容器实例对象的镜像
5.删除多个镜像:
docker rmi [OPTIONS] 镜像名1(或ID)[:TAG] 镜像名2(或ID)[:TAG]
- TAG 为镜像的版本(默认为last)
- OPTIONS 选项说明(可组合使用)
- -f:强制删除已经有容器实例对象的镜像
6.删除本地全部镜像:
docker rmi -f $(docker images -aq)
7.镜像commit生成自己的镜像:
docker commit -m=“提交信息” -a=“作者” 容器ID 新的镜像名 [:TAG]
8.将镜像以tar格式保存到宿主机:
docker save -o /path/压缩包名 镜像名[:TAG](或者ID)
9.将镜像压缩包从宿主机加载到docker中:
docker load -i /path/压缩包名
docker load --input /path/压缩包名
三、操作容器命令
前提:先在本地下载了要使用的镜像,然后再容器实例化一个对象。
1.新建并启动容器:
docker run [OPTIONS] 镜像名称或ID(IMAGE) [COMMAND] [ARG...]
OPTIONS 选项说明(可组合使用)
- --name="容器新名字":为容器指定一个名称
- -d: 后台运行容器,返回容器ID,及启动守护式容器
- -i:以交互式模式运行容器(启动交互式容器),通常与-t同时使用
- -t:为容器重新分配一个伪输入终端,通常与-i同时使用
- -P:随机端口映射
- -p:指定端口映射,有以下四种格式:
- ip:hostPort:containerPort
- ip::containerPort
- hostPort:containerPort
- containerPort
2.列出当前所有正在运行的容器:
docker ps [OPTIONS]
OPTIONS 选项说明(可组合使用)
- -a:列出当前所有正在运行的容器+历史上运行过的
- -l:显示最近创建的容器
- -n number:显示最近number个创建的容器
- -q:静默模式,只显示容器编号
- --no-trunc:不截断输出
3.退出容器:
两种退出方式
- exit:容器停止退出
- ctrl + P + Q:容器不停止退出
4.启动容器:
docker start 容器ID(或容器名称)
5.重启容器:
docker restart 容器ID(或容器名称)
6.停止容器:
docker stop 容器ID(或容器名称)
7.强制停止容器:
docker kill 容器ID(或容器名称)
8.删除已停止的容器:
docker rm 容器ID
- 一次性删除多个容器:
docker rm -f $(docker ps -aq) - 或者:
docker ps -aq | xargs docker rm
9.启动一个守护容器:
docker run -d 容器名称(或者ID)
- 启动后使用docker ps -a查看时,发现已经退出。
- docker容器后台运行,必须有一个前台进程
- 问题:docker容器运行非一直挂起的命令(如:top、tail),就会自动退出,这种源于docker的机制。
10.查看容器日志:
docker logs [OPTIONS] 容器名称(或ID)
OPTIONS 选项说明(可组合使用)
- -t:加入时间戳
- -f:跟随最新的日志打印
- -tail number:显示最后number条日
11.查看容器内运行的进程:
docker top 容器名称(或ID)
12.查看容器内部细节:
docker inspect 容器名称(或ID)
13.进入正在运行的容器,并以命令行交互
直接进入命令终端,不启动新的进程:
docker attach 容器名称(或ID)
14、容器中打开新终端,启动新进程:
docker exec -it 容器名称(或者ID) [bashShell]
- 当选项只有-t时,后面可以直接使用bashShell命令,直接输出结果,并退出交互式。
15、容器中文件拷贝到主机上:
docker cp 容器名(或ID):容器内路径 目的主机路径
16、宿主机的文件拷贝到容器中:
docker cp 宿主机文件路径 容器名(或ID):拷贝到容器内的路径
四、问题实例讲解
1、问题描述
nginx正常配置启动服务只要启动响应的service即可,如开启:service nginx start,但是在docker中,这样做nginx为后台进程模式运行,导致docker前台没有运行的应用。这样容器启动后会立即退出。
2、解决的方法:
将你要运行的程序以前台进程的形式运行。