租云服务器及配置Docker环境

 

创建工作用户wky并赋予sudo权限

登录到服务器:

ssh root@xxx.xxx.xxx.xxx  # xxx.xxx.xxx.xxx替换成服务器的公网IP

创建wky用户:

adduser wky  # 创建用户wky
usermod -aG sudo wky  # 给用户wky分配sudo权限

配置wky用户的别名免密登录方式

返回本地终端,配置wky用户的别名wkyserver(之后再使用服务器时,可以直接使用别名wkyserver): 创建文件 ~/.ssh/config,在里面添加:

Host wkyserver
        HostName xxx.xxx.xxx.xxx  # xxx.xxx.xxx.xxx替换成服务器的公网IP
        User wky

免密登录(密钥登录):

创建密钥:ssh-keygen,然后一直回车即可。

一键添加公钥:ssh-copy-id wkyserver

使用别名免密登录wky用户:ssh wkyserver

配置新服务器的工作环境

将本地的配置传到新服务器上:

scp .bashrc .vimrc .tmux.conf server_name:  # server_name需要换成自己配置的别名

例如在windows终端:scp D:\GitRepository\serverconfig\.vimrc wkyserver:

在git bash终端:scp /d/GitRepository/serverconfig/.bashrc wkyserver:

安装tmux和docker

登录自己的服务器,然后安装tmux:

sudo apt-get update
sudo apt-get install tmux

打开tmux。(养成好习惯,所有工作都在tmux里进行,防止意外关闭终端后,工作进度丢失)

然后在tmux中根据官方文档安装docker即可。(官方文档:https://docs.docker.com/engine/install/ubuntu/)

将当前用户添加到docker用户组

为了避免每次使用docker命令都需要加上sudo权限,可以将当前用户加入安装中自动创建的docker用户组(官方文档:https://docs.docker.com/engine/install/linux-postinstall/):

sudo usermod -aG docker $USER

执行完此操作后,需要退出服务器,再重新登录回来,才可以省去sudo权限。

Docker 官方镜像仓库在国外,国内访问慢或超时,需配置国内镜像源(如阿里云、网易云):登录阿里云官网 → 进入「容器镜像服务」→ 「镜像加速器」→ 复制专属加速地址(每个账号不同)。

创建docker容器

docker容器方便迁移,推荐项目都写在docker容器中。它相当于一个新的服务器,因此重复前面的操作,继续创建工作账户wky。(docker镜像使用django_lesson_1_0.tar)

进入本地Terminal(这里用git bash),然后:

scp /d/GitRepository/serverconfig/django_lesson_1_0.tar wkyserver:  # 将镜像上传到自己租的云端服务器
ssh wkyserver  # 登录自己的云端服务器

docker load -i django_lesson_1_0.tar  # 加载镜像
docker run -p 20000:22 -p 8000:8000 --name django_server -itd django_lesson:1.0 # 创建容器,20000端口用于ssh登录,8000端口用于调试

docker attach django_server  # 进入创建的docker容器

adduser wky
usermod -aG sudo wky

去云平台控制台中修改安全组配置,放行端口20000和8000。

然后ctrl+p, ctrl+q挂起容器,回到云服务器层

ssh wky@localhost -p 20000  # 在云服务器层ssh连接到docker层的wky,测试20000端口是否开放

然后logout(ctrl+d)回到云服务器层,再logout回到本地终端,配置容器中的wky用户的别名免密登录方式

配置别名djangoserver:

cd .ssh
vim config

添加:

Host djangoserver
        HostName 39.99.43.230
        User wky
        port 20000

配置免密登录

ssh-copy-id djangoserver

现在可以直接ssh djangoserver

回到本地终端:将配置文件.bashrc .vimrc .tmux.config传到djangoserver(也可以在云服务器wkyserver传,因为云服务器也传入了这些配置文件,只不过云服务没有配置别名和免密登录,不能用djangoserver)

更换云服务器时,迁移容器

登录到云服务器ssh wkyserver

docker [container] commit CONTAINER django_lesson:1.1  # 将容器CONTAINER刻成镜像django_lesson:1.1
docker save -o django_lesson_1_1.tar django_lesson:1.1   # 将镜像django_lesson:1.1导出到本地文件django_lesson_1_1.tar中
chmod +r XXX.tar  # 加上可读权限

回到本地终端

scp wkyserver:django_lesson_1_1.tar .  # 传到本地

增加端口映射

登录到云服务器ssh wkyserver

docker [container] commit CONTAINER django_lesson:1.1  # 将容器CONTAINER刻成镜像django_lesson:1.1
docker stop CONTAINER
docker rm CONTAINER
docker run -p 20000:22 -p 8000:8000 -p 5015:5015 --name django_server -itd django_lesson:1.1 # 创建容器

在安全组中增加端口