云平台的作用
任选一个云平台,按如下方式配置
租到的服务器
IP:Port
不建议直接在毛坯服务器搭房子,而是先搭建docker
,方便后期迁移到其它平台,而且用于标准化,提高开发效率。因此主要开发工作在毛坯服务器中的docker
里。
创建用户
用ssh登录后,创建用户acs
adduser acs
分配sudo
权限
usermod -aG sudo acs # 给acs用户sudo权限
配置免密登录方式
在本地配置~/.ssh/config
把本地~/.ssh/id_rsa.pub
复制到服务器的~/.ssh/authorzied_keys
配置新服务器的工作环境
把Ac Terminal的bash
、vimrc
和tmux
配置复制到服务器上
scp .bashrc .vimrc .tmux.conf server_name:
安装tmux
sudo apt-get update sudo apt-get install tmux
打开tmux
,在tmux
安装docker
,这样可防止终端异常关闭后,还能恢复到之前的进度。
安装可参考官网教程
(1)配置仓库
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 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
(2)安装docker
sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
安装后可通过docker --version
查看版本,如果出现则安装成功。
在使用前,可以给docker
命令加上sudo
权限,避免每次使用docker
都要加上sudo
,$USER
表示当前用户。执行下面命令后,会自动创建docker
组,并让当前用户加入。
sudo usermod -aG docker $USER
(1)基本原理
云平台有多种:轻量级云平台、ECS等。为了解决迁移困难,可把服务器配置到docker
里,这样就能通过docker
更换到不同的平台,减少迁移代价。
一个docker
可以有多个镜像image
,一个image
可以有多个容器container
。但这只是逻辑结构,而不是存储结构,docker
不会真的一个个独立存储。镜像和容器的关系可以看做是印章和图案的关系。
在实际应用时,一个container
是一个服务器。需要迁移时,在旧的云平台把container
封装成image
,然后在新的云平台读取image
即可。
(2)镜像(Images)
docker pull ubuntu:20.04
docker images
docker image rm ubuntu:20.04
或docker rmi ubuntu:20.04
container
镜像:docker [container] commit CONTAINER IMAGE_NAME:TAG
ubuntu:20.04
到文件ubuntu_20_04.tar
:docker save -o ubuntu_20_04.tar ubuntu:20.04
ubuntu_20_04.tar
加载镜像ubuntu:20.04
:docker load -i ubuntu_20_04.tar
(3)容器(container)
docker [container] create -it ubuntu:20.04
docker ps -a
docker [container] start CONTAINER
docker [container] stop CONTAINER
docker [container] restart CONTAINER
docker [container] run -itd ubuntu:20.04
docker [container] attach CONTAINER
Ctrl-p
,再按Ctrl-q
docker [container] exec CONTAINER COMMAND
docker [container] rm CONTAINER
docker container prune
CONTAINER
导出到文件xxx.tar
:docker export -o xxx.tar CONTAINER
xxx.tar
导入成镜像image_name:tag
:docker import xxx.tar image_name:tag
docker top CONTAINER
docker stats
scp
):docker cp xxx CONTAINER:xxx
docker rename CONTAINER1 CONTAINER2
docker update CONTARINER --memory 500MB
docker export./import
与docker save/load
的区别
export/import
会丢弃历史记录和元数据信息,仅保存容器当时的快照状态save/load
会保存完整记录,体积更大进入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 # 将容器内的22端口(容器内的SSH端口)映射到本地的20000端口,然后创建并运行docker_lesson:1.0镜像 docker attach my_docker_server # 进入创建的docker容器 passwd # 设置root密码
注意,要先去云平台控制修改安全组配置,开放端口20000
,IP填0.0.0.0/0
表示所有都允许,协议选TCP
,否则绑定端口的命令无效。
然后以云平台服务器的IP作为docker
的IP,20000
为端口号,就能以SSH方式访问docker
设置完就可使用SSH登录到docker
内的服务器,可按照SSH一节设置免密登录等优化SSH登录方式,注意ssh
需要加上参数-p 20000
。
如果apt-get
下载软件较慢,可修改软件源到清华大学开源软件镜像站。
初次使用容器,用命令apt-get install sudo
先安装sudo
task1
(1)首先在腾讯云租一台云服务器。获取到公网IP后,在云服务器登录root
账户,用passwd
设置root
账户密码,然后在目录~/.ssh
下创建文件authorized_keys
,把AC Terminal的公钥复制到该文件中。
(2)在AC Terminal修改~/.ssh/config
文件
Host acs HostName xxx.xxx.xxx.xxx User root
(3)保存服务器别名
在AC Terminal执行
cd ~/homework/lesson_8/homework_0 echo "acs" > server_name.txt
task2
在AC Terminal用ssh acs
登录到云服务器,执行如下命令
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 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 sudo usermod -aG docker $USER
task3
(1)复制镜像
scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar acs: # 将镜像上传到自己租的云端服务器 ssh acs # 登录自己的云端服务器
(2)加载镜像
docker load -i docker_lesson_1_0.tar # 将镜像加载到本地
(3)打开端口
在云服务器控制台开启端口20000
,IP设置为0.0.0.0/0
,协议选TCP
(4)用镜像创建容器并绑定端口
docker run -p 20000:22 --name my_docker_server -itd docker_lesson:1.0 # 创建并运行docker_lesson:1.0镜像
(5)打开容器
docker attach my_docker_server # 进入创建的docker容器
(6)创建新用户
passwd # 设置root密码 adduser acs # 创建用户acs su acs # 切换到acs用户
(7)添加SSH公钥
把AC Terminal的SSH公钥拷贝至服务器acs用户的~/.ssh/authorized_keys
cd ~ mkdir .ssh vim .ssh/authorized_keys
(8)配置docker容器别名
在AC Terminal修改~/.ssh/config
,加入如下配置信息,其中IP是云平台的服务器公网IP。
Host acs_docker HostName xxx.xxx.xxx.xxx User acs
(9)保存docker容器别名
在AC Terminal执行
cd ~/homework/lesson_8/homework_2 echo "acs_docker" > server_name.txt