记录下自己常用的Docker命令
-
容器信息
-
#查看docker容器版本详细信息 docker version #查看docker容器版本简略信息 docker --version或docker -v #查看docker容器信息 docker info #有什么不会的找那个help docker --help
-
-
镜像操作
-
#列出本地images docker images #列出所有镜像,含中间映像层 docker images -a
-
#只显示镜像ID docker images -q #列出所有镜像,含中间映像层,但只显示镜像ID docker images -qa
-
-
镜像搜索
-
#搜索仓库MySQL镜像 docker search mysql #--no-trunc 显示镜像完整 DESCRIPTION 描述 docker search --no-trunc mysql
-
-
-
镜像拉取
-
#下载Redis官方最新镜像,不加tag,默认latest docker pull redis #下载仓库所有Redis镜像 docker pull -a redis ##下载私人仓库镜像,需要仓库全名 docker pull bitnami/redis
-
-
镜像删除
-
#通过镜像名称删除,相当于:docker rmi mysql:latest docker rmi mysql #通过镜像images称删除,如果id前三没有一样的,直接通过前三位id即可删除 docker rmi images_ID #强制删除,即使对应容器正在运行也没关系,但docker ps -a还是能看到该容器存在 docker rmi -f mysql #多个镜像删除,不同镜像间以空格间隔 docker rmi -f mysql tomcat nginx #删除本地全部镜像 docker rmi -f $(docker images -q)
-
-
-
镜像构建
-
新建一个Dockerfile文件 from openjdk:11.0-jdk ## 设置挂载点 VOLUME /tmp ## 复制并修改重命名 ADD halo-1.4.8.jar halo.jar # 运行jar包 RUN bash -c 'touch /halo.jar' ENTRYPOINT ["java","-Xms512m","-Xmx512m","-jar","-Djava.security.egd=file:/dev/./urandom","/halo.jar"]
#-t 镜像名称:版本号 -f指定Dockerfile路径 最后一个是需要构建jar包的路径 docker build -t name:tags -f /home/halo/Dockerfile /home/halo/
-
-
容器启动
-
#启动容器 -d后代运行 -i 以交互模式运行容器;-t 为容器重新分配一个伪输入终端;--name 为容器指定一个名称 -p 宿主机端口:容器端口 -v 将主机目录映射到容器目录 主机:容器 docker run -d -i -t --name otherNames -p 8080:80 -v /home:/home images:tags
-
#启动一个或多个已经被停止的容器 docker start mysql #重启容器 docker restart mysql
-
#列出mysql容器中运行进程 docker top mysql
-
-
容器停止与删除
-
#停止容器 docker stop mysql(也可以通过容器id停止 用法类似imagesId) #杀掉一个运行中的容器 docker kill mysql #删除一个已停止的容器 docker rm mysql #删除一个运行中的容器 docker rm -f mysql #删除多个容器 docker rm -f $(docker ps -a -q) docker ps -a -q | xargs docker rm
-
注意与强制删除镜像的区别
-
-
容器日志
-
#查看mysql容器日志,参数:-f 跟踪日志输出;-t --since 日志开始日期 显示时间戳;--tail 仅列出最新N条容器日志; docker logs -f -t --since 2021-01-10 --tail=20 mysql
-
-
查看容器
-
#查看正在运行的容器 docker ps #查看正在运行的容器的ID docker ps -q #查看所有容器(运行+停止+created) docker ps -a #显示运行容器总文件大小(很赞) docker ps -s
-
-
容器的进入与退出
-
#=#使用run方式在创建时进入 docker run -it mysql /bin/bash #关闭容器并退出 exit docker attach --sig-proxy=false mysql #参数:-i即使没有附加也保持STDIN 打开;-t分配一个伪终端 docker exec -i -t mysql /bin/bash
-
exec和attach区别:
docker exec:Run a command in a running container,翻译过来就是在一个正在运行的容器中执行命令,exec是针对已运行的容器实例进行操作,在已运行的容器中执行命令,不创建和启动新的容器,退出shell不会导致容器停止运行。docker attach:Attach local standard input, output, and error streams to a running container,翻译过来,将本机的标准输入(键盘)、标准输出(屏幕)、错误输出(屏幕)附加到一个运行的容器,也就是说本机的输入直接输到容器中,容器的输出会直接显示在本机的屏幕上,如果退出容器的shell,容器会停止运行。 作者:bin ruan 链接:https://www.zhihu.com/question/276485274/answer/1013996168 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
-
评论区