以下命令需要进入root权限---sudo -s
帮助命令
docker --help
docker version
docker info(version的details版本)
一般的命令都是 docker + command + 可选参数
镜像命令
docker iamges 列出本地主机镜像
docker images -a 列出本地主机所有镜像(包括中间镜像层)
docker images -q 只显示镜像ID
docker images -qa 当前存在的以及之前存在过的镜像ID
docker images --digest:列出镜像,并显示镜像的摘要信息,但是由于屏幕所限会截断显示
docker images --no-trunc:列出镜像,并完整显示摘要信息
docker search 镜像名 从配置镜像仓库搜索镜像,默认是从hub.docker.com查询
docker search -s 30 images-name 利用镜像仓库的star数目进行过滤搜索
docker pull mysql(:latest):一般的命令默认都是指最新版本镜像
docker rmi mysql 删除镜像 #如果有此衍生的容器container在运行,那么会提示与daemon守护进程冲突,无法删除
dcoker rmi -f mysql 强制删除
** 如何传参形式批量删除镜像----类似mysql数据库语言查询传参即可
docker rmi -f $(docker images -qa) ---$后是个变量名
容器命令
docker pull centos(:latest) 配置仓库拉取centos镜像
docker run centos (也可以使用镜像ID) 依据本机centos镜像(本机local没有则先从配置仓库拉取到本机)生成centos容器并运行centos容器
docker run -it centos 以交互模式(-i,一般和-t同时使用)运行centos容器,并为容器重新分配一个伪输入终端(-t)
docker run -d centos 以守护进程在后台运行(由于docker的设计理念,要想将容器在后台运行就必须有前台进程,如果仅仅run启动但没有分配任务,docker会主动kill调这个空闲centos进程)
docker ps ---docker正在运行的(活着的)容器(背上正在背着的集装箱)
docker ps -q 活着的容器以ID名列出
docker ps -l docker引擎经历的上一个容器
docker ps -lq docker引擎经历的上一个容器,以容器ID列出
docker ps -a docker引擎经历的所有容器(活着的和过去关闭的)
docker ps -n 5 docker引擎经历过的最后5个容器
exit ---从centos容器中退回到宿主机,并关闭容器)
CRTL+P+Q ---从centos容器中退回到宿主机,不关闭容器
docker start 容器名/ID --- 启动容器
docker restart 容器名/ID ---重启容器
docker stop 容器名/ID ---正常关闭容器
docker kill 容器名/ID ----立即强制关闭容器
docker rm 容器名/ID ---删除已关闭的容器(rmi--删除镜像images)
docker rm -f 容器名/ID ----强制删除容器
docker rm -f $(docker ps -a -q) 一次性强制删除所有的容器
docker ps -a -q | xargs docker rm -f 先查找通过管道符传给xargs(可以发现传递给删除命令时参数放到了docker rm的前面)
docker logs -f -t --tail 容器ID ----查看容器日志(-t 加入时间戳 -f 打印跟随最新日志, --tail nums 显示最后多少条日志记录)
docker run -d centos /bin/sh -c "while true;do echo hello parallax;sleep 2;done" ---通过shell编程使后台容器一直在工作,而不是闲着直接被kill
"""
$ sudo echo "hahah" >> test.csv
-bash: test.asc: Permission denied
这时可以看到 bash 拒绝这么做,说是权限不够。这是因为重定向符号 “>” 和 ">>" 也是 bash 的命令。我们使用 sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 和 ">>" 命令也具有 root 权限,所以 bash 会认为这两个命令都没有像 test.csv文件写入信息的权限。
解决这一问题的途径有两种。
第一种是利用 "sh -c" 命令,它可以让 bash 将一个字串作为完整的命令来执行,这样就可以将 sudo 的影响范围扩展到整条命令。具体用法如下:
$ sudo /bin/sh -c 'echo "hahah" >> test.asc'
"""
docker top 容器ID ------查看容器内运行的进程,如查看宿主机上的centos容器内运行的进程
docker inspect 容器ID ---查看容器内部细节(因为一个容器其实也是由多个容器嵌套形成的)
docker attach 容器ID----再显示进入后台运行容器的交互环境
docker exec -t 容器ID ----再隐式进入后台运行容器的交互环境(ID后追加/bin/bash就变成了显示进入)
docker exec -t 容器ID ls /tmp ----隐式进入容器,列出其内tmp目录文件夹
docker cp 容器ID:目标文件路径 宿主机上存储目标路径 -----将容器内文件拷贝到宿主机上