Docker常用命令
启动docker
systemctl start docker 停止docker
systemctl stop docker 重启docker
systemctl restart docker 查看状态
systemctl status docker 设置自动开机
systemctl enable docker 帮助类
查看docker版本
docker version 查看docker概要信息
docker info 查看docker总体帮助文档
docker --help 查看docker具体帮助文档
docker 具体命令 --help 镜像命令
列出本地主机上的镜像
docker images - -a :列出所有镜像(含历史镜像)
- -q:只显示镜像id
- -f:过滤
在远程仓库搜索镜像
docker search 镜像名称 -f:过滤
--limit 数量:只展示前几项
下载镜像
docker pull 镜像名称[:tag] 不加 tag时,默认下载最新的镜像(即 tag 为 latest)
查看占据的空间
docker system df 删除镜像
docker rmi 镜像名称/ID 可以使用空格间隔 删除多个镜像
docker rmi 镜像1 镜像2 镜像3 删除全部镜像
docker rmi -f $(docker images -qa) 虚悬镜像
仓库名、标签都是<none>的镜像
容器命令
启动容器
docker run [options] IMAGE [command] [ARG...] --name:为容器指定一个名称
-d:后台运行容器并返回容器ID,(守护式启动容器)
-i:以交互模式 运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用。即 启动交互式容器(前台有伪终端,等待交互)
-e:为容器添加环境变量
-P:随机端口映射。将容器内暴露的所有端口映射到宿主机随机端口
-p:指定映射端口
-p hostPort:containerPort:端口映射,例如-p 8080:80
-p ip:hostPort:containerPort:配置监听地址,例如-p 10.0.0.1:8080:80
-p ip::containerPort:随机分配端口,例如-p 10.0.0.1::80
-p hostPort1:containerPort1 -p hostPort2:containerPort2:指定多个端口映射,例如-p 8080:80 -p 8888:3306
退出交互模式
| exit | ctrl+P+Q | |
|---|---|---|
| 容器是否停止 | 停止 | 容器依然运行 |
正在运行的容器
docker ps [options] -a:列出当前所有正在运行的容器+历史上运行过的容器
-l:显示最近创建的容器
-n:显示最近n个创建的容器
-q:静默模式,只显示容器编号
容器启停
启动已经停止的容器
docker start 容器ID或容器名 重启容器
docker restart 容器ID或容器名 停止容器
docker stop 容器ID或容器名 强制停止容器
docker kill 容器ID或容器名 删除容器
删除已经停止的容器
docker rm 容器ID或容器名 强制删除正在运行的容器
docker rm -f 容器ID或容器名 一次删除多个容器实例
docker rm -f ${docker ps -a -q}
# 或者
docker ps -a -q | xargs docker rm 查看容器日志
docker logs 容器ID或容器名 查看容器内运行的进程
docker top 容器ID或容器名 查看容器内部细节
docker inspect 容器ID或容器名 进入正在运行的容器
docker exec -it 容器ID bashShell 重新进入
docker attach 容器ID docker exec 和 docker attach 区别:
● attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出会导致容器的停止
● exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止
如果有多个终端,都对同一个容器执行了 docker attach,就会出现类似投屏显示的效果。一个终端中输入输出的内容,在其他终端上也会同步的显示。
容器和宿主机文件拷贝
容器到宿主机
docker cp 容器ID:容器内路径 目的主机路径 宿主机到容器
docker cp 主机路径 容器ID:容器内路径 导入和导出容器
export:导出容器的内容流作为一个.tar归档文件(对应 import命令)
import:从tar包中的内容创建一个新的文件系统再导入为镜像(对应export命令)
# 导出
# docker export 容器ID > tar文件名
docker export abc > aaa.tar
# 导入
# cat tar文件 | docker import - 自定义镜像用户/自定义镜像名:自定义镜像版本号
cat aaa.tar | docker import - test/mytest:1.0.1 容器生成新镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[tag] 注意:
Docker挂载主机目录,可能会出现报错:cannot open directory .: Perission denied。
解决方案:在命令中加入参数 --privileged=true。
CentOS7安全模块比之前系统版本加强,不安全的会先禁止,目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了。如果要开启,一般使用 --privileged=true,扩大容器的权限解决挂载没有权限的问题。也即使用该参数,容器内的root才拥有真正的root权限,否则容器内的root只是外部的一个普通用户权限。
- 本文标签: docker
- 本文链接: http://119.91.109.247:8443//article/168
- 版权声明: 本文由张亚东原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权