1、使用云服务器及配置docker环境

AcWing Django框架课学习笔记
云平台:阿里云
环境:linux ubuntu 20.04

云平台的作用:

  • 存放docker容器 让计算跑在云端
  • 获得公网ip,让别人访问到我的web应用

服务器:核心放在ECS服务器上

  • ECS服务器(毛坯服务器) :需要根据需求自己定制 ,存放web框架
  • 租一个服务:mysql、redis、cdn
    方式:
    1、通过socket(ip地址+端口)
    2、http

AC Terminal:
AcWing提供的一个远程Linux服务器,拥有完全独立的运行环境与空间。
可连网,支持作为跳板ssh登录到我们租的云服务器服务器上。
需要配置ssh免密登录、别名

docker容器:(开发的主要工作环境)

  • 优势:可以迁移
  • 能够使所有人使用统一的环境(docker镜像)

进入docker:

  • 登录到运行docker的服务器 attach到docker

  • 通过ssh登录docker容器


一、租云服务器并用AC Terminal登录

先租一个云服务器:1核2GB就可以
我这里使用的是阿里云,并设置好登录密码(我这里是试用一个月)

1、使用云服务器及配置docker环境_第1张图片
然后打开AC Terminal,用ssh登录到租好的服务器上
注意:复制和粘贴是ctrl + shift + c/v

ssh [email protected]  # xxx.xxx.xxx.xxx替换成新服务器的公网IP

logout # 用ctrl+d也可以

1、使用云服务器及配置docker环境_第2张图片
查看内存:

free -h

在这里插入图片描述
查看有几核:

cat /proc/cpuinfo

登录的时候默认是root用户,root用户权限太大,容易误删关键的系统文件。最好的方式是建立一个新的用户然后赋予sudo权限。

创建acs用户:

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

1、使用云服务器及配置docker环境_第3张图片


二、配置免密登陆:

配置别名:

使用logout退回到AC Terminal
创建文件~/.ssh/config,命令:

vim ~/.ssh/config

在文件中输入:

Host server1
	Hostname Ip地址
	User 用户名

保存并退出:按Esc,然后输入:

:wq

之后再使用服务器时,可以直接使用别名server1

配置免密登录:

创建密钥:

ssh-keygen

然后一直回车即可。

执行结束后,~/.ssh/目录下会多两个文件:

  • id_rsa:私钥
  • id_rsa.pub:公钥

之后想免密码登录哪个服务器,就将公钥传给哪个服务器即可。

例如,想免密登录myserver服务器。则将公钥中的内容,复制到myserver中的~/.ssh/authorized_keys文件里即可。
1、使用云服务器及配置docker环境_第4张图片
也可以使用如下命令一键添加公钥:

ssh-copy-id server1

1、使用云服务器及配置docker环境_第5张图片
然后输入密码,这样就配置完成了免密登录,可以直接使用命令ssh server1实现登录
1、使用云服务器及配置docker环境_第6张图片


三、配置docker:

首先先更新环境:

sudo apt-get update

安装tmux:

sudo apt-get install tmux

退出tmux命令:ctrl+D
对tmux进行配置:
将AC Terminal上的三个文件通过scp发送到服务器上:
注意:冒号不要忘

scp .bashrc .vimrc .tmux.config server1:

在这里插入图片描述
tmux常用操作:

 
上下分屏:ctrl + b  再按 "
左右分屏:ctrl + b  再按 %
切换屏幕:ctrl + b  再按o
关闭一个终端:ctrl + b  再按x
退出:ctrl + d

tmux的主要作用是可以再终端中多开窗口

1、使用云服务器及配置docker环境_第7张图片


安装docker:

docker安装参考地址

依次执行以下命令:

1、

sudo apt-get update

2、

sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

3、

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

4、

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再更新一下:

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io

这样就完成了
最后输入:

docker --version

能正确显示版本信息就说明已经安装完成
在这里插入图片描述


四、docker教程:

基本概念:

一个docker有若干的镜像,一个镜像可以生成若干个容器。每个容器可以看做一个独立的云服务器,而同一个镜像生成的容器的环境一定是完全相同。

镜像可以看做一个模具,容器就像用模子做出来的月饼

镜像(images)

  1. docker pull ubuntu:20.04:拉取一个镜像
  2. docker images:列出本地所有镜像
  3. docker image rm ubuntu:20.04docker rmi ubuntu:20.04:删除镜像ubuntu:20.04
  4. docker [container] commit CONTAINER IMAGE_NAME:TAG:创建某个container的镜像
  5. docker save -o ubuntu_20_04.tar ubuntu:20.04:将镜像ubuntu:20.04导出到本地文件ubuntu_20_04.tar中
  6. docker load -i ubuntu_20_04.tar:将镜像ubuntu:20.04从本地文件ubuntu_20_04.tar中加载出来

容器(container)

  1. docker [container] create -it ubuntu:20.04:利用镜像ubuntu:20.04创建一个容器。
  2. docker ps -a:查看本地的所有容器
  3. docker [container] start CONTAINER:启动容器
  4. docker [container] stop CONTAINER:停止容器
  5. docker [container] restart CONTAINER:重启容器
  6. docker [contaienr] run -itd ubuntu:20.04:创建并启动一个容器
  7. docker [container] attach CONTAINER:进入容器
    先按Ctrl-p,再按Ctrl-q可以挂起容器
  8. docker [container] exec CONTAINER COMMAND:在容器中执行命令
  9. docker [container] rm CONTAINER:删除容器
  10. docker container prune:删除所有已停止的容器
  11. docker export -o xxx.tar CONTAINER:将容器CONTAINER导出到本地文件xxx.tar中
  12. docker import xxx.tar image_name:tag:将本地文件xxx.tar导入成镜像,并将镜像命名为image_name:tag
  13. docker export/importdocker save/load的区别:
    export/import会丢弃历史记录和元数据信息,仅保存容器当时的快照状态
    save/load会保存完整记录,体积更大
  14. docker top CONTAINER:查看某个容器内的所有进程
    docker stats:查看所有容器的统计信息,包括CPU、内存、存储、网络等信息
    docker cp xxx CONTAINER:xxxdocker cp CONTAINER:xxx xxx:在本地和容器间复制文件
  15. docker rename CONTAINER1 CONTAINER2:重命名容器
  16. docker update CONTAINER --memory 500MB:修改容器限制

所谓迁移: 将需要迁移的容器生成一个镜像,镜像类似于一个压缩文件,可以传到其他服务器,在其他服务器上将这个镜像加载到docker里,通过这个镜像就可以生成新的容器,这就实现了迁移。

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

为了避免每次使用docker命令都需要加上sudo权限,可以将当前用户加入安装中自动创建的docker用户组(可以参考官方文档):

sudo usermod -aG docker $USER

实战:

进入AC Terminal,然后:

scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar server_name:  # 将镜像上传到自己租的云端服务器
ssh server_name  # 登录自己的云端服务器

docker load -i docker_lesson_1_0.tar  # 将镜像加载到本地
docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0  # 创建并运行docker_lesson:1.0镜像

docker attach my_docker_server  # 进入创建的docker容器
passwd  # 设置root密码

然后就可以先按ctrl+p再按ctrl+q来挂起容器

1、使用云服务器及配置docker环境_第8张图片
设置好密码之后就可以用ssh登录到docker的容器里面了(无论是在Ac Terminal还是在自己租的云服务器上都可以登录进docker)
1、使用云服务器及配置docker环境_第9张图片
生成的docker容器在本质上就是一个云服务器。在云服务器的管理控制台可以开放端口(比如说20000),然后直接从任何地方通过ssh登录到在云服务器上创建的docker容器中

ssh [email protected] -p 20000  # 将xxx.xxx.xxx.xxx替换成自己租的服务器的IP地址

同样也可以配置别名和免密登录

为什么不在云平台的上做,要在云平台上搭docker再做呢?
因为docker方便迁移。云平台内部比较好迁移(例如阿里云-阿里云),但用docker的话,云平台之间的迁移也很方便(例如阿里云-腾讯云)



作业:

注意: 本次作业的3个题目不是独立的,每个题目会依赖于前一个题目,因此评测时如果当前题目错误,则不再评测后续题目。

创建好作业后,先进入文件夹/home/acs/homework/lesson_8/,然后:

  1. 进入homework_0文件夹,然后:
    • 租一台云服务器
    • 配置服务器别名及免密登录
    • 将服务器别名写在当前目录下的server_name.txt文件中
  2. 进入homework_1文件夹,然后:
    • 在租好的云服务器中安装docker
  3. 进入homework_2文件夹,然后:
    • 将AC Terminal中的/var/lib/acwing/docker/images/docker_lesson_1_0.tar镜像上传到租好的服务器中
    • 登录到租好的服务器
    • 将上传的镜像提取出来
    • 创建该镜像的容器,设置端口映射:20000:22
    • 去云平台控制台中修改安全组配置,放行端口20000。
    • 进入该容器,创建新账户acs
    • 返回AC Terminal。配置容器中acs账户的别名及免密登录。
    • 将别名写在当前目录下的server_name.txt文件中

homework x create 生成作业x
homework x test # 测试作业 

配置别名和免密登录以及安装docker都在上面已经实现了
通过echo将别名写入server_name.txt中
1、使用云服务器及配置docker环境_第10张图片
将镜像上传到租好的服务器中,加载镜像

1、使用云服务器及配置docker环境_第11张图片
注册用户,设置密码。可以登录到docker虚拟机上:1、使用云服务器及配置docker环境_第12张图片
在config里面配置免密登录:

1、使用云服务器及配置docker环境_第13张图片
通过测试,作业完成:1、使用云服务器及配置docker环境_第14张图片

你可能感兴趣的:(#,Django,服务器,docker,运维)