上一篇说到Oracle Cloud免费且大热的4c24g的VM.Standard.A1.Flex机型难申请,而实际使用中,oracle cloud免费套餐中陷阱还是很多的,以下是几种常见情况:
免费主机超额度,免费存储超额度,oc优先停掉的资源就是这个A1.Flex机型。
A1.Flex机型可选操作系统只有oracle linux 7或8,不一定顺手。
操作系统被玩坏时,不像一般云服务控制台可以恢复镜像,你只能重新申请
将容器作为虚拟机使用并不符合容器应用部署的初衷,但鉴于以上问题本文中采用docker创建一个容器代替虚拟机,一切在虚机中操作,当系统灾难不可恢复时,删掉就好,省却刷机抢注之苦。
布署步骤
ssh 登录到主机
1、安装docker
yum install docker
2、Dockerfile
编写Dockerfile
FROM ubuntu:20.04
LABEL MAINTAINER="luckfu.com"
USER root
# change root password to `ubuntu`
RUN echo 'root:ubuntu' | chpasswd
ENV DEBIAN_FRONTEND noninteractive
# install ssh server
RUN apt-get update && apt-get install -y \
openssh-server sudo \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /run/sshd \
&& ssh-keygen -A \
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
&& apt-get purge -y --auto-remove
EXPOSE 22
# run ssh server
CMD ["/usr/sbin/sshd", "-D", "-o", "ListenAddress=0.0.0.0"]
3、生成镜像
docker build -f ./Dockerfile -t ubuntu-ssh
使用 docker images命令查看
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntuos-ssh latest b6010c26ebb7 1 days ago 189MB
ubuntu 20.04 d5ca7a445605 8 weeks ago 65.6MB
4、启动容器
执行命令
docker run -d -p 9022:22 -p 8000-9000:8000-9000 \
-v /data/:/data \
--name ubuntuos-ssh ubuntuos-ssh
主要参数及含义:
参数 | 解释 |
---|---|
-d | 守护进程模式 |
-p | 端口映射 [主机端口:容器端口] |
-v | 存储卷映射 [主机目录:容器目录] |
–name | 指定容器名称 ubuntuos |
上述命令中我们部署了一个名称为ubuntuos-ssh的容器,将主机的/data(oracle cloud 中可以申请100G“始终免费”存储,挂载到主机/data)挂载到容器的/data下,将主机的9022映射容器的ssh服务22端口,另外开放了8000-9000端口备用
查看容器是否运行
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c9cf191daf2 ubuntuos-ssh "/usr/sbin/sshd -D -…" 12 days ago Up 12 days 0.0.0.0:8000-9000->8000-9000/tcp, :::8000-9000->8000-9000/tcp, 0.0.0.0:9022->22/tcp, :::9022->22/tcp ubuntuos-ssh
登录容器ß
这里我们要使用ssh,而不是exec -it 进入
密码 ubuntu
ssh root@localhost -p 9022
root@localhost's password:
(base) root@xxxxxxx:~#
到这里如果正常登录,则说明容器正常运行
5、通过网络登录
登录oracle cloud控制台
- 检查容器使用的 22 8000-9000端口是否开通
- 主机检查防火墙如iptables firwwall中,端口是否打开 远程登录
ssh root@IP -p 9022
可劲造吧