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/init
docker 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:tagimageId > 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
    done

docker占用自盘空间查看和清理

  • 查看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

关联文档

centos7服务器清理磁盘空间

作者:张三  创建时间:2022-04-18 20:13
最后编辑:张三  更新时间:2026-06-09 15:46
上一篇:
下一篇: