Docker 常用操作命令与 GPU 容器运行随记
文章目录
这篇文章整理了在 Docker 环境下常用的操作命令,并附加了一些关于 GPU 容器运行的随记。内容涵盖了从镜像管理、容器操作到网络配置、系统资源监控的方方面面,还包括了如何查看 Docker 环境的信息以及日志管理等操作。此外,文章还介绍了在 Docker 中启动 GPU 容器的步骤,以及运行 Jupyter 笔记本服务的详细命令。无论是新手还是有经验的用户,都能从中找到有用的操作指南和参考信息,提升 Docker 使用效率。
一 查看本机的镜像
# 查看本机的镜像
docker images
二 下载镜像
# 下载镜像
docker pull openjdk:8-jdk-alpine
# 下载指定平台镜像
docker pull --platform linux/arm64 openjdk:8-jdk-alpine
三 搜索镜像
# 搜索镜像
docker search jdk8
四 查看运行的容器
# 运行的容器
docker ps
docker container ls
docker container ls -a
docker ps -a
五 重启容器
# 重启一个或多个容器
docker container restart id号
docker container restart cc58a2c5f837
六 清理容器
# 清理掉所有处于终止状态的容器
docker container prune
七 查看网络
# 清理掉所有处于终止状态的容器
docker network ls
八 创建网络
# 创建网络
docker network create --driver bridge yournet
九 删除网络
# 删除网络
docker network rm 网络名字/Id号
十 查看数据挂载
# 查看数据表等
docker volume ls
十一 删除镜像和容器
# 删除镜像
docker rmi 镜像名字/Id号
# 删除容器
docker rm 容器名字/容器id
十二 运行容器
# 启动并运行容器,结果:会打印出容器的id号
docker run
\ -p 6379:6379
\ --name redis
\ -v ./redis/redis.conf:/etc/redis/redis.conf
\ -v ./redis/data:/data
\ -d redis redis-server /etc/redis/redis.conf
# 停止容器
docker stop 容器名字/id号
# 启动容器,id号只要能够区分即可无需写全部
docker start 容器id/名字
# 进入容器
docker exec -it 容器id /bin/bash
docker exec -it 12427 /bin/bash
docker exec -it cbbebad44c59 /bin/sh
十三 容器文件 copy
# 文件拷贝
# 从宿主机拷贝到容器内部
docker cp 宿主机文件 容器id:容器路径
docker cp /home/a.txt 12427:/home
# 从容器中拷贝到宿主机
docker cp 容器id:容器路径 宿主机路径(起别名)
docker cp 427:home/a.txt a.txt
十四 容器使用的系统资源
# docker stats 命令用来显示容器使用的系统资源
docker stats
# [CONTAINER]:以短格式显示容器的 ID。
# [CPU %]:CPU 的使用情况。
# [MEM USAGE / LIMIT]:当前使用的内存和最大可以使用的内存。
# [MEM %]:以百分比的形式显示内存使用情况。
# [NET I/O]:网络 I/O 数据。
# [BLOCK I/O]:磁盘 I/O 数据。
# [PIDS]:PID 号。
# 如果不想持续的监控容器使用资源的情况
docker stats --no-stream
# 只想查看个别容器的资源使用情况
docker stats --no-stream registry 1493
# docker stats --no-stream 容器名称/ID 容器名称/ID ...
# docker容器直接退出,如何进入容器调试
docker run --name upcontainer -it --entrypoint /bin/bash test:cmd
十五 查看信息
# 查看主机的架构
arch
# 确定其架构
docker image inspect openjdk | grep Architecture
# 查看概要信息
docker info
# 查看机器上正在运行的容器
docker ps
# docker的版本
docker version
# 查看宿主机上所有的容器(包括停止的)
docker ps -a
# 获取容器/镜像的元数据
docker inspect 容器id
# 只查看容器ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称/容器ID
# 查看日志
docker logs yourcontainer
# 例如:sudo docker logs cbbebad44c5
# 实时查看docker容器日志
docker logs -f -t --tail 行数 容器名
# 例如: sudo docker logs -f -t --tail 50 cbbebad44c5
tail -f -n 100 xxx.log
# 显示容器使用的系统资源
docker stats
# 查看每个容器占用的磁盘空间呢
docker system df -v
十六 启动 GPU 容器
这是尝试运行 GPU 容器的随记
# 运行镜像tensorflow/tensorflow
docker run --name testgpu01 -it --entrypoint /bin/bash tensorflow/tensorflow:latest-gpu
# 运行容器
$ docker run -it --rm tensorflow/tensorflow bash
#使用 Python 解释器启动 GPU 容器。
$ docker run -it --rm --runtime=nvidia tensorflow/tensorflow:latest-gpu python
这是一段 python
的测试脚本
# import tensorflow as tf;tf.test.gpu_device_name()
import tensorflow as tf;tf.__version__;tf.__path__
import tensorflow as tf;
physical_devices = tf.config.experimental.list_physical_devices('GPU')
if len(physical_devices) > 0:
print("We got a GPU")
tf.config.experimental.set_memory_growth(physical_devices[0], True)
else:
print("Sorry, no GPU for you...")
运行 Jupyter 笔记本服务
$ docker run -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-jupyter
使用您自己的笔记本目录(此处假设为~/notebooks)运行 Jupyter 笔记本服务器。要使用它,请localhost:8888在浏览器中导航到。