一目了然的 Docker 环境配置指南

来源 | Datawhale

作者 | Tianchi

头图 | 下载于视觉中国

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、 bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

  • web应用的自动化打包和发布;

  • 自动化测试和持续集成、发布;

  • 在服务型环境中部署和调整数据库或其他的后台应用;

  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

正因为Docker强大的功能,越来越多的场景下,需要我们使用Docker部署和发布我们的代码。今天就梳理下,如何入门Docker。


本地环境安装docker工具

  ubutun安装

这里以阿里云ECS(ubutun)下安装docker为例。命令行安装:

sudo apt install docker.io

验证:

docker info

  Mac安装,下载MAC版本的docker:

https://hub.docker.com/editions/community/docker-ce-desktop-mac/

  Windows安装,下载Windows版本的docker: 

https://hub.docker.com/editions/community/docker-ce-desktop-windows/

注意:下载成功后,直接install就可以了,一路Next即可安装完成。申请自己的docker id,登陆;

创建镜像仓库

这里以申请阿里云容器镜像服务(免费),并创建仓库为例,其他仓库如dockerhub、谷歌、亚马逊、腾讯等详见对应产品说明书。

阿里云容器服务地址为:https://cr.console.aliyun.com

注册开通后产品页面如下

  1. 创建命名空间

第一步切换标签页到命名空间,创建地址唯一的命名空间

根据大赛要求选择对应的地域,其他的按照自己需求选择或填写

  2. 创建镜像仓库

下一步,选择本地仓库,不建议其他选项,完成创建

点击管理,可查看详情。


  3.完成本地登录

按照页面的指令在本地完成登陆:

export DOCKER_REGISTRY= your_registry_url<docker registry url> (注意这里your_registry_url最后字段结尾,不能多不能少
E.g registry.cn-shanghai.aliyuncs.com/xxxx/xxxx) docker login $DOCKER_REGISTRY \ --username your_username \ --password your_password

构建镜像并推送

在安装好Docker环境的本机/服务器构建并推送容器镜像。过程中可能会使用docker命令,如拉取docker pull,推送docker push,构建docker build等等。

为简化构建镜像的难度,天池已准备了常用的Python基础镜像,可直接拉取使用,自行构建镜像请确保安装curl.更多基础镜像说明可参考:https://tianchi.aliyun.com/forum/postDetail?postId=67720。

docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/python:3

  1. 准备所需文件

新建一个文件夹(例如tianchi_submit_demo)用于存放这次任务镜像所需的文件,文件夹中内容示例,其中hello_world.py中是各位自己的代码部分:

Dockerfile配置文件参考,Dockerfile是固定名称,注意首字母大写。Dockerfile中命令皆大写:

# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/python:3## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /## 指定默认工作目录为根目录(需要把run.sh和生成的结果文件都放在该文件夹下,提交后才能运行)
WORKDIR /## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

run.sh参考:

python hello_world.py

  2. 构建镜像并推送(2.1及2.2皆可)

2.1 IDE + Cloud Toolkit

推荐使用 Alibaba Cloud Toolkit:

https://cn.aliyun.com/product/cloudtoolkit 进行操作。

Cloud Toolkit 与主流 IDE 及阿里云容器镜像服务无缝集成,可以简化操作。这里以在 IntelliJ IDEA 中使用 Alibaba Cloud Toolkit 为例。只需配置一次,之后都可一键推送~

2.1.1. 安装及配置

在本地 IDE 中安装 Alibaba Cloud Toolkit 并进行阿里云账户配置。

参见:在 IntelliJ IDEA 中安装和配置 Cloud Toolkit:https://help.aliyun.com/document_detail/98762.html

2.1.2. 设置环境

设置用于打包本地镜像的 Docker 环境。

  1. 在 IntelliJ IDEA 工具栏单击 Tools > Alibaba Cloud > Preferences… 

  2. 在 Settings 对话框的左侧导航栏中单击 Docker

  3. 在 Docker 界面中设置 Cloud Toolkit 需要连接的 Docker 环境。

注意:如果出现连接测试报错,可进入 Docker 的 Settings 界面,单击左侧导航栏中的 General,然后选择 Expose daemon on tcp://localhost:2375 without TLS。

    • 本地为 Mac 或 Linux 操作系统,勾选 Unix Socket,然后单击 Browse,输入unix:///var/run/docker.sock

    • 本地为 Windows 操作系统,勾选 TCP Connection,然后在 URI 右侧文档框输入本地 Docker 的 URI,如 http://127.0.0.1:2375。

    • 远程 Docker 环境:勾选 Tcp Connection,在 URI 右侧的文本框里输入远端的 Docker 环境的 URI(包括 IP 地址和端口),如 http://x.x.x.x:2375,并确保远程主机的 HTTP 服务开启。

    • 单击 Test Connection 进行连接测试。

    2.1.3. 构建并上传应用

    1. 在 IntelliJ IDEA 的菜单栏中选择 File > Open… ,选择参赛的工程文件。

    2. 在 IntelliJ IDEA 界面左侧的 Project 中右键单击您的 Docker 应用工程名,在弹出的下拉菜单中选择 Alibaba Cloud > Deploy to ACR/ACK > Deploy to ACR

    3. 在 Deploy to ACR 对话框中进行以下配置。

    • Context Directory:参赛的工程文件所在的目录,例如上文中的 tianchi_submit_demo 。

    • Dockerfile:选择上文中创建的 Dockerfile。

    • Version:对上传的工程文件做版本标记。例如 1.0

    1. 在 Image 页签中选择Context Directory和Dockerfile。

    2. 在 Image Repositories 区域选择上文中创建的容器镜像服务的地域、命名空间和镜像仓库。

    2.1.4. 单击 RUN

    下次就可以一键完成了~

    2.2 服务器上直接操作

    执行

    docker build -t registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0 .

    注意:registry.~~~是上面创建仓库的公网地址,用自己仓库地址替换。地址后面的:1.0为自己指定的版本号,用于区分每次build的镜像。最后的.是构建镜像的路径,不可以省掉。

    构建完成后可先验证是否正常运行,正常运行后再进行推送。

    CPU镜像:

    docker run your_image sh run.sh

    GPU镜像:

    nvidia-docker run your_image sh run.sh

    推送到镜像仓库

    docker push registry.cn-shenzhen.aliyuncs.com/test_for_tianchi/test_for_tianchi_submit:1.0

    如果这步出错,可能你没有登录,按照仓库里描述操作登录即可。

    第一次推送会比较耗时,可以休息一会了~o( ̄▽ ̄)d


    提交验证运行结果

    在左侧【提交结果】中填写推送的镜像路径、用户名和密码,即可提交。根据【我的成绩】中的分数和日志可以查看运行情况。

    常见问题及解决方案

    问题1. 如果你是在本机使用脚本build 镜像如docker build -t resgist… .可能会报错如下:

    ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'C:/Users/wyx/Desktop/tianchi_docker/requirements.txt'
    

    解决方法:在Dockerfile文件的安装依赖包之前加一行COPY requirements.txt requirements.txt

    问题2.  登陆镜像仓库失败,提示账号密码错误,请注意这里的账号密码非阿里云的账号密码而是你开通仓库服务时设置的账号密码,如果忘记密码,找回路径如下:

    找回容器镜像登录密码

    问题3. push 完成后刷新仓库网页看不到镜像版本,担心上传失败

    容器镜像网页存在一定的延迟,只要你本地push命令行没有出错就大胆去大赛提交即可,如果实在不放心你可以删除本地镜像然后pull一下验证。

    更多阅读推荐

    • 都在说云原生,它的技术图谱你真的了解吗?

    • SRE 是如何保障稳定性的

    • 如何写出让 CPU 跑得更快的代码?

    • Serverless 在 SaaS 领域的最佳实践

    • 云原生人物志|Pulsar翟佳:社区的信任最重要

    • 阿里的 RocketMQ 如何让双十一峰值之下0故障

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515531.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    阿里本地生活EMonitor根因分析大揭秘

    背景 阿里集团针对故障处理提出了“1/5/10”的目标-- 1 分钟发现、5 分钟定位、10 分钟恢复&#xff0c;这对我们的定位能力提出了更高的要求。 EMonitor 是一款集成 Tracing 和 Metrics、服务于饿了么所有技术部门的一站式监控系统&#xff0c;其覆盖了 前端监控、接入层监…

    uniapp 打包安卓 Android 抖音app 前端篇~01

    文章目录一、配置1. 修改后端服务地址2. 基础配置3. App图标配置4. App启动页面配置5. App模块配置二、发行2.1. 云打包2.2. 云打包配置2.3. 下载app三、安装apk3.1. 下载apk3.2. 安装apk3.3. 打开app3.4. 同意协议3.5. 前端页面效果一、配置 1. 修改后端服务地址 2. 基础配置…

    踩着七彩祥云来接你的不一定是意中人,也可能是阿里云

    你今天点外卖了吗&#xff1f;你今天剁手了吗&#xff1f; 你每次在饿了么和淘宝上的刷刷刷、点点点 都有阿里云服务器ECS在云端疯狂计算 ——阿里云ECS&#xff0c;支撑了阿里经济体全面上云—— ---- 天猫双11核心系统100%上云 阿里云征服史上最大流量洪峰 饿了么100%迁至阿…

    深度思考 Spring Cloud + Alibaba Sentinel 源码原理

    随着微服务的流行&#xff0c;服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。作者 | 向寒 / 孙玄来源 | 架构之美头图 | 下载于视觉中国关于 Sentinel 1、理论篇以下是经过多年分…

    WORDPRESS付费会员插件Paid Memberships Pro v2.12.5 – Plugin + All Addons

    WORDPRESS付费会员插件Paid Memberships Pro v2.12.5 – Plugin All Addons 简介&#xff1a; Paid Memberships Pro是一款功能强大的会员订阅和内容限制管理插件&#xff0c;适用于WordPress网站。它提供了丰富的特性和工具&#xff0c;帮助网站所有者轻松地创建和管理付费…

    云计算与星辰大海的结合

    云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 今年在疫情的影响下&#xff0c;各国的经济发展都遇到了一些困难&#xff0c;甚至除中国以外的主要经济体都会进入了负增长的…

    uniapp 打包安卓 Android 抖音app 后端篇~02

    文章目录1. 中间件配置2. 云短信配置1. 中间件配置 2. 云短信配置

    从开源自治到微服务云化,用这剂良药提升微服务幸福感

    前言 微服务发展至今&#xff0c;因其高内聚、低耦合等特性&#xff0c;以及诸多开源方案带来的开放性&#xff0c;已成为提升架构效率的最佳实践之一。当一项技术或一个框架成为事实标准之后&#xff0c;我们会把更多的注意力聚焦在运维效率和应用可用性的持续提升上。相信下…

    uniapp 打包安卓 Android 抖音app 前后端调试篇~03

    文章目录1. 未登录首页浏览短视频2. 发布视频-云短信登录3. 发布选择视频4. 上传短视频到云存储5. 测试发布视频6. 个人中心查看发布视频7. 首页查看刚发布视频8. 个人中心1. 未登录首页浏览短视频 在未登录的情况下&#xff0c;首页可以看短视频 2. 发布视频-云短信登录 点…

    俯瞰云原生,这便是供应层

    来源 | K8sMeetup社区作者 | Catherine Paganini&#xff0c;Jason Morgan头图 | 下载于视觉中国在都在说云原生&#xff0c;它的技术图谱你真的了解吗&#xff1f;中&#xff0c;我们对 CNCF 的云原生技术生态做了整体的介绍。从本篇开始&#xff0c;将详细介绍云原生全景图的…

    进击的Kubernetes调度系统(一):SchedulingFramework

    作者&#xff1a;王庆璨 张凯 前言 Kubernetes已经成为目前事实标准上的容器集群管理平台。它为容器化应用提供了自动化部署、运维、资源调度等全生命周期管理功能。经过3年多的快速发展&#xff0c;Kubernetes在稳定性、扩展性和规模化方面都有了长足进步。 尤其是Kubernete…

    HTTP系列学习(笔记三):HTTP的发展历程思维导图

    HTTP&#xff08;HyperText Transfer Protocol&#xff09;是万维网&#xff08;World Wide Web&#xff09;的基础协议。 0.9版本&#xff1a; 1.0版本&#xff1a; 1.1版本&#xff1a; 2.0版本&#xff1a; 2.0进化版本&#xff1a; 为了便于浏览记忆&#xff0c;整理了一份…

    为什么说Serverless是云的未来?

    作者 | 不瞋 阿里云高级技术专家 每隔几年&#xff0c;IT 界就会出现新突破性的进展。回望整个计算机技术发展史&#xff0c;我们会发现“抽象、解耦、集成”的主题贯穿其中。产业每一次的抽象、解耦、集成&#xff0c;都将创新推向新的高度&#xff0c;也催生出庞大的市场和…

    (企业级)HBuilder X 安装蓝叠安卓模拟器

    文章目录1. 下载蓝叠模拟器2. 设置 adb链接和root3. 设置竖屏4. 设置uni-app adb 环境变量5. 配置 HBuilderX adb5. 运行6.效果图7.常见模拟器1. 下载蓝叠模拟器 https://www.bluestacks.cn/ 2. 设置 adb链接和root 3. 设置竖屏 4. 设置uni-app adb 环境变量 在 HBuilderX…

    小困惑,关于 Serverless 函数计算的字体安装

    来源 | Serverless作者 | 孙飞宇头图 | 下载于视觉中国前言首先介绍下在本文出现的几个比较重要的概念&#xff1a;函数计算&#xff08;Function Compute&#xff09;&#xff1a;函数计算是一个事件驱动的服务&#xff0c;通过函数计算&#xff0c;用户无需管理服务器等运行情…

    一文带你了解MySQL中的各种锁机制!

    云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; MySQL中的锁机制,按粒度分为行级锁,页级锁,表级锁&#xff0c;其中按用法还分为共享锁和排他锁. 行级锁 行级锁是Mysql中锁…

    for循环中let,var 的经典面试题:for循环中 console.log(i)详解

    同学们在刚准备面试时肯定见过一道经典面试题&#xff1a; for(var i 0; i < 10; i) {setTimeOut(function(){console.log(i)}) } // 输出 10 10 10 10 10 10 10 10 10 10for(let i 0; i < 10; i) {setTimeOut(function(){console.log(i)}) } // 输出 0 1 2 3 4 5 6 7…

    后疫情时代,银行从数字化转型到智能化“迁徙”

    云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 全球数据智能趋势一览 笔者在搜索了众多机构发表的数据智能发展趋势报告&#xff0c;并做了筛选和甄别后&#xff0c;参考了公…

    普通二本学校软件工程专业本科毕业的女生,没有考研,选择直接就业现如今过得怎样呐?

    第一篇程序人生 在进入大学之前买的联想笔记本电脑被我之前放在窗户边&#xff0c;一个月之前去上班的时候忘记关窗户&#xff0c;下大雨给淋雨进水了&#xff0c;刚好开机密码的几个键盘失灵了&#xff0c;上周末在网上买了一个键盘&#xff0c;终于可以开机了&#xff0c;为…

    阿里云交通数据中台解决方案打造“数字化生产力”

    数字经济时代&#xff0c;计算、分析、处理等作为“关键生产要素”已成为行业和社会的共识。但是对于交通领域而言&#xff0c;以往端到端的方式进行平台搭建和应用开发已不能适应数字爆炸和产品快速迭代的要求。交通行业在计算分析方面面临着信息采集难、样式杂、变化快、价值…