1、查看所有容器和镜像
查看docker安装的镜像:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7 c20987f18b13 15 months ago 448MB
查看docker所有的容器:
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cb2282893697 mysql:5.7 "docker-entrypoint.s…" 2 weeks ago Up 5 days 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
2、查看Docker占用内存
可以通过系统指令df -h查看内存分布:
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 12M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 50G 2.7G 48G 6% /
/dev/sda1 1014M 151M 864M 15% /boot
/dev/mapper/centos-home 46G 33M 46G 1% /home
overlay 50G 2.7G 48G 6% /var/lib/docker/overlay2/76f68e80a852c9850abb6efc685da41bc323d
或者通过指令查找docker info 来查找root路径:
sudo docker info | grep "Docker Root Dir"
然后通过du指令查看 /var/lib/docker目录占用内存:
[root@localhost ~]# du -sh /var/lib/docker
876M /var/lib/docker
也可以通过docker 自带df查看内存详情:
[root@localhost ~]# docker system df -v
Images space usage:
REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS
mysql 5.7 c20987f18b13 15 months ago 448.3MB 0B 448.3MB 1
Containers space usage:
CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED STATUS NAMES
cb2282893697 mysql:5.7 "docker-entrypoint.s…" 0 261B 2 weeks ago Up 5 days mysql
Local Volumes space usage:
VOLUME NAME LINKS SIZE
Build cache usage: 0B
CACHE ID CACHE TYPE SIZE CREATED LAST USED USAGE SHARED
3、查看镜像日志
通过docker logs 来查看当前镜像日志,可以快速定位问题:
[root@localhost ~]# docker logs -f --tail=300 mysql
2023-03-10T05:26:43.633523Z 0 [Note] Plugin 'FEDERATED' is disabled.
2023-03-10T05:26:43.636119Z 0 [Note] InnoDB: Buffer pool(s) load completed at 230310 5:26:43
2023-03-10T05:26:43.640394Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
2023-03-10T05:26:43.640477Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
4、删除容器和镜像
删除容器指令:
#删除一个容器
docker rm -f 容器名/容器ID
#删除多个容器 空格隔开要删除的容器名或容器ID
docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
#删除全部容器
docker rm -f $(docker ps -aq)
删除镜像指令:
#删除一个
docker rmi -f 镜像名/镜像ID
#删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID
#删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)
删除无用的镜像:
# 删除异常停止的容器
docker rm `docker ps -a | grep Exited | awk '{print $1}'`
# 删除名称或标签为none的镜像
docker rmi -f `docker images | grep '<none>' | awk '{print $3}'`
5、构建镜像
构建镜像:
sudo docker build -t jdk_tomcat:8 .
通过docker run 启动jdk_tomcat:8 当前镜像
sudo docker run -itd -p 8080:8080 --name jdk_tomcat jdk_tomcat:8
提交自己定义的镜像:
commit:从容器创建一个新的镜像。参数说明:
-a : 提交的镜像作者;
-c : 使用Dockerfile指令来创建镜像;
-m : 提交时的说明文字;
-p : 在commit时,将容器暂停。
将容器cb2282893697保存为新的镜像
# 并添加提交人信息和说明信息。
docker commit -a "guodong" -m "my db" cb2282893697 mysql:v1
通过docker login 登录容器存放的地址:
docker login --username=*** registry.cn-hangzhou.aliyuncs.com
通过标签和推送指令:
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat:[镜像版本号]
拉取上传的镜像:
sudo docker pull registry.cn-hangzhou.aliyuncs.com/lskdxhl/jdk_comcat:8
6、进入容器内部
可以通过docker指令docker exec来实现:
[root@localhost ~]# docker exec -it mysql /bin/bash
root@cb2282893697:/#
获取容器/镜像的元数据:
[root@localhost /]# docker inspect mysql
7、保存和加载镜像
保存当前mysql镜像:
docker save mysql -o /my_images.tar
生成的位置在:
[root@localhost ~]# cd /
[root@localhost /]# ls
bin data etc lib media my_images.tar proc run shop sys usr
boot dev home lib64 mnt opt root sbin srv tmp var
加载当前保存的镜像:
docker load -i 镜像保存文件位置
8、查找容器
查找docker 容器ID
[root@localhost /]# docker ps | grep mysql
cb2282893697 mysql:5.7 "docker-entrypoint.s…" 2 weeks ago Up 5 days 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql
容器重命名:
docker rename 容器名称 新容器名称
搜索镜像:
[root@localhost /]# docker search mysql
[root@localhost /]# docker search --filter=STARS=13960 mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 13960 [OK]