常用命令
常用命令
帮助命令
docker version #版本信息
docker info #docker的系统信息,包括镜像和容器的数量
docker 命令 --help #docker命令帮助
官方命令文档: https://docs.docker.com/reference/
镜像命令
docker images 查看本地主机上的镜像
[root@jinpengyong ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 7 weeks ago 13.3kB
仓库 标签 id 创建时间 大小
#可选项
Options:
-a, --all #列出所有镜像
-q, --quiet #只显示镜像id
docker search 搜索镜像
[root@jinpengyong ~]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 11686 [OK]
mariadb MariaDB Server is a high performing open sou… 4453 [OK]
mysql/mysql-server Optimized MySQL Server Docker images. Create… 868 [OK]
#可选项,通过收藏过滤
--filter=STARS=3000 #搜索出的镜像收藏>=3000
docker pull 下载
#下载镜像 docker pull 镜像名[:tag] 不写tag就是latest最新
[root@jinpengyong ~]# docker pull mysql
[root@jinpengyong ~]# docker pull mysql:5.7 #指定版本下载
docker rmi 删除
[root@jinpengyong ~]# docker rmi -f 镜像id 镜像id #根据镜像id删除,可以多个
[root@jinpengyong ~]# docker rmi -f $(docker images -aq) #删除所有,根据括号里查出的结果删除
容器命令
有了镜像才能创建容器,下载一个centos镜像来学习 。
docker pull centos
新建容器并启动
docker run [可选参数] image
#参数说明
--name 自定义容器名 #容器名字,用来区分容器
-d #后台运行
-it #交互方式运行,进入容器查看内容
-p #小写p指定容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P #大写p 随机指定端口
#测试,启动并进入容器
[root@jinpengyong ~]# docker run -it centos /bin/bash
[root@07f6ca15bbb3 /]#
#查看容器内的centos
[root@07f6ca15bbb3 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
#退出容器,回到主机
[root@07f6ca15bbb3 /]# exit
exit
列出所有运行中的容器
#docker ps 查看运行中的容
-a #查看正在运行的+ 曾经运行过的容器
-n=? #显示最近创建的容器,n代表个数
-q #只显示容器的编号
退出容器
exit #容器停止并退出
Ctrl+P+Q #容器不停止退出
删除容器
docker rm 容器id #删除指定容器,不能删除正在运行的容器,如果要强制删除,rm -f
docker rm -f $(docker ps -aq) #删除所有容器
docker ps -a -q|xargs docker rm #删除所有容器
启动和停止容器
docker start 容器id #启动容器
docker restart 容器id #重启容器
docer stop 容器id #停止正在运行的容器
docker kill 容器id #强制停止当前容器
其他常用命令
后台启动容器
# 命令 docker run -d 镜像名
docker run -d centos
# 问题:docker ps,发现centos停止了
# 常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止
# nginx 容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -f -t --tail 容器 #没有日志
# 自己编写一段shell脚本
docker run -d centos /bin/bash -c "while true;do echo jpy;sleep 1;done"
# 日志
# -f #日志带上时间
# -tail num #日志条数
docker logs -tf 5ad837b769ad #小时所有日志
docker logs -tf --tail 10 5ad837b769ad #显示10条日志
查看容器中进程信息
docker top 容器id
查看镜像的元数据
docker inspect 容器id
进入当前正在运行的容器
# 通常容器都是后台运行,有时需进入容器,修改一些配置
# 方式1 命令
docker exec -it 容器id /bin/bash
#方式2
docker attach 容器id
# docker exec 进入容器后开启一个新的终端,可以在里面操作(常用)
# docker attach 进入容器正在执行的终端,不会启动新的进程
将容器内文件拷贝到本机
docker cp 容器id:文件绝对路径 本机路径
docker cp 123:/home/test.java /home # 容器home里的test.java拷贝到本机home下
安装nginx
docker search nginx
docker pull nginx #下载镜像
#容器的80端口映射到本机的3344端口
docker run -d --name nginx01 -p 3344:80 nginx
#测试
curl localhost:3344
#进入容器
docker exec -it 容器id /bin/bash
whereis nginx
cd /etc/nginx # nginx文件
#停止容器后,3344就无法访问了
docker stop 容器id
问题:要改动nginx配置文件,必须进入容器内。麻烦!要是可以在容器外部提供一个映射路径,达到在容器外部修改文件,容器内部就可以自动修改?-v 数据卷技术
安装tomcat
# 官方
docker run -it --rm tomcat:9.0 # rm 用完即删,一般用来测试
docker ps -a # 发现并没有tomat,就说明--rm是用完即删
#正式安装
docker pull tomcat #下载
docker run -d -p 3355:8080 --name tomcat01 tomcat:9.0 #运行
测试访问时,404
docker exec -it 容器id或名字 /bin/bash
cd webapps 发现里面是空的,所以才是404,这是阿里云镜像的原因,默认是最小的镜像,把不必要的剔除了
解决:在webapps统计目录下有webapps.dist文件夹,将所有webapps.dist里文件拷贝到webapps里
问题:每次部署项目,都要进入容器,麻烦!要是可以在外部提供一个映射,webapps,在外部放置项目,就自动同步到容器内部就好了
安装es和kibana
# --net somenetwork 网络配置
#启动
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:版本号
#启动后,linux变得很卡 elasticsearch很占内存
docker stats #查看cpu状态 es占内存很大
#关闭es,增加内存限制,修改配置文件 -e 环境修改
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:版本号
可视化
portainer(暂用)
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
-
访问测试 curl localhost:8088
-
查看界面:外网ip:8088
-
选择local--》connect
Rancher(CI/CD再用)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY