常用指令
- 运行镜像
1
2
3
4
5# bash可以换成其他需要执行的命令或者executable
docker run -v 宿主机目录:镜像目录 -p 宿主机port:镜像port -it 镜像名:tag bash
# 挂载当前目录
docker run -v $PWD/:镜像目录 -it 镜像名:tag bash
windows系统中,如果使用git bash,可能需要添加winpty:
1 | winpty docker run -v 宿主机目录:镜像目录 -p 宿主机port:镜像port -it 镜像名:tag |
windows系统中,宿主机目录使用绝对路径,盘符前有2个”/符号”,比如:
1 | winpty docker run -v //c/test/data:/data -it ubuntu:latest |
删除没有添加tag的所有镜像
1
docker images|grep none|awk '{print $3}'|xargs docker rmi
停止所有容器
1
docker stop $(docker ps -aq)
导出镜像save
1
docker save -o target.tar image_name
导入镜像import
1
docker load --input target.tar
查看镜像
1
docker image ls
删除镜像
1
docker rmi image-name
修改镜像tag
1
2
3docker image ls # 查看image id
docker tag imageID newName:newtag # backend:1.0
docker rmi oldName导出容器:export
1
2
3docker export 容器ID > target.img
或
docker export -o target.img 容器IDtarget.img可以使tar文件,也可以是导出二进制镜像文件img。
容器ID可以使用docker ps查看。容器打包成镜像
1
2
3docker commit 容器ID 镜像名:1.0
# 查看
docker image ls可以使用
docker save
导出镜像。导入容器
1
docker import 容器文件
查看所有容器
1
docker ps -a
查看运行的容器
1
docker ps
删除容器
1
docker rm containID
删除所有停止的容器
1
docker container prune
进入运行中的容器
1
2
3
4docker exec -i -t containerID/name /bin/bash
## windows上如果出错,使用:
winpty docker exec -i -t containerID/name /bin/bash查看与导出日志
1
2
3
4
5
6
7
8
9
10
11
12
13
14# docker-compose 查看
docker-compose logs -f <容器名>
# 指定末尾行数
docker-compose logs -n 1000 -f <容器名>
# 导出到指定文件
docker logs --since="2022-04-22T9:00:00" --until="2022-04-23T9:00:00" containerID >> file.log
# 查看各容器日志的大小
find /var/lib/docker/containers/ -name *-json.log |xargs du -sh
# 清理日志
cat /dev/null > /var/lib/docker/containers/id/id-json.log
注意:如果docker容器正在运行,那么使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。原因是在Linux或者Unix系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。提供一个日志清理脚本clean_docker_log.sh,内容如下:
1 |
|
1 | chmod +x clean_docker_log.sh |
docker获取镜像构建
pull私人仓库镜像。
如果是http的仓库服务器,则需要新建或修改/etc/docker/daemon.json文件,其中修改对应的IP:Port:
1 | { |
1 | # pull docker image |