how:怎么玩
使用testcontainers
https://java.testcontainers.org 创建测试中间件
docker-java操作docker
docker-java是一款操作docker的java库。
- vi /lib/systemd/system/docker.service
- Execstart=/usr/bin/dockerd后加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 退出并且保存
- 运行以下命令:
- systemctl daemon-reload
- service docker restart
- systemctl status docker
- netstat -nlp |grep 2375 可以查看2375是否已经被监听
- 浏览器地址栏中访问:http://xxx.xxx.xxx.xxx:2375/info
docker-ui(非必需)
需要开启动2375端口
portainer is suggested!
docker run -d --name portainerUI -p 9000:9000 portainer/portainer
lazydocker (termined-ui way to manage docker)
curl https://raw.githubusercontent.com/jesseduffield/lazydocker/master/scripts/install_update_linux.sh | bash
并将~/.local/bin配置到环境变量的PATH中即可。
建议添加别名
alias ld='lazydocker'
常见问题
在容器中编辑文件,但没有vi、vim、nano等编辑器
- 将本机的文件复制到容器中, docker cp xxx.cfg 容器id或名称:绝对路径/xxx.cfg
- 将容器的文件复制到本机中, docker cp 容器id或名称:/tmp/index.txt index2.txt
use centos7 in docker
docker run -d -p 5000:22 --name centos74 --privileged=true centos:latest /usr/sbin/initdocker exec -it centos74 /bin/bash
docker mysql 设置开机启动
restart: always
restart: unless-stopped
如何批量删除Docker中已经停止的容器
(https://blog.csdn.net/jiangeeq/article/details/79499324)
查看<none>容器
docker ps -a | grep "<none>"
清除<none>容器
docker rm $(docker ps -aq --filter "status=dead" --filter "status=exited" --filter "status=created")
清除<none>镜像
docker rmi $(docker images -f "dangling=true" -q)#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,
sudo docker ps -a|grep Exited|awk ‘{print $1}’
#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器
sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`- 列举出网络
docker network ls - 删除网络
docker network rm xxxx - 查看容器的名称、ip、端口映射
docker inspect -f='{{.Name}} {{.NetworkSettings.IPAddress}} {{.HostConfig.PortBindings}}' $(docker ps -aq) - 查看容器的ip
docker inspect CONTAINER_NAME | grep IPAddress - 删除REPOSITORY为
<none>的镜像
docker image rm `docker images |grep '<none>'|awk '{print $3}'`查看镜像的Dockerfile
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage:1.1"
dfimage -sV=1.36 0bb0b19e383f > a.log/etc/docker/daemon.json文件内容中多一个,导致docker启动不了
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://xxx.mirror.aliyuncs.com", ]
}docker volume operation
docker volume ls/create/inspect/rm
backup
docker run –rm –volumes-from docker-nexus3_nexus3_1_be78625a2c9d -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /nexus-data
restore
$ docker run –rm –volumes-from DOCKER_CONTAINER_NAME -v $(pwd):/backup ubuntu bash -c “tar xvf /backup/backup.tar -C /nexus-data –strip 1”
镜像
拉取镜像 docker pull maven:3.6.3-openjdk-8-slim
删除镜像 docker rmi maven:3.6.3-openjdk-8-slim
导入导出
镜像导入导出
镜像导入导出不影响镜像名称与tag
docker images
# 导出镜像,docker save 镜像name:tag或imageId > xxx.tar
docker save java:8 > java_8.tar
# 导出多个镜像成一个文件
docker save -o image_all.tar elasticsearch:8 kibana:5.5
# 载入镜像
docker load < java_8.tar容器导入导出
docker ps
# 把容器导出成文件
docker export 34d2b74c7a0b > mysql57.tar日志与清理
docker容器日志一般在/var/lib/docker/containers/目录下,可执行find /var/lib/docker/containers/ -name *-json.log |xargs du -sh查看日志文件大小。
清空容器日志时不能使用rm删除,要使用“写覆盖”的方式。清空所有容器日志的脚本。
#!/bin/sh
# filename: clean_dockerlog.sh
# logs后面不能有空格
logs=`find /var/lib/docker/containers/ -name \*-json.log`
for docker_log in $logs
do
echo " " > $docker_log
donedocker占用自盘空间查看和清理
- 查看docker占用的磁盘空间
docker system df - 清理docker使用的磁盘空间(Docker提供了
docker system prune,可以用于清理dangling镜像和容器,以及失效的数据卷和网络)docker system prune
常用docker
| 容器 | 版本 | 大小 |
|---|---|---|
| easysoft/zentao | 12.5.2 | 647MB |
| openjdk | 8-jdk-slim | 288MB |
| openjdk | 8-jre-slim | 187MB |
| openjdk | 8u275-slim | 288MB |
| openjdk | 8-jre-alpine | 84.9MB |
| openjdk | 8-jdk-alpine | 105MB |
常见说明
挂载点说明
docker-compose.yml中的volumes节点中/opt/docker_data/vsftpd:/home/vsftpd:rw,左边是宿主机目录,右边是容器目录,:rw是权限,可不写
查看docker窗口占用内存
docker stats --no-stream
查看docker所有映射到宿主机的端口
docker ps -a --format "table {{.Names}}\t{{.Ports}}"
该命令将显示所有正在运行的容器的名称和它们所映射的端口信息。
如果您只想查看正在运行的容器的端口映射信息,可以省略 -a 参数:
docker ps --format "table {{.Names}}\t{{.Ports}}"
输出中的 PORTS 列会显示容器的端口映射信息。例如,0.0.0.0:8080->80/tcp 表示容器的端口 80 映射到宿主机的端口 8080。
容器无法使用ping/telnet/curl/wget等命令时
docker run --rm -it --network container:<your-container-id> curlimages/curl sh
然后执行telnet/curl/wget关联文档
最后编辑:张三 更新时间:2026-06-09 15:46