阿里云Docker镜像管理入门

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文基于阿里云服务器Docker镜像,一切操作均在阿里云服务器内进行,其他云服务厂商或者完全在linux系统下进行请根据实际情况自行查阅相关知识进行调整。

本文基于阿里云服务器Docker镜像,一切操作均在阿里云服务器内进行,其他云服务厂商或者完全在linux系统下进行请根据实际情况自行查阅相关知识进行调整。

1、切换至Web Terminal ,安装Docker依赖库:

yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker CE的软件源信息:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker CE
yum makecache fast &&
yum -y install docker-ce
启动Docker服务:

systemctl start docker

配置DockerHub镜像加速器
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
重启Docker服务
systemctl restart docker

2、准备应用代码和Dockerfile
创建工作空间:
mkdir -p /tmp/demo && cd /tmp/demo
工作空间下创建HelloWorld代码文件,用来在容器环境中监听HTTP服务,输出HelloWorld字符串。
cat > /tmp/demo/main.go << EOF
package main

import (

    "fmt"
    "net/http"

)

func main() {

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
            fmt.Fprintf(w, "Hello! World\n")
    })

    fmt.Println("start to serve...")
    http.ListenAndServe(":80", nil)

}
EOF

在工作空间下创建Dockerfile文件:

cat > /tmp/demo/Dockerfile << EOF
FROM golang:1.12-alpine

change current working dir

WORKDIR /go/src/app

copy main.go into /go/src/app

COPY . .

go build and install the app

RUN go install -v ./...

run the app by default

CMD ["app"]
EOF
3、本地构建镜像并运行镜像
本地构建镜像并运行镜像:
docker build . -t demo:v1
说明:
参数.表示指定当前路径作为构建上下文,即Dockerfile所在的本地路径;
参数-t demo:v1指定镜像名称和标签;
使用docker run命令运行镜像:
docker run -d -p 8000:80 demo:v1

说明:
参数-d设置容器运行模式为后台运行;
参数-p 8000:80将容器内部使用的网络端口映射到主机上,其中8000为主机端口,80为容器内部使用端口。
使用curl工具访问容器中的HelloWorld服务:
curl localhost:8000

使用docker rm命令删除容器:

docker rm -f $(docker ps -a | grep "demo:v1" | awk '{print $1}')
4、创建远程镜像仓库
使用您的阿里云主账号登录容器镜像服务控制台 -单击【前往开通】 - 单击【设置Registry登录密码】 - 设置阿里云Docker Registry登录密码,然后单击 【确定】 - 在容器镜像服务控制台,依次单击 【个人实例】 > 【命名空间】 > 【创建命名空间】,在 【创建命名空间】 弹框中填写命令空间名称,然后单击 【确定】- 选择 【镜像仓库】 > 【创建镜像仓库】,在 【创建镜像仓库】 弹框中选择 【命名空间】 ,填写 仓库名称 和 摘要 ,然后单击 【下一步】- 单击 【本地仓库】 > 【创建镜像仓库】- 在镜像仓库列表,选择上一步创建的镜像仓库,单击 【管理】 ,查看镜像仓库详情-
5、推送镜像:
本步骤操作将本地镜像推送到远程仓库中,并运行远程仓库中的指定版本镜像。请将本步骤命令中涉及的远程镜像地址替换为步骤五中创建的镜像仓库的公网地址。

执行以下命令登录到阿里云Docker Registry:
docker login --username="用户名" registry.cn-hangzhou.aliyuncs.com

说明: 请将命令中的用户名替换为您的阿里云账号全名,回车后输入远程镜像仓库密码,密码为步骤六开通服务时设置的密码。
请登录阿里云用户中心查看您的主账号用户名称。
标记本地镜像,将其归入远程仓库:

docker tag demo:v1 registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1

将本地镜像推送到远程仓库:
docker push registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1

拉取指定版本的远程镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1

运行拉取的远程镜像:
docker run -d -p 8000:80 registry.cn-hangzhou.aliyuncs.com/space_test/demo:v1

访问HelloWorld服务验证:

curl localhost:8000

总结:
本文通过一步步实际操作过程,可以构建一个简单的docker实例,对docker有一个初步的认识。由于此教程基于阿里云服务器,有部分步骤是基于阿里云官网操作控制台操作,缺乏基于unbuntu或者其他linux操作系统的通用操作方式。后续还需要进一步学习相关知识,方能随心所欲创建自己需要的docker实例。

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
13天前
|
缓存 监控 持续交付
|
2天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
14 2
|
2天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
22 2
|
3天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
9 1
|
4天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
9天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
18 3
|
9天前
|
存储 缓存 Java
Java应用瘦身记:Docker镜像从674MB优化至58MB的实践指南
【10月更文挑战第22天】 在容器化时代,Docker镜像的大小直接影响到应用的部署速度和运行效率。一个轻量级的Docker镜像可以减少存储成本、加快启动时间,并提高资源利用率。本文将分享如何将一个Java基础Docker镜像从674MB缩减到58MB的实践经验。
21 1
|
14天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
39 2
|
16天前
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
123 2
|
21天前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。