Docker常用指令和操作

常用指令

【狂神说Java】Docker最新超详细版教程通俗易懂

1. 镜像指令

docker pull <Image_Name>[:tag] # 下载镜像,可以从 dockerHub 下载 
docker images # 查看所有镜像

2. 容器指令

exit # 退出,容器不停止 
Ctrl + P + Q / Ctrl + Z # 容器不停止退出 

docker ps # 列出所有运行中的容器 
docker ps -a # 查看所有容器,包括未运行的 

# 启动和停止容器 
docker start <容器id> # 启动容器 
docker restart <容器id> 
docker stop <容器id> 
docker kill <容器id> 

# 启动容器后可进入容器 
docker exec -it <容器id> bash

# 上传本地文件到容器 
docker cp <本地文件路径> <ID全称:容器路径> 

# 查看docker各文件存储空间占用 
docker system df # 可以查看image, container, volumes总占用 
docker system df -v # 可以查看具体是哪个image, container, volumes占用

# 新建容器并启动 
docker run [可选参数] image [COMMAND] [ARG...] # [COMMAND] [ARG...] 是image指定的输入参数 

# 新建容器参数说明 
--name="Name" # 容器的名字。一个镜像可以创建多个容器,以此区分不同容器 
-d            # 后台方式运行 
-it           # 使用交互方式运行,进入容器查看内容 
-p            # 指定容器端口 
	-p ip:主机端口:容器端口 
	-p 主机端口:容器端口(常用) 
	-p 容器端口 
-P            # 随机指定端口 
--gpus all # 将本地显卡驱动映射到容器,否则nvidia-smi不可用 
--log-opt max-size=10m # 容器单个日志的最大空间占用,不然容器空间和内存占用会越来越大 
--log-opt max-file=3 # 容器最大日志数量,不然容器空间和内存占用会越来越大 

# 新建容器 demo 
docker run --name="centos_env" -it -p 8080:8080 --gpus all --log-opt max-size=10m --log-opt max-file=3 centos[:tag] bash # :tag 默认是:latest

空间占用

1. 容器占用空间太大

Docker目录/var/lib/docker/containers文件太大

Docker在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加

启动容器时,我们可以通过参数来控制日志的文件个数和单个文件的大小:

# max-size 最大数值 
# max-file 最大日志数 
docker run -it --log-opt max-size=10m --log-opt max-file=3 redis

2. ext4.vhdx 太大

WSL2 Docker释放磁盘空间

Cleaning Up Docker Disk Space In WSL2

构建镜像

1. 直接将容器打包镜像

docker将容器打包成镜像并在另一个服务器中运行

2. 编写 dockerfile 来构建镜像

Dockerfile编写指南

我编写的一些 Dockerfile 模板文件放在 备份盘>模板>Dockerfile,WORKDIR 操作参考centos_gcc5_dockerfile,Dockerfile 下使用 conda 指令操作参考 centos_gcc5_conda_dockerfile

docker build -t <镜像名字>:<tag> . # 最后有个点,默认使用 当前目录下名为 Dockerfile 的文件作为Dockerfile,-t 用于指定镜像名称和 tag

WORKDIR

编写dockerfile容易犯的一个错误是将其等同于 Shell 脚本来书写,然而,在 Shell 中,连续两行是同一个进程执行环境,因此前一个命令修改的内存状态,会直接影响后一个命令;而在 Dockerfile 中,这两行 RUN 命令的执行环境根本不同,是两个完全不同的容器。具体参考WORKDIR 指定工作目录

Dockerfile 下使用 conda 指令

Why do I got “conda: command not found” when building a docker, while in base image the “conda” command works fine?

如果要在 dockerfile 中使用 conda 指令,需要设置 conda 执行程序的环境变量,即添加 ENV PATH /root/anaconda3/bin:$PATH,其中 /root/anaconda3/bin 是 conda 指令程序的路径

Activate conda environment in docker

在 dockerfile 中切换 env 不能使用 conda activate ,使用 source activate

3. 上传镜像到 DockerHub

docker tag <image>:<tag> YOUR-USERNAME/<image>:<tag> # 首先修改image名称,必须有YOUR-USERNAME/;如果不加<tag>,默认为latest 
docker push <username>/<image>:<tag>
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值