在OCI容器实例中运行Nginx容器
在2022年12月,新服务OCI容器实例被发布。这是一项无需管理服务器即可快速简便地运行容器的无服务器计算服务。容器化的应用程序可以比Kubernetes更简单地运行。
目录
1. 事前準備
1-1. 認証トークンの生成
1-2. レポジトリの作成
1-3. Dockerイメージを OCI レジストリにプッシュ
2. コンテナ・インスタンスの作成
3. Nginxへの接続
事前准备
1-1. 生成身份验证令牌
要将Docker镜像推送到OCI注册表,需要首先生成认证令牌。有关生成方法,请参考相关文档。
1-2. 创建存储库
将Docker镜像推送到OCI注册表。
在这个示例中,我们将使用dockerfile构建Docker镜像。此步骤将在OCI计算实例上执行。为了测试,我们将替换Nginx的欢迎页面。一旦镜像创建完成,我们将把它推送到OCI注册表中。
如果 Compute 实例上没有安装 Docker,请先安装它。(请参考先前博客的 Step-1)
a) 准备 Dockerfile
[opc@linux8-nginx ~]$ cat dockerfile
FROM nginx
RUN mkdir -p /usr/share/nginx/html
RUN echo "<h1>Hello Nginx</h1>" > /usr/share/nginx/html/index.html
VOLUME /usr/share/nginx/html
EXPOSE 80
[opc@linux8-nginx ~]$
b) 构建形象
[opc@linux8-nginx ~]$ sudo docker build -t nginx_demo .
[+] Building 9.6s (7/7) FINISHED
=> [internal] load build definition from dockerfile 0.0s
=> => transferring dockerfile: 250B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/nginx:latest 2.1s
=> [1/3] FROM docker.io/library/nginx@sha256:6650513efd1d27c1f8a5351cbd33edf85cc7e0d9d0fcb4ffb23d8fa89b601ba8 5.3s
......
=> [2/3] RUN mkdir -p /usr/share/nginx/html 0.7s => [3/3] RUN echo "<h1>Hello Nginx</h1>" > /usr/share/nginx/html/index.html 0.9s
=> exporting to image 0.6s
=> => exporting layers 0.6s
=> => writing image sha256:19735e14b0a66d10d4b268c01b9da10110823f4e9619fd9fddfb2e573054d067 0.0s
=> => naming to docker.io/library/nginx_demo 0.0s
[opc@linux8-nginx ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx_demo latest 19735e14b0a6 7 minutes ago 142MB
[opc@linux8-nginx ~]$
您可以使用curl命令进行确认(也可以使用网络浏览器)。
[opc@linux8-nginx ~]$ curl localhost
<h1>Hello Nginx</h1>
[opc@linux8-nginx ~]$
c) 图像标记
[opc@linux8-nginx ~]$ sudo docker tag 19735e14b0a6 nrt.ocir.io/<namespace>/repo-nginx:latest
[opc@linux8-nginx ~]$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx_demo latest 19735e14b0a6 19 minutes ago 142MB
nrt.ocir.io/<namespace>/repo-nginx latest 19735e14b0a6 19 minutes ago 142MB
[opc@linux8-nginx ~]$
登录OCI容器注册表
命令: docker login .ocir.io
:如果是东京地区,则为nrt。其他地区,请参考此列表。
执行命令时,需要输入用户名和密码。
用户名:在OCI容器注册表界面上输入显示的命名空间和用户名(请参考步骤1-2,不要忘记它们之间的“/”)。
密码:输入在步骤1-1中生成的认证令牌。
[opc@linux8-nginx ~]$ sudo docker login nrt.ocir.io
Username: <namespace>/<user>
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[opc@linux8-nginx ~]$
e) Docker镜像的推送
命令:docker push <目标标签>
示例:docker push nrt.ocir.io/<命名空间>/repo-nginx:latest
[opc@linux8-nginx ~]$ sudo docker push nrt.ocir.io/<namespace>/repo-nginx
Using default tag: latest
The push refers to repository [nrt.ocir.io/<namespace>/repo-nginx]
......
latest: digest: sha256:bc5ca8e3ea4715e7ab4141542cc9c3e30b51358c62f0ae8aa6412c00c0315775 size: 1983
[opc@linux8-nginx ~]$
创建容器实例
3. 连接到Nginx
我会尝试连接到其他的Compute实例。 (命令:curl )
[opc@linux8 ~]$ curl XXX.XXX.210.138
<h1>Hello Nginx</h1>
[opc@linux8 ~]$
到目前为止,Nginx的运行确认已经完成。它可以作为OCI负载均衡器的后端服务器。在将容器实例添加到负载均衡器的后端时,请在负载均衡器创建后指定容器实例的IP地址(省略详细信息)。
以上
相关文章
Oracle云的个人系列博客
使用OCI来使用Nginx的Docker镜像
OCI容器实例与标准虚拟机之间运行容器的区别
官方链接
产品网站
官方文件
宣布OCI容器实例的可用性(英文)
开始使用OCI容器实例(英文)
关于容器实例的常见问题