基于docker的服务器管理

x86服务器配置教程

基本信息:

板卡:2080ti、寒武纪npu

架构:x86_64

系统:Ubuntu18.04

一、docker

1.1、安装docker

​ apt install docker.io

1.1.2、新建docker用户组

​ docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令

sudo groupadd docker   #添加docker用户组
sudo gpasswd -a username docker   #将登陆用户加入到docker用户组中
newgrp docker   #更新用户组

1.1.3、测试docker

docker version

docker run hello-world

1.2、docker 拉取镜像

1.2.1、docker命令

进入容器命令:

docker exec -it 容器ID /bin/bash 

​ 或者

docker exec -it 容器的name bash

​ 退出容器命令

exit

​ 删除docker命令

docker rm dockerID

删除镜像命令

docker rmi imagesID

1.2.2、 docker拉取gitea

docker pull gitea/gitea:latest
sudo mkdir -p /home/zjt/GiteaDocker
#运行docker容器
docker run -d --name=gitea -p 10022:22 -p 10080:3000 -v /home/zjt/GiteaDocker:/data gitea/gitea:latest

1.2.3、docker拉取mysql

docker pull mysql

dock docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxxxx mysql
  • -p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
  • **MYSQL_ROOT_PASSWORD=xxxxxx:设置 MySQL 服务 root 用户的密码。

1.3 docker自动上传镜像

1.3.1 编写makefile文件

cd /home/zjt/docker_file
vim Makefile

下面是makefile文件内容

tag:
        docker tag mysql:5.7.27 1008zjt/mysql
pull:tag
        docker push 1008zjt/mysql

1.3.2 编写shell脚本pull.sh

内容如下:

make pull

1.3.3 使用crontab 自动运行脚本

1、首先crontab -e 编辑定时任务

img

2、按 【Ctrl + X】,如果没有改动会直接退出,否则会先跳到下一个界面
(这一步也可以先使用【Ctrl + O】写入,再用【Ctrl + X】退出)

img

3、直接按 【Y】,再进入下一个界面,如下图:
(我印象里以前不是这样子的啊,可能是老了,记错了)

img

4、【Ctrl + M】 可以保存

1.4 docker自启动

1.5 docker 镜像位置

docker info

image-20210604153325446

二、配置mysql

2.1 创建仓库

在数据库实例上,以根用户身份登录数据库控制台:

mysql -u root -p

根据提示输入密码。

  1. 创建将由Gitea使用的数据库用户,并通过密码进行身份验证。本示例使用'gitea'密码。请为您的实例使用安全密码。

    CREATE USER 'zjt' IDENTIFIED BY 'xxxxxxxxx';

    适当替换上面的用户名和密码。

  2. 使用UTF-8字符集和排序规则创建数据库。确保使用utf8mb4charset代替,utf8因为前者支持Basic Multilingual Plane之外的所有Unicode字符(包括emoji表情)。另外,根据您的预期内容选择排序规则。如有疑问,请使用unicode_cigeneral_ci

    CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';

    适当替换数据库名称。

  3. 将数据库的所有特权授予上面创建的数据库用户。

    GRANT ALL PRIVILEGES ON giteadb.* TO 'zjt';
    FLUSH PRIVILEGES;
  4. 从数据库控制台退出exit

  5. 在您的Gitea服务器上,测试与数据库的连接:

    mysql -u zjt -h 192.168.1.164 -p giteadb

    其中,gitea是数据库用户名,giteadb是数据库名称和192.168.1.164是数据库实例的IP地址。省略-h本地数据库选项。

    2.2您应该已连接到数据库。

2.2 链接gitea

​ 1、进入192.168.1.164:10080//此处为gitea镜像的地址

​ 2、在此处设置数据库的名称、用户等

​ 3、设置好之后进入192.168.1.164:10080注册第一个用户。默认的第一个用户是管理员.

三、git

sudo apt-get install git

四、网络

4.1 安装net—tools

apt-get install net-tools

4.2内网穿透

4.2.1 natapp

官网下载客户端(https://natapp.cn/#download),需要注册账号,购买隧道,会得到一个authtoken,进入到下载的客户端文件夹中先登录之后:

nohup ./natapp -authtoken=xxxx -log=stdout &

4.2.2 ngrok

arm服务器上安装客户端

运行:

./ngrok authtoken <your_auth_token>

4.3访问IP白名单

配置/etc/hosts.allow文件和/etc/hosts.deny文件,前者设置可允许的ip,后面设置不允许的ip一般设置为前者为允许的ip。后者全部选择,如下:

允许内容 书写格式(改成自自需要的IP或IP段)
ssh允许单个ip sshd:192.168.220.1
ssh允许ip段 sshd:192.168.220.
telnet允许单个ip in.telnetd:192.168.220.1
telnet允许ip段 in.telnetd:192.168.221.

在/etc/hosts.deny中:

sshd:ALL
in.telnetd:ALL

执行:

service ssh restart

service xinetd restart

4.4固定IP

	$ cd /etc/netplan
	$ ls

查看网络名称

$ ifconfig
$ vim xxxxxxxxxxx.yaml
# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: NetworkManager
  ethernets:
     enp3s0: #配置的网卡名称,使用ifconfig -a查看得到
       dhcp4: no #dhcp4关闭
       addresses: [192.168.202.36/24] #设置本机IP及掩码
       gateway4: 192.168.202.1 #设置网关
       nameservers:
         addresses: [192.168.202.1] #设置DNS

更新命令:$ sudo netplan apply

五、Anaconda

5.1安装

​ 官网下载.sh文件,在想要安装的目录下运行:

$ bash ./path/to/anaconda/AnacondaXXX.sh -p /home/i/favorate/ -u

​ 或者在安装的时候询问目录的时候手动选择目录。安装好之后不需要重启,命令行输入python显示:

image-20210519150359183

或者执行:

$ conda --version

没有提示找不到conda命令即可。

5.2添加环境

​ 直接添加到系统环境,所有用户就都可以用,切换到root用户下:

$ vim ~/.bashrc

在最后一行添加:

export PATH="/home/xupp/anaconda3/bin:$PATH"

然后执行命令 :

$ source  ~/.bashrc

5.3 创建环境

创建python版本为version的环境

conda create  -n your_env_name python =(version)

安装包

conda install xxx

六、nvidia环境

七、数据库

7.1 创建

创建将由Gitea使用的数据库用户,并通过密码进行身份验证。本示例使用'gitea'密码。请为您的实例使用安全密码。

CREATE USER 'zjt' IDENTIFIED BY 'xxxxxxxxx';

适当替换上面的用户名和密码。

  1. 使用UTF-8字符集和排序规则创建数据库。确保使用utf8mb4charset代替,utf8因为前者支持Basic Multilingual Plane之外的所有Unicode字符(包括emoji表情)。另外,根据您的预期内容选择排序规则。如有疑问,请使用unicode_cigeneral_ci

    CREATE DATABASE giteadb CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';

    适当替换数据库名称。

  2. 将数据库的所有特权授予上面创建的数据库用户。

    GRANT ALL PRIVILEGES ON giteadb.* TO 'zjt';
    FLUSH PRIVILEGES;
  3. 从数据库控制台退出exit

7.2 查询

进入数据库

mysql -u root -p#然后输入密码

查询 所有用户以及密码信息

select user,host,authentication_string from user;#5.7版本之后没有password字段了

7.3

八、用户管理

8.1 docker镜像

8.2 容器创建

docker run -it --name="images-user0" --gpus 1  -p 192.168.1.164:local-port:22 images /bin/bash
#docker run -it --name="cuda-QingDao2" --gpus '"device=2"' -v /home/lcm-data:/home/lcm-data -p 192.168.1.164:2474:22 nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 /bin/bash

sudo docker run -it --name="cuda-2080-zjt" --gpus=all -v /home/old-gitea/user-data/zjt:/home/data  --restart=always -p 192.168.1.164:1001:22 -p 192.168.1.164:2001:8000 nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04 /bin/bash

8.3容器管理

8.3.1修改管理员密码:

passwd

8.3.2 创建删除用户

创建用户

useradd  -d  /wd/user0   -m -s  /bin/bash -u uid user0
passwd user0
usermod -aG sudo  user0

删除用户

userdel -r username

8.3.3下载ssh服务端

apt-get update
apt-get install sudo
apt-get install openssh-server
apt-get install vim
service ssh start
#如果下载慢可以换源,执行:
#vim /etc/apt/source.list
#添加清华源、阿里源
#apt-get update
 /etc/init.d/ssh start

8.3.4 配置cuda环境

vim ~/.bashrc

export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH

source ~/.bashrc

8.4 容器端口内网穿透

vim /home/wzy/docker/frpc/frpc.ini//添加新的端口映射,local-port与上面相同
docker restart frpc

同时让师兄在宝塔面板打开local-port映射长度