Docker命令
Docker命令:
官方帮助文档:https://docs.docker.com/engine/reference/builder/
1. docker version # 查看版本信息
2. docker info # 查看系统信息,包括镜像和容器的数据
3. docker [images] --help # 帮助命令
镜像命令
1. docker images # 查看本地的镜像
2. docker search # 搜索镜像
docker search -f starts=3000 # 过滤starts>3000的镜像
3. docker pull 镜像名[:tag] # 下载镜像
例如:docker pull mysql:5.7
Using default tag: latest # 如果不写tag,默认就是latest(最新版)
latest:Pulling from library/mysql
93619dbc5b36: Download complete # 分层下载,docker镜像的核心,联合文件系统
99da31dd6142: Download complete
...
Digest: sha256:dcxxxxxxxxxxxxxxxxxxxxxx # 签名
docker.io/library/mysql:latest # 下载的真实地址
# docker pull mysql == docker pull docker.io/library/mysql:latest
4. docer rmi -f imageId # 删除镜像
docer rmi -f imageId1 imageId2 imageId3 # 删除多个镜像
docer rmi -f $(docker images -aq) # 删除全部镜像
5. docker history imageName(imageId) # 查看镜像的构建历史
6. docker tag mytomcat first-tomcat:1.0 # 复制mytomcat镜像并改名为first-tomcat:1.0
容器命令
有了镜像才可以创建容器,下载一个镜像来测试学习一下
docker pull centos # 下载一个centos镜像
1. docker run [可选参数] image # 新建容器并启动
# 参数说明
--name="Name" # 容器名称
-d # 后台方式运行
-it # 使用交互方式运行,进入到容器内部查看内容
-P(大写) # 内部随机端口映射
( 四种方式:
-P ip:主机端口:容器端口
-P 主机端口:容器端口(*常用)
-P 容器端口
容器端口
)
-p(小写) # 指定端口映射
-e # 环境配置
# 执行:docker run -it centos /bin/bash
# 下图可以很清楚看出,命令执行后,控制台由window进入到了centos容器控制台

2.docker ps # 累出当前正在运行的容器
docker ps [可选参数]
-a # 列出当前以及历史运行过的容器
-n=? # 显示个数,例如:n=1,则只显示一条
-q # 只显示容器的编号
3.exit # 停止容器并退出
Ctrl + P + Q # 退出容器控制台,但容器继续后台运行
4.docker rm containerId # 删除指定容器(正在运行的容器无法删除)
docker rm -f $(docker ps -aq) # 删除全部容器 -f 强制删除
docker ps -a -q | xargs docker rm # 删除全部容器
5.docker start containerId # 启动指定的容器
docker restart containerId # 重启指定的容器
docker stop containerId # 停止指定的容器
docker kill containerId # 强制停止指定的容器
# window 批量删除docker容器
# for 循环 /f 将文件内容循环 %a变量 do 执行后面命令 docker rm %a (容器id)
docker ps -a -q> 1.txt (写入所有已暂停容器id)
for /f %a in (1.txt) do docker rm -f %a
常用的命令
1.docker run -d centos # 后台启动
# 执行完run命令后,再执行 docker ps ,我们会发现没有正在运行的容器
# 原因是:docker容器必须一直处于运行状态,否则就像hello-world,输出一句话程序便结束了。docker运行后台程序,必须# 有一个前台一直提供服务,否则就会自动停止。
2.docker logs -tf containerId # 查看指定容器的日志
docker logs -tf --tail 5 containerId # 查看指定容器的日志,每次打印5条数据
# 接着上面的1说,后台启动后,执行日志命令,会发现没有任何内容
# 原因是:容器里面并没有执行的程序
# docker run -d centos /bin/sh -c "while true;do echo helloword;sleep 1;done;" 写一个shell脚本,让容器一# 直运行,此时通过ps便会看到centos容器一直处于运行状态,通过logs便会看到打印日志
3.docker top containerId # 查看指定容器内的进程
4.docker inspect containerId # 查看指定容器的元数据
5.docker exec -it containerId baseShell # 以交互方式进入正在运行的指定容器(方式一)
# 例如:docker exec -it xxxxx /bin/bash 进入centos容器控制台
6.docker attach containerId # 进入正在运行的指定容器
# exec 与 attach 的区别
exec 进入容器后会开启一个新的终端,可以在里面操作(常用)
attach 进入容器正在执行的终端,不会开启新的终端
7.docker cp containerId:文件路径 本地路径 # 将指定容器内的文件拷贝到本地
# 例如:docker cp 8550d3a1f6f8:/opt/hello.java C:\Users\Administrator\Desktop
# cp 是一个手动过程,之后可以使用 -v 数据卷技术,实现容器和本地文件的互通
# 补充知识:可以在docker hub 上看到很多官方命令,例如 docker run -it --rm tomcat ... 一次性使用,退出后自动删除镜像

学习练习 (nginx)
-
docker search nginx (可以先到docker hub上搜索,查看支持的版本和更多信息)
-
docker pull nginx (拉取nginx镜像)
-
docker run -d --name nginx01 -p 8181:80 nginx (-d 以后台的方式运行,--name 容器命名为nginx01,-p 将容器内部的80端口映射到宿主机8181端口上)
-
docker ps (查看当前运行的容器)
-
curl localhost:8181 (宿主机也就是在本机上执行,查看url运行状态,发起一个请求,在本地浏览器访问也可)
-
docker exec -it containerId /bin/bash (进入容器并开启一个新的终端,whereis nginx 查看nginx的位置)
-
可以通过 top 进程 / inspect 元数据 / logs 日志 等查看容器信息


浙公网安备 33010602011771号