Docker学习笔记

1 安装 Docker

1.1 卸载旧版本 Docker

sudo apt-get remove docker docker-engine docker.io containerd runc

1.2 通过仓库安装

1.2.1 设置仓库
sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
1.2.2 安装 Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 设置无需 sudo 运行 docker
sudo gpasswd -a $USER docker
newgrp docker

1.3 安装 NVIDIA Container Toolkit

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
   
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

# 验证是否安装成功
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

1.3 配置阿里云镜像加速

使用阿里云-容器镜像服务-镜像加速器

2 Docker 常用命令

2.1 帮助命令

# 查看 Docker 的版本信息
docker version

# 查看 Docker 的系统信息,包括镜像和容器数量
docker info

# 帮助命令
docker COMMAND --help

2.2 镜像命令

# 查看所有镜像
docker images

# 镜像搜索
docker search mysql

# 下载镜像,默认 tag 为 latest
docker pull mysql

# 删除镜像
docker rmi -f 97cca2bac989
# 删除全部镜像
docker rmi -f $(docker images --aq)

2.3 容器命令

# 运行容器
docker run [可选参数] [镜像名]
# 参数说明
--name="name"       容器名字
-d                  后台方式运行
-it                 使用交互方式运行,进入容器查看内容
-p                  指定容器的端口 
-P                  随机指定端口
--gpus              使用 GPU

# 退出容器
exit                退出并停止容器
<C+p+q>             退出但不停止容器

# 列出正运行的容器
docker ps
# 参数说明
-a                  列出所有运行历史记录
-n=?                列出最近 n 个运行记录
-q                  只显示容器编号

# 删除容器
docker rm [容器id]   不能删除正在运行的容器
docker rm -f $(docker ps -aq)    强制删除所有容器
docker ps -a -q | xargs docker rm 

# 操作容器
docker start [容器id]          启动容器
docker restart [容器id]        重启容器
docker stop [容器id]           停止当前正在运行的容器
docker kill [容器id]           强制停止当前容器

2.4 常用其他命令

# 后台启动容器
docker run -d [镜像名]
# 此时 Docker 容器使用后台运行,就必须要有一个前台进程,如果 Docker 发现自己没有提供服务,就会自动停止

# 查看日志
docker logs [可选参数] [容器id]

# 查看容器内进程
docker top [容器id]

# 查看镜像元数据
docker inspect [容器或镜像] 

# 进入当前正在进行的容器
docker exec -it [容器id] /bin/bash    开启一个新终端
docker attach [容器id]                进入当前正在进行的终端

# 从容器内拷贝文件到主机
docker cp [容器id]:[容器路径] [主机路径]

# 提交容器成为新的副本
docker commit -m="描述信息" -a="作者" [容器id] [目标镜像名]:[标签名]

3 数据卷使用

数据卷是容器之间数据共享的技术,使得 Docker 容器与本地双向绑定,数据同步。以此可以进行容器的持久化和同步操作。

3.1 挂载命令

# 即使容器处在停止状态,数据的双向同步依旧进行
docker run -it -v [主机路径]:[容器路径]     
                  [容器路径] 
                  [名称]:[容器路径]            

3.2 拓展

# 设置容器权限
docker run -it -v [主机路径]:[容器路径]:ro     只读
docker run -it -v [主机路径]:[容器路径]:rw     读写(默认)

4 Dockerfile 文件

DockerFile 是 Docker 镜像的构建文件。

4.1 基础知识

  1. 每个保留关键字都必须是大写字母
  2. 指令从上到下顺序执行
  3. “#” 表示注释
  4. 每一个指令都会创建新的镜像层

b527c209ff707125d451e8f2679c79bb

4.2 Dockerfile 命令

FROM                          # 基础镜像,是构建的起点
MAINTAINER                    # 镜像作者,姓名 + 邮箱
RUN                           # 镜像构建时运行的命令
ADD                           # 添加文件内容
WORKDIR                       # 镜像的工作目录
VOLUME                        # 挂载的目录
EXPOSE                        # 指定暴露端口
CMD                           # 指定容器启动时运行的命令,只有最后一个生效,可被替代
ENTRYPOINT                    # 指定容器启动时运行的命令,可以追加命令
ONBUILD                       # 被继承时,会出发此命令
COPY                          # 将文件拷贝到镜像中
ENV                           # 构建时设置环境变量

Dockerfile 是官方命名,默认值。

5 发布镜像

# 登录命令
docker login

# 修改 docker 镜像名称,然后推送镜像
docker tag [原镜像] [账户名]/[镜像名]:[版本号]
docker push [账户名]/[镜像名]:[版本号]

Dockerfile 是官方命名,默认值。

5 发布镜像

# 登录命令
docker login

# 修改 docker 镜像名称,然后推送镜像
docker tag [原镜像] [账户名]/[镜像名]:[版本号]
docker push [账户名]/[镜像名]:[版本号]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值