# 下载镜像并运行容器
docker image pull nginx
docker container run -d --name nginx-test -p 8080:80 nginx
# 停止并删除容器
docker container stop nginx-test
docker container rm nginx-test
# 删除镜像
docker image prune
# -a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;
# f, --force:强制删除镜像文件,无需弹出提示确认;
# 删除镜像
docker image rm
docker container [command]
docker network [command]
docker volume [command]
docker image [command]
与容器进行交互
# 与容器进行交互
docker container attach nginx-test
# 启动容器 后台
docker container start nginx-test
# ctrl+c 容器依旧运行
docker container attach --sig-proxy=false nginx-test
# attach 连接容器正在运行的进程 即一个进程
# exec 在容器中生成第二个进程
docker container exec nginx-test cat /etc/debian_version
# 对容器控制台访问
# -i interactive 使Docker保持stdin打开状态
# -t tty 为会话分配一个伪TTY teletypewriter 电传打字机 纯文本控制台(终端)
docker container exec -i -t nginx-test /bin/bash
日志
logs 与容器stdout流进行交互
# 查看最后写入stdout的5条日志
docker container logs --tail 5 nginx-test
# 实时查看日志
docker container logs -f nginx-test
# 查看自特定时间以来记录的所有内容
docker container logs --since 2022-08-24T10:00:00 nginx-test
# 列出指定容器中运行的进程
docker container top nginx-test
stats
供有关指定容器的实时信息
# 可传递Name or ID 默认查看所有正在运行的容器
docker container stats
# 查看容器占用的资源
docker stats <container_id>
限制资源
# --cpu-shares 512 cpu优先级(权重) 4096 高
# 降低cpu优先级并限制内存为128M
# 设置内存后Docker默认将交换内存设置其两倍
docker container run -d --name nginx-test --cpu-shares 512 --memory 128M -p 8080:80 nginx
# 更新正在运行的容器
docker container update --cpu-shares 512 --memory 128M nginx-test
# 展示正在运行容器的所有配置 以字节显示
docker container inspect nginx-test
docker container inspect nginx-test | grep -i memory
容器状态和其他(较少使用)指令
# 快速启动5个容器 Up
for i in {1..5}; do docker container run -d --name nginx$(printf "$i") nginx; done
docker container ls -a
# 暂停和取消暂停
# 暂停nginx1
docker container pause nginx1
# 取消暂停 恢复
docker container unpause nginx1
stop, start, restart, and kill
# stop 与在前台使用ctrl+c一样 SIGTERM
docker container stop nginx2
# -t time 一分钟后终止进程
docker container stop -t 60 nginx3
# start启动进程备份 从头开始执行而不是从stop开始
docker container start nginx2 nginx3
# restart 重启
docker container restart -t 60 nginx4
# kill 强制杀死容器
docker container kill nginx5 SIGKILL
移除容器
# prune 移除exit状态的容器
docker container prune
# 删除指定容器
docker container rm nginx4
docker container stop nginx3 && docker container rm nginx3
# 删除exited状态的所有容器
docker rm $(docker ps -a -f status=exited -q)
docker container purge
# https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes
其他指令
# create 创建一个容器但不启动
docker container create --name nginx-test -p 8080:80 nginx
docker container start nginx-test
# port 展示容器的端口映射
docker container port nginx-test
# 查看原始镜像和正在运行的容器之间的差异
# 在容器中创建一个空白文件 方便查看差异
docker container exec nginx-test touch /tmp/testing
# 查看差异
docker container diff nginx-test
# 复制刚刚在容器中创建的文件
docker container cp nginx-test:/tmp/testing testing
# 复制回容器
echo "This is a test of copying a file from the host machine to the container" > testing
docker container cp testing nginx-test:/tmp/testing
docker container exec nginx-test cat /tmp/testing
镜像
# 删除所有悬挂镜像 没有标签的
docker image purge
# -a 删除所有没有使用的镜像