租云服务器和docker

笔记

租云服务器

类别

租到的云服务器有两类,一类是毛坯云服务器,需要自己配置,定制性强;一类是提供服务的云服务器,已经搭好环境拿来直接用某种功能,例如直播功能以及数据库;一般各种框架以及thift都要在毛坯服务器上使用;提供服务的云服务器通过两种方式提供服务:一种通过socket获得ip地址和端口号,通过ip地址和端口号访问服务,比如数据库;另一种是通过http访问,我们提供一个链接,服务返回给我们一个结果。

二者的关系:一般使用毛坯服务器搭建各种框架,如果还需要其它服务,直接租别人提供的服务,然后调用即可

注意事项

  1. 付费模式:包年包月
  2. 带宽计费:按量计费,并拉到最大;一定要分配公网ipv4地址
  3. 安全组:开放哪些端口
    80/443表示访问网站的端口(是否加密),22是ssh登录的端口
  4. 操作系统版本选ubuntu20.04
  5. 设置密码登录
  6. 前期可开小,可动态扩容

docker相关内容

分为三层:本地—云服务器—docker容器层,前两层可以不一致,通过镜像只需保证docker容器层环境一致即可最后程序运行在docker容器层

docker中每个镜像都可以生成很多container容器,同一个镜像下生成的容器环境保持一致,每个容器相等于一个完全独立的云服务器;可以保存很多不同image镜像,一个镜像可能是从另一个镜像改过来的,共同部分只会存一个;由容器也可以生成镜像

docker中容器(服务器)迁移的方法:将容器生成镜像(rar),将镜像传到其它服务器上,加载到docker中,再由镜像生成容器

镜像命令

镜像格式:”名称:版本号”

  1. 拉取并加载官方镜像:docker pull ubuntu:20.04
  2. 查看镜像列表: docker images
  3. 删除镜像: docker rmi 名称:版本号(或者镜像id)
  4. 将镜像保存为tar文件: docker save -o ubuntu_20_04.tar 名称:版本号
    ps: 镜像导出的文件权限只有自己可读,需要chmod +r ubuntu_20_04.tar
  5. 将tar格式的镜像文件读入:docker load -i ubuntu_20_04.tar
  6. 由容器导出镜像: docker commit CONTAINER 名称:版本号

阿里云docker加速器:配置镜像加速器_容器镜像服务(ACR)-阿里云帮助中心 (aliyun.com)

容器命令

  1. 由镜像创建容器(并没有运行):docker create -it 名称:版本号
  2. 查看容器列表:docker ps -a 查看所有容器
    ps: docker ps 查看所有运行容器
  3. 运行容器: docker start 容器id(或容器名)
  4. 停止容器: docker stop 容器id
  5. 重启容器: docker restart 容器id
  6. 创建+运行容器: docker run -itd 名称:版本号
  7. 进入正在运行的容器中: docker attach 容器id
    ps:此时进入容器之后会进入根目录,相当于一个全新的云服务器(虚拟机)
  8. 挂起容器(仍在运行):先按Ctrl p,松开再按Ctrl q
  9. 关掉容器(不运行):Ctrl d
  10. 删除不在运行的容器:docker rm 容器id
  11. 删除所有不在运行的容器:docker container prune
  12. 不进入容器执行命令: docker exec 容器id ls
  13. 将容器对应的镜像保存为tar文件: docker export -o tmp.rar 容器id
    ps:此时仍然需要加文件权限:chmod +r tmp.rar
  14. 将容器对应的镜像文件的tar文件导入: docker import tmp.rar (myubuntu:1.0)
    ps:export/import会丢弃历史记录和元数据信息(名称和版本号),仅保存容器当时的快照状态
    save/load会保存完整记录,体积更大
  15. 在云服务器和容器之间互传文件:
    docker cp tmp.rar 容器id:/
    docker cp 容器id:/ .
    ps: 此处的docker cp文件夹无需加上-r
    两个操作都要在本地执行
  16. 容器重命名: docker rename 容器名 新容器名
  17. 限制容器的内存: docker update 容器名 –memory 1000M (–cpus)
  18. docker top CONTAINER:查看某个容器内的所有进程
  19. docker stats:查看所有容器的统计信息,包括CPU、内存、存储、网络等信息

配置流程

一般租到的都是root根用户,权限太大并且具有安全隐患,因此第一步要在root根目录下新开普通用户,可以开多个普通用户,每个普通用户都有独立的用户文件夹—家目录,可以将多个用户加入同一个用户组从而共享或者设置其它用户的文件权限,也不能访问root根目录,可以通过sudo临时使用root权限(必须之前赋予sudo权限)或者使用su命令切换root根用户;第二步是在本地(git bash或者AcTerminal或者虚拟机)上设置普通用户的ssh免密登录,本地不需要配置,只负责远程登录,第三步登录到普通用户上,通过ssh将.tmux、.vim、.bashrc下载到服务器上(镜像配置的跳过),由于该用户服务器不便于配环境和数据迁移,一般只会使用tmux挂起,具体的操作会加一层docker容器层;第四步安装docker,通过docker官网在用户服务器上安装docker,并加上sudo权限,设置加速器;第五步将本地(ACterminal)祖传的镜像docker_lesson_1_0.tar传到服务器再load读入镜像文件,再创建并运行容器(注意将镜像的ssh端口22映射到云服务器的20000);第六步进入容器后设置root密码,并安装ssh,第七步在云服务器上登录容器,在阿里云上放开端口20000以便其余地方登录,此时外界20000端口已经和该容器绑定第七步同第一步和第二步以及第三步配置容器的root用户

  1. 文件权限的三个方面:用户本身权限-用户组权限-其他用户权限(非用户本身以及用户组内的用户)
    例如-rwxr-xr–  第一位 – 表示文件类型(- 代表普通文件,d 代表目录),接下来的三位 rwx 代表用户(Owner)的权限,分别为读、写、执行。然后是三位 r-x 代表组(Group)的权限,表示可读和可执行,但不可写。最后三位 r– 代表其他用户(Others)的权限,表示仅可读。
  2. 使用sudo命令也对应于切换到根用户进行相应操作
上述步骤对应的命令:
ssh root@xxx  #登录根用户
adduser acs  # 创建用户acs
usermod -aG sudo acs  # 给用户acs分配sudo权限
参照ssh设置普通用户的免密登录
scp .bashrc .vimrc .tmux.conf server_name: #server_name需要换成自己配置的别名
安装docker
sudo usermod -aG docker $USER # 为了避免每次使用docker命令都需要加上sudo权限,可以将当前用户加入安装中自动创建的docker用户组,执行完此操作后,需要退出服务器,再重新登录回来,才可以省去sudo权限。
安装docker加速器
scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar 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创建并运行容器my_docker_server,进行端口映射
docker attach my_docker_server
passwd # 设置根用户root登录密码,也可以直接修改(租的云服务器是在网页设置)

#容器中安装ssh
apt-get install ssh
apt-get update
sudo /etc/init.d/ssh start

ssh root@127.0.0.1 (root@localhost) -p 20000 # 在云服务器上登录容器

在阿里云上放开端口20000
ssh root@云服务器ip -p 20000
ps: -p 22登陆的是云服务器的根用户 -p 20000特指云服务器的某个容器的根用户

不建议在根用户下开多个新用户分配给多人,特点:
1. 环境都是全新的
2. 可以看到其它用户的文件夹,必须修改文件权限(其它用户的权限或者用户组的权限)保证文件不被其它用户浏览
3. 如果不分配新用户sudo权限,则无法进行相应操作

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇