租云服务器及配环境
租云服务器
见 y 总视频
配置远程登录环境
添加账户
为了操作安全起见,我们一般会添加一个普通账号,并赋予 sudo
权限,避免直接使用 root
用户操作。
创建用户 tonngw
adduser tonngw # 创建用户
usermod -aG sudo tonngw # 为用户分配 sudo 权限
配置别名
每次连接服务器都需要 用户名@ip地址
太麻烦了,我们先给要连接的服务器起一个别名。
进入 ~/.ssh
,编辑 config
文件,添加别名和服务器信息
Host server
HostName ip地址
User tonngw
配置 SSH 免密登录
将本地的 ssh
公钥上传到服务器上
ssh-copy-id server
然后使用
ssh server
连接服务器,第一次连接还是需要输入密码,确认身份,下次可直接免密登录。
如果还没有生成 ssh
密钥,可以通过 ssh-keygen
生成。
详细介绍可以查看这篇笔记 https://www.acwing.com/blog/content/18238/
配置服务器环境
安装开发工具以及 Docker,未来我们的工作基本都是在 Docker
中;首先 Docker 里安装和管理环境会很方便, 同时 Docker 镜像是可移植的,后期可以通过 Docker 镜像在其他服务器上开箱即用,而直接放在服务器上那就 GG 了。
更新系统依赖包
在装环境之前首先更新系统依赖包
sudo apt-get update
安装 tmux
sudo apt-get install tmux
上传本地配置文件
使用 scp
上传本地文件到远程服务器上,同步配置
注意:不要忘记加 :
吖
scp .bashrc .vimrc .tmux.conf txserver:
安装 docker
打开 tmux,防止终端不小心关闭后工作任务丢失。
一路复制粘贴 hhh
# 1
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 2
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 3
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
# 4
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
安装结束后,执行
docker --version
输出版本号,则安装成功!
Docker 使用
将当前用户添加到 docer
用户组
为了避免每次运行 docker 命令都需要 sudo 权限,可以将当前用户添加到 docker 安装时自己创建的 docker 用户组中,之后就可以直接输入 docker 命令了。
sudo usermod -aG docker $USER
和为用户赋予 sudo
权限命令一样。
镜像操作
docker 仓库中的每个镜像都是由 name:tag
- 应用名称:版本号
构成的。
可以在 Docker 中央仓库中查找想要的镜像 https://hub.docker.com/
docker pull ubuntu:20.04
:拉取一个镜像docker iamges
:查看本地所有的镜像docker rmi ubuntu:20.04
:删除指定镜像,rmi - remvoe imagedocker save -o ubuntu_20_04.tar ubuntu:20.4
:将镜像ubuntu:20.4
导出到本地文件ubuntu_20_04.tar
。
默认导出后其他用户是没有可读权限的,需要给它加一个可读权限chmod +r ubuntu_20_04.tar
docker load -i ubuntu_20_04.tar
:将镜像ubuntu:20.04
从本地文件ubuntu_20_04.tar
中加载出来。
docker save
和docker load
配合可以实现 docker 镜像在不同服务器之间的迁移。
容器操作
根据一个镜像可以创建多个容器。
说明:
[container]
表示可选,可以不写CONTAINER
:可以是容器 name 或者是容器 id
命令:
docker [container] create -it ubuntu:20.04
:利用镜像ubuntu:20.04
创建一个容器docker ps -a
:查看本地所有的容器docker ps
:只显示正在运行的容器docker [container] start CONTAINER
:启动容器docker [container] stop CONTAINER
:停止容器docker [container] restart CONTAINER
:重启容器docker [container] run -itd ubuntu:20.04
:创建并启动一个容器docker [container] run -it ubuntu:20.04
创建并直接进入容器,少了参数d
docker [container] attach CONTAINER
:进入容器- 退出后不关闭容器(挂起容器):
Ctrl + p
+Ctrl + q
【推荐使用】 - 退出后关闭容器:
Ctrl + d
docker [container] exec CONTAINER COMMAND
:在容器中执行命令- 可以把 docker 容器看成一个全新的 Linux 服务器。
ls
查看根目录就是 linux 文件目录 docker [container] rm CONTAINER
:删除容器docker container prune
:删除所有已停止的容器,prune - 删去docker export -o xxx.tar CONTAINER
:将容器CONTAINER
导出到本地文件xxx.tar
中docker import xxx.tar image_name:tag
:将本地文件xxx.tar
导入成镜像,并将镜像重命名为image_name:tag
docker exprot/import
和docker save/load
的区别export/impot
会丢失历史记录和元数据信息,仅保存容器当时的快照状态。save/load
会保存完整记录,体积更大。docker top CONTAINER
:查看某个容器内的所有进程docker stats
:查看所有容器的统计信息,CPU、内存、存储、网络等信息。- 按
Ctrl + c
结束查看 docker cp xxx CONTAINER:xxx
或docker cp CONTAINER:xxx xxx
:在本地和容器之间复制文件docker rename CONTAINER1 CONTAINER2
:重命名容器docker update CONTAINER --memory 500M
:修改容器大小限制
实战
使用 AC Terminal 连接云服务器的 docker,可以把 docker 看成一个服务器。
首先将镜像上传到自己的云服务器上
scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar server
登录云服务器,配置 docker
# 登录云服务器
ssh server
# 将本地镜像加载到 docker 中
docker load -i docker_lesson_1_0.tar
# 创建并启动加载的镜像,并建立端口映射 2000:22
docker run -p 20000:22 --name mydocker -itd docker_lesson:1.0
# 进入创建的 docker 容器
docker attach mydocker
# 设置 root 密码,刚开始是没有密码的
passwd
去云平台修改安全组配置,放行 20000
端口,用于 ssh 登录 docker。
现在就可以使用 AC Terminal ssh 登录自己的 docker 容器了。
下面还是老套路:
- 创建一个具有
sudo
权限的用户 - 配置连接别名
- 配置免密登录
- 将本地配置上传到 docker 中。
over!
作业
homework_0
# [1] 租服务器见 y 总视频
# [2] 租好服务器得到公网 ip 地址和密码
vim .ssh/config
# 设置别名 myserver、HostName、ip
ssh-copy-id server # 上传公钥
ssh myserver # 即可免密登录
# [3]
echo server > server_name.txt
homework_1
ssh server
# 安装 docker,查看上方笔记
homework_2
# [1]
scp /var/lib/acwing/docker/images/docker_lesson_1_0.tar server
# [2]
ssh server
# [3]
docker load -i docker_lesson_1_0.tar
# [4]
docker run -p 20000:22 --name mydocker -itd docker_lesson:1.0
# [5] 云平台开放端口
# [6]
docker attach [CONTAINER]
sudo adduser acs
sudo usermod -aG sudo acs
# [7]
exit
vim .ssh/config
# 设置别名 mydocker、HostName、ip
ssh-copy-id mydocker # 上传公钥
ssh mydocker # 即可免密登录
# [8]
echo mydocker > server_name.txt
docker [container] start CONTAINER:停止容器 好像错了。
已修改,感谢指正~