docker基础
run 启动
-i 让终端保持打开状态
-t 启动一个tty
-name 起一个容器名
-h 指定主机名
-v 数据卷
-f 前台运行
-d 后台运行
查正在运行的容器 docker ps
查所有容器 docker ps -a
查上一次运行的容器 docker ps -l
删除一个或多个容器 docker rm ContainerName 删除一个或多个镜像 docker rmi imagesname
查已经下载的镜像 docker images
启动一个镜像 docker run -it docker.io/centos 即 docker run -it imagesname:TAG 默认TAG是latest 制定一个名字docker run -it --name zzx centos 一定要加--name不然认不出
-d后台启动一个容器 docker run -d -it --name zzx centos
停止正在运行的容器docker stop 600db9c1e60b(ContainerID下同)
启动一个已经停止的容器 docker start bc3a516241b2(start
不能够再指定容器启动时运行的指令,如果没有前台进程start可能失败 一启动就退出)
进入一个在后台运行的容器 docker attach bc3a516241b2 (docker exec -it ContainerName /bin/sh) 括号里的用exit也不会真正退出容器继续后台运行, 用attach进入的用exit会退出容器必须用ctrl P Q退出才能继续后台运行
启动一个容器就会在/var/run/docker/libcontainerd下生成相应的文件 pid和sock文件也在这个目录
看一个容器的ps docker top e06fbdd8e829
新建的容器先 yum -y install epel-release tar
查看容器ip docker inspect --format='{{.NetworkSettings.IPAddress}}' my_ng (或者docker inspect 'name'|grep -w IPAddress) 查端口映射 docker port my_ng
已有的容器commit成images (只能提交正在运行的container,即通过docker ps
可以看见的容器) docker commit -m "installed nginx" -a "zzx" bc3a516241b2 nginx/centos
docker commit -m "zzxgrafana" -a "zzx" 3ce856247302 zzx_grafana sha256:325bd34d83ca438db16ef3f27d43fb8bde980db58070e40117f5a7a43746b14b [root@my130 grafana-storage]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE zzx_grafana latest 325bd34d83ca 3 seconds ago 278 MB
[root@my130 docker]# ll /var/lib/docker/image/overlay2/imagedb/content/sha256/
total 44
-rw-------. 1 root root 3362 Mar 10 19:22 1dbe0e931976487e20e5cfb272087e08a9779c88fd5e9617ed7042dd9751ec26
-rw------- 1 root root 7314 Mar 11 21:05 325bd34d83ca438db16ef3f27d43fb8bde980db58070e40117f5a7a43746b14b
-rw------- 1 root root 7317 Mar 11 21:04 60e1c295d85ef1e8d4545d5c3599f5a539f7699e775c9ec9ed44c639309f3f30
-rw------- 1 root root 6491 Mar 10 22:28 7ae78dc7a81146e812f3391bb63f2016099b8730211ca17ac63540e7f2a90bb1
-rw------- 1 root root 6082 Mar 11 00:55 8d0b77430ee9669db866c65a04ae0e9a57c25c24c16d35c68cde7721821b3e00
-rw------- 1 root root 4416 Mar 10 22:24 eb12107075737019dce2d795dd82f5a72197eb3c64b2140392eaad3ba3b8a34e
获取容器PID
[root@nmserver-7 ~]# docker inspect --format "{{.State.Pid}}" mydk
3864
[root@nmserver-7 ~]# nsenter --target 3864 --mount --uts --ipc --net --pid #根据pid进入容器 可根据这两行写一个脚本进入容器
-v
映射目录到属主机中
[root@nmserver-7 _data]# docker run --name volumetest -h zzxv -it -v /zzxtest zzxng /bin/bash #启动一个容器并映射 /zzxtest 到属主机中
[root@nmserver-7 _data]# docker inspect volumetest | grep -A 1 Source # 查看映射的map
"Source": "/var/lib/docker/volumes/49925f2e0adf592f4336c85e737a17265c2ad11a3e333c50ea81fef1aa764543/_data",
"Destination": "/zzxtest",
docker inspect {{.Volumes}} volumetest 这句报错 没法用
指定目录映射
[root@nmserver-7 zzx]# docker run --name ysdir -it -p 1234:80 -v /root/zzx:/ngdir zzxng:001 /bin/bash #映射属主机 /root/zzx到/ngdir
[root@nmserver-7 zzx]# docker run --name urCONTAINER -it --volumes-from CONTAINERname imageName #创建一个容器cpcp 共享ysdir的映射目录
DOCKER 给运行中的容器添加映射端口
方法1
1、获得容器IP
将
container_name
换成实际环境中的容器名
docker inspect `container_name` | grep IPAddress
- 1
2、 iptable转发端口
将容器的8000端口映射到docker主机的8001端口
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
- 1
- 2
方法2
1.提交一个运行中的容器为镜像
docker commit containerid foo/live
- 1
2.运行镜像并添加端口
docker run -d -p 8000:80 foo/live /bin/bash
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
2014-11-14 抓DHCP客户端ip脚本