Docker学习笔记

最近又有时间研究自己的博客了,作为一个DBA,对容器部署基本不感兴趣的,但是有一些应用,或者试验环境,用Docker搭建真的很方便,很容易维护,这不,要恶补补容器知识了,这里只记录下常用的运维语句吧,后面再研究怎么优化配置,打包自己镜像。

官方介绍:
Docker uses a client-server architecture. The Docker client talks to the Docker daemon, which does the heavy lifting of building, running, and distributing your Docker containers. The Docker client and daemon can run on the same system, or you can connect a Docker client to a remote Docker daemon. The Docker client and daemon communicate using a REST API, over UNIX sockets or a network interface. Another Docker client is Docker Compose, that lets you work with applications consisting of a set of containers.

安装Docker

1
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

更换Docker存储卷位置

1
2
3
4
5
6
7
vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://hub.docker.com/"],
"graph":"/app/docker",
"live-restore": true
}

启动

1
systemctl start docker

查看docker内容器

1
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}\t{{.Status}}"

查询镜像

1
docker search mongo

查看镜像版本

1
2
curl https://registry.hub.docker.com/v1/repositories/${docker_img}/tags | python3 -m json.tool | more
curl https://registry.hub.docker.com/v1/repositories/elasticsearch/tags| tr -d '[\[\]" ]' | tr '}' '\n'| awk -F: -v image='elasticsearch' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'

查看版本/基本信息

1
2
docker -v
docker info

拉取镜像

1
docker pull apache/incubator-doris:build-env-1.2

查看已下载镜像

1
docker images

删除镜像

1
docker rmi apache/incubator-doris:build-env-1.2

查看容器

1
docker container ls -all

查看容器运行状态,相当于top

1
2
docker stats
docker top {id}

开启容器

1
docker start doris-014

关闭容器

1
docker stop doris-014

重启容器

1
docker restart doris-014

删除容器

1
docker rm doris-014

连接容器(正在运行)

1
docker attach doris-014

连接容器(正在运行)

1
docker exec -it 容器ID /bin/bash

退出(默认直接关闭)

1
exit

删除所有容器

1
docker rm $(docker ps -a -q)

删除所有镜像

1
docker rmi $(docker images -q)

清理docker磁盘

1
docker system prune -a

查看挂在目录

1
2
docker volume ls
docker volume inspect

查看volumes目录大小

1
du -sh /var/lib/docker/volumes/

清理volumes目录下不同的volume

1
docker volume ls -f dangling=true | awk '{ print $2 }' | xargs docker volume rm

查看清理后的volumes目录大小

/var/lib/docker/tmp清理
有一次制作镜像,一口气后台制作8个镜像,结果,tmp目录瞬间涨到12G。虚机硬盘分配的空间不大,导致了磁盘爆满,还好能直接删除tmp目录下所有的文件目录。

容器清理

1
sudo docker ps --filter status=dead --filter status=exited -aq | xargs -r sudo docker rm -v

镜像清理

1
sudo docker images --no-trunc | grep '<none>' | awk '{ print $3 }' | xargs -r sudo docker rmi

查看所有docker存储卷

1
2
3
sudo docker system df
docker system prune
docker system prune -a

删除所有关闭的容器:

1
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

删除所有dangling镜像(即无tag的镜像):

1
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

删除所有dangling数据卷(即无用的Volume):

1
docker volume rm $(docker volume ls -qf dangling=true)

docker镜像自动更新

1
2
3
4
5
6
7
8
docker pull containrrr/watchtower
docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup \
--schedule "0 0 4 * * *" \
--include-restarting

查看docker日志

1
2
3
docker logs --tail=1000 容器名称
docker-compose -f docker-compose-app.yml logs -f
docker compose -f docker-compose.yml logs -f

启动镜像

1
docker-compose up -d

关闭

1
docker-compose down

Docker学习笔记
https://blog.wongcw.cn/2022/09/17/Docker学习笔记/
作者
wangcw
发布于
2022年9月17日
许可协议