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,欢迎点击阅读原文跳转关注~