docker命令

以下命令需要进入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:目标文件路径 宿主机上存储目标路径 -----将容器内文件拷贝到宿主机上
posted @ 2020-11-28 22:47  Parallax  阅读(74)  评论(0编辑  收藏  举报