当前位置:   article > 正文

Lesson 8. 云服务器与docker

Lesson 8. 云服务器与docker

Lesson 8. 云服务器与docker

y总写的讲义: 8. 租云服务器及配docker环境

腾讯云地址: https://cloud.tencent.com/

云服务器

  • 云服务器的作用:

    (1) 存放我们的 docker 容器,让计算跑在云端。

    (2) 获得公网IP地址,让每个人可以访问到我们的服务。

  • AcTerminal, 云服务器, docker, 三者之间的关系:

AcTerminal, 云服务器, docker, 三者之间的关系

  • 从租到的毛坯服务器装 tmux 和 docker:

    • 我用的是腾讯云的服务器,腾讯云和其他平台不同,给的是具有 sudo 权限的用户 ubuntu 而非 root 用户。为了防止误操作,创建一个新的用户 acs 并给予 sudo 权限。

      ssh ubuntu@服务器公网IP地址		# 填租到的服务器提供的公网IP地址 
      sudo adduser USER_NAME    		 # 填新添加用户的用户名 
      sudo usermod -aG sudo USER_NAME
      
      • 1
      • 2
      • 3
    • 配置免密登录方式,在 Lesson 4. ssh 中有详细步骤。

    • 安装 tmux 并且把祖传配置上传到服务器。

      sudo apt-get update
      sudo apt-get install tmux
      
      scp .bashrc .vimrc .tmux.conf server_name:		# y总开发的AcTerminal中的祖传配置
      
      • 1
      • 2
      • 3
      • 4
    • 之后在 tmux 中按照 docker安装教程 安装 docker

      docker --version   # 安装完成后会显示安装的 docker 版本
      
      • 1
    • 另外也可以在这个毛坯服务器上玩玩,随便下点东西熟悉熟悉。

      sudo apt-get install tree    # 比如安装 tree 命令
      
      • 1

docker

  • docker 的作用:

    保证在不同的运行环境下,能有完全相同的软件版本环境,帮你跳过配环境的过程。

  • docker 的相关概念:

    • image 镜像: 可以理解成模板。每个镜像形如 名称:tag(版本号) ,例如 ubuntu:20.04
    • container 容器: 每一个容器相当于完全独立的云端服务器。
    • 一个 docker 包含多个 image 镜像,每个 image 镜像可以生成多个 container 容器,用相同镜像生成的容器的环境完全一样。

docker, image, container之间的关系

  • 把一个容器迁移到其他的服务器:

容器迁移的过程

  • docker 的相关操作:

    • 将当前用户添加到 docker 用户组,避免在每个 docker 命令前都要加上 sudo 权限。

      sudo usermod -aG docker $USER    # 执行完命令后需要重新 ssh 到服务器
      
      • 1
    • 镜像 images 的相关操作:

      # image 基本操作
      docker pull ubuntu:20.04		# 拉取镜像
      docker images					# 列出本地所有镜像
      docker rmi ubuntu:20.04			# 删除镜像
      
      
      # 迁移 image 到其他服务器
      docker save -o ubuntu_20_04.tar ubuntu:20.04	# 将镜像 ubuntu:20.04 导出到本地文件 ubuntu_20_04.tar
      chmod +r ubuntu_20_04.tar						# 设置可读权限
      scp server1:ubuntu_20_04.tar .					# logout 退回到 AcTerminal,把 .tar 压缩文件复制到本地
      scp ubuntu_20_04.tar server2:					# 再从 AcTerminal 上传到目标服务器
      docker load -i ubuntu_20_04.tar					# 根据文件生成镜像(把镜像加载到docker)
      
      
      # container 生成 image
      docker [container] commit CONTAINER IMAGE_NAME:TAG	# 创建某个 container 的镜像,[]表示可选内容
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    • 容器 container 的相关操作:

      docker ps -a									# 查看本地的所有容器
      docker [container] create -it ubuntu:20.04		# image 生成 container
      docker [contaienr] run -itd ubuntu:20.04		# image 生成 container 并且启动容器
      docker [container] rm CONTAINER					# 删除容器
      docker rename CONTAINER1 CONTAINER2				# 重命名容器
      
      
      docker [container] start CONTAINER				# 启动容器
      docker [container] stop CONTAINER				# 停止容器
      docker [container] restart CONTAINER			# 重启容器
      docker [container] attach CONTAINER				# 进入容器;  ctrl+d --> 停止容器;
      												# ctrl+p --> ctrl+q  挂起容器;    
      												
      docker export -o xxx.rar CONTAINER			# 将容器 CONTAINER 导出到本地文件 xxx.tar 中
      docker import xxx.tar IMAGE_NAME:TAG		# 将本地文件xxx.tar导入成镜像,并将镜像命名为IMAGE_NAME:TAG
      
      
      docker cp xxx CONTAINER:xxx						# 在本地和容器间复制文件
      docker cp CONTAINER:xxx xxx
      
      
      docker stats									# 查看所有容器的统计信息
      docker update CONTAINER --memory 500MB			# 修改容器限制
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23

      迁移时 docker export / importdocker save / load 的区别:
      export / import 丢弃多余信息,仅保留必要的状态,save / load 会保存完整记录。

  • 实战: 把 acwing 中的 image 上传到租的服务器中生成容器并更改成熟悉的配置。(在服务器上搭建自己的虚拟机)

    • 上传 image 到自己租的云端服务器:

      scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar SERVER_NAME:
      
      • 1
    • image 加载到 docker:

      docker load -i docker_lesson_1_0.tar
      
      • 1
    • 创建并运行 docker_lesson:1.0 镜像的容器:

      docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0
      
      • 1
    • 进入自己创建的 container 的根用户下并且设置密码:

      docker attach my_docker_server
      passwd
      
      • 1
      • 2
    • 在租服务器的云平台放行 20000 端口。

    • 在 container 中安装 sshsudo:

      apt-get update
      apt-get sudo
      
      apt-get update
      apt-get install ssh
      
      apt-get update
      sudo /etc/init.d/ssh start
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • 和之前一样,创建工作账户 acs ,分配 sudo 权限,再配置免密登录(可以直接 ssh 到搭建的虚拟机),最后安装 tmux 上传祖传配置,大功告成 !

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/158964
推荐阅读
相关标签
  

闽ICP备14008679号