# 下载镜像并运行容器docker image pull nginxdocker container run -d --name nginx-test -p 8080:80 nginx# 停止并删除容器docker container stop nginx-testdocker container rm nginx-test# 删除镜像docker image prune# -a, --all: 删除所有没有用的镜像,而不仅仅是临时文件;# f, --force:强制删除镜像文件,无需弹出提示确认;# 删除镜像docker image rmdocker 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-testdocker container inspect nginx-test | grep -i memory
容器状态和其他(较少使用)指令
# 快速启动5个容器 Upfor i in {1..5}; do docker container run -d --name nginx$(printf "$i") nginx; donedocker container ls -a# 暂停和取消暂停# 暂停nginx1docker container pause nginx1# 取消暂停 恢复docker container unpause nginx1
stop, start, restart, and kill
# stop 与在前台使用ctrl+c一样 SIGTERMdocker 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 nginx4docker 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 nginxdocker 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" > testingdocker container cp testing nginx-test:/tmp/testingdocker container exec nginx-test cat /tmp/testing
镜像
# 删除所有悬挂镜像 没有标签的docker image purge# -a 删除所有没有使用的镜像
