文章目录
- 官方地址
- 显示版本信息
- 显示Docker系统信息
- 镜像命令
- 查看本地镜像(images)
- 搜索镜像(search)
- 下载镜像(pull)
- 删除镜像(rmi)
- 远程仓库登录(login)
- 远程仓库退出登录(logout)
- 镜像标签(tag)
- 镜像推送到远程仓库(push)
- 容器命令
- 启动镜像(run)
- 列出容器(ps)
- 退出容器
- 容器状态管理(重启、停止、启动)
- 删除容器(rm)
- 常用其他命令
- 查看容器日志(logs)
- 显示容器中进程信息(top)
- 查看镜像信息(inspect)
- 进入容器(exec)
- 上传或下载容器文件(cp)
- 提交镜像(commit)
官方地址
帮助文档官方地址:https://docs.docker.com/engine/reference/commandline/docker/
镜像仓库地址:https://hub.docker.com/
注意:访问慢?转圈圈?不动弹?是不是网址错误?NO!这都不是,访问慢这是正常情况,多刷刷就🆗啦!
显示版本信息
docker version // 显示Docker的版本信息
执行“docker version”分别会输出“Client”客户端和“Server”服务端相关信息,如果“server”端没启动就不会显示相关“server”端信息。
containerd:Docker为了兼容OCI标准,将容器Runtime及其管理功能从Docker守护进程中剥离出来,用于不启动Docker也能直接通过Containerd来管理容器。
runc:Docker按照OCF开放容器格式标准制定的一个轻量级工具,可以使用RunC不通过Docker引擎即可实现容器的启动、停止和资源隔离等功能。
显示Docker系统信息
docker info // 显示Docker的系统信息,包括镜像和容器的数量
执行“docker info”分别会输出“Client”客户端和“Server”服务端相关信息,如果“server”端没启动会在“server”端显示位置显示报错。
Client端相关输出说明:
- Debug Mode:是否开启Debug模式。
Server端相关输出说明:
- Containers:容器个数。
- Running:正在运行的容器个数。
- Paused:暂停的容器个数。
- Stopped:停止的容器个数。
- Images:镜像个数。
- Storage Driver:储存驱动,一般为overlay2性能好速度快。
- Backing Filesystem:服务器文件系统。
- Logging Driver:日志驱动,json-file表示日志会存放在本地。
- Cgroup Driver:限制和隔离的驱动,生产环境建议是systemd(重点)
- Swarm:Docker官方的容器编排工具,inactive不开启、active开启。
- Docker Root Dir:数据存放位置,docker根目录,生产环境建议独立的磁盘。
- Live Restore Enabled:Docker热更新,生产环境建议设置为true。因为如果是false则表示重启docker服务的时候docker容器也会被进行重启,如果设置为true则重启docker时容器不会被重启。
镜像命令
查看本地镜像(images)
docker images // 显示本地所有镜像
输出结果:
输出说明:REPOSITORY(镜像的仓库源)、TAG(镜像的标签)、IMAGE ID(镜像ID)、CREATED(镜像创建时间)、SIZE(镜像大小)。
注意:镜像的大小并不一定是该镜像的真实大小,因为存在联合文件系统层级关系。
docker images -qa // 显示本地所有镜像ID
输出结果:
搜索镜像(search)
docker search nginx // 搜索NGINX镜像
注意:推荐使用官方的镜像,不要使用第三方镜像,可能会存在病毒。
搜索指定大小镜像:可使用“–filter=stars=3000”这里3000是镜像的星级大小。
docker search nginx --filter=stars=3000 // 搜索指定星标大小(方式一)
docker search nginx -f stars=3000 // 搜索指定星标大小(方式二)
下载镜像(pull)
docker pull nginx // 下载NGINX镜像
注意:默认不指定版本号则下载最新版本的nginx镜像。
输出说明:Using default tag(镜像版本,latest表示最新版)、latest(正在下载)、Digest(防伪标签)、Status(当前下载状态)。
docker pull nginx:1.22.0 // 下载指定镜像版本
注意:指定版本镜像下载,需要先去官网https://hub.docker.com确定是否有该版本镜像,如果没有则会报错。另外下载镜像的时候,如果已经下载过基础镜像,那么它会直接跳过基础镜像的下载,从而节省系统内存资源降低消耗。
删除镜像(rmi)
若本地有多个同名不同版本的镜像可使用分号“:”来进行版本的指定删除,否则将会删除本地版本为latest的镜像,也可直接针对镜像ID来进行删除。
docker rmi nginx:1.22.0 // 通过镜像源和tag版本进行删除
docker rim b3c5c59017fb // 通过镜像ID进行删除
docker rmi 镜像ID 镜像ID // 同时删除多个镜像
删除本地全部镜像:
docker rmi $(docker images -aq)
docker rmi $(docker images -aq) -f // 强制删除
注意:在进行全部镜像删除的时候,如果镜像有被启动过,在容器中未被删除则无法进行镜像的删除。如果非要将全部镜像删除,可采用“-f”参数来进行满足,但删除后容器仍然存在。
远程仓库登录(login)
docker中login用于登录到一个docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库“Docker Hub”仓库,这里可以是“阿里云、网易云、私有镜像仓库地址。下面使用阿里云镜像仓库做演示。
阿里云镜像仓库:登录链接: 阿里云→控制台→产品与服务→容器服务→容器镜像服务。
点击红框进去:
docker login -u账号 仓库地址(默认:docker Hub) // 登录远程仓库(语法格式)
docker login -uchlstudy // 登录到docker hub仓库(默认:无需指定地址)
docker login -u189****3537 registry.cn-hangzhou.aliyuncs.com // 登录到阿里云镜像仓库
命令操作截图:
当我们登录到远程仓库后就可以将本地的镜像发送至远程仓库当中,docker登录信息存放在“~/.docker/config.jso”。
远程仓库退出登录(logout)
docker中logout用于退出一个docker镜像仓库的登录,如果未指定镜像仓库地址,默认为官方“docker hub”仓库。
docker logout 仓库地址(默认:docker Hub) // 退出远程仓库(语法格式)
docker logout // 退出docker hub仓库登录
docker logout registry.cn-hangzhou.aliyuncs.com // 退出阿里云镜像仓库登录
提示:退出登录后会在“~/.docker/config.jso”进行对应的删除登录信息,也可以按照登录信息中的登录信息进行对应的退出登录。
镜像标签(tag)
docker中tag用于标记本地镜像并将其归类为某一个仓库
docker tag 镜像名称:版本号 仓库地址/仓库名称/镜像名称:版本号 // 语法格式
// NGINX镜像打标签(docker hub仓库)
docker tag nginx:1.22.0 chlstudy/newnginx:v1.0
// NGINX镜像打标签(阿里云仓库)
docker tag nginx:1.22.0 registry.cn-hangzhou.aliyuncs.com/chlstudy/mynginx:v1.0
注意:标签的仓库名称、镜像名称一定要与远程仓库中的一致,否则你在上传镜像的到远程仓库的时候可能会报错!!!
镜像推送到远程仓库(push)
docker中push用于将本地镜像上传到远程镜像仓库中,上传的前提需要先登录到对应的镜像仓库。
docker push 镜像名称 // 镜像推送到远程仓库(语法格式)
docker push chlstudy/newnginx:v1.0 // 推送镜像到docker hub仓库(推送很慢)
docker push registry.cn-hangzhou.aliyuncs.com/chlstudy/mynginx:v1.0 // 推送镜像到阿里云
举例(以推送镜像到阿里云为例):当我们将镜像推送到阿里云镜像后可以登录到https://www.aliyun.com/然后“控制台、点击三个标图、找到容器镜像服务、实例列表、个人实例”就可以看见自己的镜像仓库了。
容器命令
注意:启动容器的时候如报错“警告:IPv4转发已禁用,网络将不起作用”。
解决办法如下:
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf
sysctl --system
启动镜像(run)
可选参数:
- –name=”name”:为容器设置名称。
- –detach,-d:后台运行容器并打印容器ID
- -it:交互式运行(-i保持STDIN标准输入打开、-t分配一个伪TTY)。
- -p:端口映射(格式“主机端口:容器端口”)。
- -P:随机指定端口。
- –rm:当容器退出时自动剔除(用于测试)
说明:docker run命令后面加“/bin/bash”表示载入容器后运行bash,如果不加“/bin/bash”就必须保持一个进程正在运行,否则容器就会关闭,当容器中有一个进程运行时就可以不用加“/bin/bash”。
前台启动:使用“/bin/bash”或“bash”启动终端打开容器。
docker run --name nginx1.22.0 -it -p 80:80 b3c5c59017fb /bin/bash
docker run -it centos /bin/bash // 这样也可以启动一个CentOS系统容器
可在浏览器访问:宿主机IP
注意:启动容器时,它会检测本地是否有该镜像,如果有则直接启动,若没有则去远程仓库下载,如果远程仓库并没有该镜像则会报错。启动过后的容器与本地系统没有任何关系,如需退出容器可使用“exit”,退出后如果容器中没有应用运行则会自动停止。
后台启动:容器使用后台运行必须要有一个前台进程,否则docker会自动停止该容器。
docker run -d centos
列出容器(ps)
docker ps // 显示正在运行的容器
docker ps -a // 显示所有容器(包含已停止容器)
docker ps -q // 显示当前正在运行的容器ID
docker ps -qa // 显示所有(包含:正在运行、已停止)
退出容器
exit // 停止容器并退出
ctrl + p + q // 组合键(容器不停止退出)
容器状态管理(重启、停止、启动)
重启容器:docker restart 容器ID
停止容器:docker stop 容器ID
启动容器:docker start 容器ID
杀死一个或多个正在运行的容器:docker kill 容器ID
删除容器(rm)
删除指定容器(不能删除正在运行的容器,如需删除需“-f”参数):docker rm 容器ID
删除所有容器(包含正在运行的容器):docker rm -f $(docker ps -qa)
删除所有容器(包含正在运行的容器):docker ps -a -q |xargs docker rm
常用其他命令
查看容器日志(logs)
查看全部日志:参数“-t”时间戳、“-f”跟踪最新的日志打印。
docker logs -tf 容器ID
查看指定数量日志:参数“–tail”显示最新多少条日志。
docker logs -tf --tail 10 容器ID // 显示最后十条日志
显示容器中进程信息(top)
docker top 容器ID
查看镜像信息(inspect)
docker inspect 容器ID
进入容器(exec)
docker exec -it 容器ID /bin/bash // 进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach 容器ID // 进入容器正在执行的终端,不会启动新的进行
上传或下载容器文件(cp)
docker cp 容器ID:/容器内文件位置 下载到本地位置 // 下载文件到本地
docker cp 本地文件路径 容器ID:/容器内文件位置 // 上传本地文件到容器
docker cp c059e7bc6835:/etc/nginx/nginx.conf . // 下载文件到本地
docker cp ./index.html c059e7bc6835:/usr/share/nginx/html/ // 上传本地文件到容器
命令执行结果:
提交镜像(commit)
当容器中文件或设置进行更新后想保存当前容器的容器状态,可以通过“docker commit”来将容器提交成新的镜像,这种方式类似VMware当中的快照功能。注意:提交操作将不包含安装在容器内的数据卷。
docker commit:提交容器成为新的副本(镜像)
docker commit -m=”提交的描述信息” -a=”作者” 容器ID:[tag] // 语法格式
实战测试: 提交tomcat镜像
docker pull tomcat:9.0 // 下载tomcat镜像
docker run --name tomcat_01 -it -p8080:8080 b8e65a4d736d // 启动镜像
命令执行结果:
浏览器访问(报错):报错的原因是因为tomcat默认没有webapps应用。
解决此办法:
docker exec -it 9b8116ce6c59 /bin/bash // 进入容器
cp -r webapps.dist/* webapps/ // 将webapps.dist目录中的内容拷贝到webapps中
访问浏览器:172.66.66.66:8080
从容器创建新的镜像 :
docker commit -m="webapps" -a="caihonglong" 0cf8cd0c719a chl_tomcat:1.0
结束语
🐱🐉 至此文档就到此结束了,谢谢各位大佬给予的支持!