docker使用记录

1,353 阅读2分钟

一键安装docker

官方的一键安装方式:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

国内 daocloud一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

使用gpu显卡,还需要安装NVIDIA Container Runtime

安装后使用带--gpus all的命令创建docker容器会报错:Error response from daemon: could not select device driver "" with capabilities: [[gpu]] 参考以下教程:blog.csdn.net/Stone_hello…

用户添加到docker用户组

普通用户使用docker会提示权限不足,命令前面需要加sudo才可以,使用如下命令将当前用户添加到用户组。

  1. 添加docker用户组
sudo groupadd docker
  1. 将当前用户加入到docker用户组
sudo gpasswd -a $USER docker

3.更新用户组以使修改生效

newgrp docker
  1. 还是不行,给其他用户添加读写权限
sudo chmod o+rw /var/run/docker.sock
  1. 查看docker用户组
getent group docker

用户相关操作

查看用户:

cat /etc/passwd

添加新用户,它的基本语法如下:

useradd [选项] 用户名

其中,选项可以是:

  • -m:创建用户的创建用户的主目录。

  • -s shell:指定用户的默认shell。

  • -g group:指定用户所属的初始组。

  • -G group1,group2:指定用户所属的其他附加组。

  • -p password:设置用户的密码。

例如,要创建一个名为"john"的用户,可以使用以下命令:


useradd -m -s /bin/bash john

为用户user添加密码

passwd user

usermod命令:usermod命令用于修改用户的属性。它的基本语法如下:

usermod [选项] 用户名

其中,选项可以是:

  • -l 新用户名:修改用户的用户名。

  • -d 新目录:修改用户的主目录。

  • -s shell:修改用户的默认shell。

  • -g group:修改用户所属的初始组。

  • -G group1,group2:修改用户所属的其他附加组。

例如,要将"john"用户的用户名修改为"jane",可以使用以下命令:


usermod -l jane john

修改john用户的主目录为jane:

usermod -d jane john

userdel命令:userdel命令用于删除用户。它的基本语法如下:


userdel [选项] 用户名

其中,选项可以是:

  • -r:同时删除用户的主目录。

例如,要删除"john"用户及其主目录,可以使用以下命令:


userdel -r john

切换root用户

su

切换用户

su - <USER>

创建容器

-itd 容器保持后台运行
-p 端口映射,808022 服务器端口8080映射到容器端口22
--name 容器名
-h 容器机器名
-u 指定用户
-v 文件映射 宿主机文件:容器目录
--gpus all 使用主机显卡,无此项,不能使用显卡
shm-size 指定cpu share memory容量,防止batcha过大时,dataloader错误
--ipc=host 共享宿主机内存

示例1

docker run -itd -p 1000:22 -u root --name crxm --gpus all --ipc=host -v /data:/data linux_ssh

示例2

sudo nvidia-docker run --name ppocr-root --gpus all -p 6068:22 -h docker -v /data:/data --shm-size=64G --ipc=host -itd cuda11.7-ppocr-torch-root

进入容器

-it 交互式命令行
/bin/bash 保持容器后台运行

示例

打开容器

docker start <CONTAINER_ID>

关闭容器

docker stop <CONTAINER_ID>

进入运行中的容器

docker exec -it crxm /bin/bash

重启docker

systemctl daemon-reload
sudo systemctl restart docker

docker开机自启

设置开机启动:

systemctl enable docker.service

#关闭用 

systemctl disable docker.service

查看所有是否设置开机启动:

systemctl list-unit-files | grep enable

Docker 容器设置自启动: 容器自启动要看两种情况

1.新建容器时配置自启参数

docker run --restart=always 容器id 或 容器名称

2.已存在的容器配置自启

docker update --restart=always 容器id 或 容器名称

另外:

1)取消容器自启

docker update --restart=no 容器id 或 容器名称

2)批量设置容器自启

docker update --restart=always $(docker ps -aq)

docker常用命令

查看镜像

docker images

删除镜像

docker rmi <IMAGES_NAME>

查看容器

docker ps -a

删除容器

docker rm -f <CONTAINER_ID>

提交镜像,将容器打包成镜像

docker commit <CONTAINER_ID> <NEW_IMAGE_NAME>

镜像存储到tar文件中 -o 文件名.tar

docker save <IMAGE> -o <IMAGE_TAR_FILE>

解包tar文件为镜像

docker load <IMAGE_TAR_FILE>

使用Dockerfile构建镜像,-f Dockerfile文件地址,-t 镜像名,冒号后面为版本号,不写使用默认latest --build-arg user= 指定用户名

docker build -f <img_name> -t torch:1 .

上传主机文件到容器中

docker cp local_file_path container_name_or_id:/container_path

安装ssh

进入容器,先选择一个用户登陆, 安装ssh

apt-get update
apt-get install openssh-server
apt-get install vim

对ssh文件进行配置

vim /etc/ssh/sshd_config

修改PermitRootLogin参数修改为yes,保存

修改密码passwd

启动ssh服务

service ssh start

重启ssh服务

service ssh restart

查看ssh服务状态

service ssh status

如果报错 sshd: no hostkeys available – exiting. 运行如下

ssh-keygen -A
/etc/init.d/ssh start

容器内容查看ip地址cat /etc/hosts

docker设置ssh开机自启

在 /root 目录下新建一个 start_ssh.sh文件,并给予该文件可执行权限。

touch /root/start_ssh.sh
vim /root/start_ssh.sh
chmod +x /root/start_ssh.sh

start_ssh.sh 脚本的内容,如下:

#!/bin/bash
 
LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run..." >>/root/start_ssh.log
service ssh start >>/root/start_ssh.log
#service mysql start >>/root/star_mysql.log   //其他服务也可这么实现

将start_ssh.sh脚本添加到启动文件中

vim /root/.bashrc

在 .bashrc 文件末尾加入如下内容:

# startup run
if [ -f /root/start_ssh.sh ]; then
      bash /root/start_ssh.sh
fi

安装Anaconda

官网下载安装包

bash ./<anaconda_path>

如果提示conda命令不存在,进入anaconda3/bin目录

chmod 777 activate
source ./activate

创建python虚拟环境

conda create --name my_first_env python=3.6

迁移虚拟环境时,安装conda-pack

pip install conda-pack

打包虚拟环境,-n 为虚拟环境名称, -o 为输出文件名

conda pack -n torch -o torch.tar.gz

解压并激活虚拟环境

mkdir anaconda3/envs/torch
tar -xzvf torch.tar.gz -C anaconda3/envs/torch
source anaconda3/envs/torch/bin/activate

输入which python可查看是否为虚拟环境的python

安装pytorch,访问官网,使用conda安装,以ubuntu安装cuda11.7为例:

conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia
conda install pytorch==2.0.0 torchvision==0.15.0 torchaudio==2.0.0 pytorch-cuda=11.8 -c pytorch -c nvidia

参考

[1] docker容器内部自启 docker设置容器开机自启 blog.51cto.com/u_14844/650… [2] docker容器内服务开机自启动实现方案(以ssh服务为例)tianya2018.com/post/26.htm…