Docker常用命令
查询存在的容器
docker ps -a
查询日志
docker logs containername
启动容器
docker start containername
停止容器
docker stop containername
重启容器
docker restart containername
删除容器
docker rm containername/CONTAINERID
停止所有容器
docker stop $(docker ps -aq)
管理镜像
docker磁盘使用情况,可清理信息
docker system df
查看镜像空间使用情况的详细信息
docker system df -v
Images/CONTAINERS=0,是没有使用的镜像;
Containers/SIZE,实际占用大小;
VOLUME/LINKS=0,所属容器为0,可以清理;
进入运行中的容器
docker exec -it CONTAINER_NAME /bin/bash
或 docker exec -it CONTAINER_NAME /bin/sh
Ctrl+D,退出运行中的容器。
汇总查看文件大小
du -sh *
进入需要删除的目录,删除当前目录下的所有文件
rm -f *
删除镜像
docker rmi <IMAGE_ID>
镜像的运行实例就是容器,或者说容器会运行当前镜像的实例,所以停止容器-删除容器-再删除镜像。
删除所有未打 tag 的镜像
docker images --no-trunc|grep '<none>'|awk '{print $3}'|xargs docker rmi
要获取所有容器名称及其IP地址
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress}}' $(docker ps -aq)
镜像缺少libgdiplus
The type initializer for 'Gdip' threw an exception. ---> System.DllNotFoundException: Unable to load shared library 'libdl' or one of its dependencies.
解决方法是在生成镜像(Dockerfile)时安装缺失的包,然后重新拉取镜像部署服务。
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base
RUN apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev
Dockerfile
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-stretch-slim AS base
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
EXPOSE 9000
WORKDIR /app
COPY . /app
ENTRYPOINT ["dotnet", "DemoServices.dll"]