docker常用命令(转)

以下内容来源于啥都会一点的研究生

B站|公众号:啥都会一点的研究生

Docker应该大家都不陌生,陌生也没关系都是从陌生到熟悉

工作后一定会触及,之前我也是现学现用,可以先进行收藏~

先贴一个官方安装教程:

https://docs.docker.com/engine/install/ubuntu/

入门教程:

https://ruanyifeng.com/blog/2018/02/docker-tutorial.html

首先讲安装,其实我在csdn有写,但这里会对整个常用进行总结

Docker安装

- 卸载旧版本

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

- 设置Docker仓库

新机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,可以从仓库安装和更新 Docker

// 更新apt-get包索引
sudo apt-get update
// 安装 apt 依赖包,用于通过HTTPS来获取仓库
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
// 添加 Docker 的官方 GPG 密钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
// 验证是否拥有带有指纹的密钥
sudo apt-key fingerprint 0EBFCD88
// 设置稳定版仓库
sudo add-apt-repository \
   "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
  $(lsb_release -cs) \
  stable"

- 安装Docker Engine-Community

// 更新 apt 包索引
sudo apt-get update
//安装最新版本的 Docker Engine-Community 和 containerd
sudo apt-get install docker-ce docker-ce-cli containerd.io

- 测试Docker是否安装成功

sudo docker run hello-world

- 添加root权限

在普通用户下执行docker命令每次都需要用sudo,若未加sudo则报错如下,烦死了

Got permission denied while trying to connect to the Docker daemon socket at 
unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version": dial unix 
/var/run/docker.sock: connect: permission denied

解决办法

// 查看当前用户
echo $USER
// 将普通用户username加入到docker组
sudo gpasswd -a username docker
// 更新docker组
newgrp docker
// 重启docker
sudo service docker restart
// 修改/var/run/docker.sock权限,使用root用户执行
sudo chmod a+rw /var/run/docker.sock

NVIDIA-Docker安装

怎么个事呢,发现要在docker中调用cuda编译总失败,原因就是需要安装NVIDIA-Docker,有两种方式安装,在线与离线

- 在线安装

需要挂代理才能安装,首先确认已经安装好nvidia驱动,可以用nvidia-smi命令查看

curl https://get.docker.com | sh
sudo systemctl start docker && sudo systemctl enable docker

 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

- 离线安装(推介)

已将离线文件打包放入云盘,为防止链接频繁挂掉,所以将其链接放在公众号【啥都会一点的研究生】,方便立即更新,回复【docker】即可获取
下载完毕后依次执行以下命令

sudo dpkg -i libnvidia-container1_1.2.0-1_amd64.deb 
sudo dpkg -i libnvidia-container-tools_1.2.0-1_amd64.deb 
sudo dpkg -i nvidia-container-toolkit_1.2.1-1_amd64.deb 
sudo dpkg -i nvidia-container-runtime_3.3.0-1_amd64.deb 
sudo dpkg -i nvidia-docker2_2.4.0-1_all.deb 
sudo systemctl restart docker

- 注意
安装完nvidia-docker后,启动容器需要加上--gpus all 如sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi 进入容器后输入nvidia-smi,显示信息则代表成功

镜像相关常用命令

//查看镜像
docker images
//搜索镜像
docker search 镜像名称
//拉取镜像
docker pull 镜像名称
//删除镜像
docker rmi 镜像ID
//删除所有镜像
docker rmi `docker images -q`

容器相关常用命令

#查看正在运行的容器
docker ps
#查询所有容器(正在运行或未运行)
docker ps -a
#运行容器,交互式方式
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
#创建容器,守护式方式
docker run -id --name=容器名称 镜像名称:标签
#登录容器
docker exec -it 容器名称/ID /bin/bash
#关闭容器
docker stop 容器名/ID
#打开容器
docker start 容器名/ID
#删除容器
docker rm 容器名/ID

#文件拷贝
#将文件copy到容器内
docker cp 要copy的文件或目录 容器名称:容器目录
#将容器中的文件copy出来
docker cp 容器名称:容器目录 要copy的文件或目录 

#查看容器所有信息
docker inspect 容器名称/ID
#查看容器IP
docker inspect --format='{{.NetWorkSetting.IpAddress}}' 容器名称/ID

将容器打包至远程服务器

一般公司或实验室可能有自己的服务器,服务器再load仓库中的docker容器,所以需要本地将docker环境配置完毕后再推送
- 修改配置文件适配远程服务器

// 修改配置
sudo vim /etc/docker/daemon.json

// 在daemon.json中添加如
{
   "insecure-registries":["192.168.1.100:7890"]
}

// 重启docker
sudo systemctl restart docker

- docker commit
类似git,先将容器中做的修改进行commit

// docker commit -a 提交镜像的作者 -m 说明文字 CONTAINER [REPOSITORY[:TAG]]
如:docker commit -a "shadousheng" -m "test" a404c6c174a2 ML:v1

- docker tag
打标签,对齐远程服务器要求

// docker tag SOURCE_IMAGE[:TAG] [ip地址]:[端口]/IMAGE[:TAG]
如:docker tag ML:v1 192.168.1.100:7890/ML:v1

- docker push
最后一步,推送镜像

// docker push [IP地址]:[端口号]/IMAGE[:TAG]
如:docker push 192.168.1.100:7890/ML:v1

以上就是目前我常用的docker命令

若随着工作内容遇到新的东西也会同步更新至CSDN,欢迎点击阅读原文跳转关注~

posted @ 2023-02-12 14:48  faf4r  阅读(31)  评论(0编辑  收藏  举报