搭建第一个Docker
Docker 是一个开源的容器引擎,用于创建、管理和编排容器,可以轻松为任何应用创建一个轻量级、可移植、自给自足的容器。本步骤将在linux上部署一个Docker服务,并配置DockerHub的镜像加速器。
安装软件包
在linux命令行输入如下命令,这些命令用来安装一些软件包。
yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件仓库
添加Docker CE的软件源信息,如下命令,从指定url添加软件仓库。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
安装Docker CE,dockerCE为docker的社区版本。
yum makecache fast &&
yum -y install docker-ce
启动Docker服务
启动Docker服务。
systemctl start docker
配置镜像加速器
配置DockerHub镜像加速器。
可参考:Docker 镜像加速 | 菜鸟教程
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
重启Docker服务
重启Docker服务。
systemctl restart docker
准备应用代码和Dockerfile
本步骤操作将在工作空间下创建一个基于Golang的HelloWorld代码文
和一个用来构建运行Hello代码所需环境镜像的Dockerfile文件。
Dcokerfile用来存放指令,运行可构建镜像。
1. 创建工作空间。
mkdir -p /tmp/demo && cd /tmp/demo
2. 在工作空间下创建HelloWorld代码文件,用来在容器环境中监听HTTP服务,输出HelloWorld字符串。
cat > /tmp/demo/main.go << EOF
package mainimport ("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
3. 在工作空间下创建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
本地构建镜像并运行镜像
镜像不仅可以从仓库获取还可以本地构建
1. 使用docker build命令构建镜像。
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}')
命令运行结果如下所示:
搭建第一个Docker相关推荐
- windows docker 设置镜像源_Windows10下搭建第一个Docker应用(Demo)
1. 打开Windows虚拟化,需要Windows10Pro以上版本,部分机器还需设置BIOS打开 2. 安装Windows10 Hyper-v 3. 安装Docker Desktop,很简单,两步搞 ...
- 搭建Harbor企业级docker仓库
from: https://www.cnblogs.com/pangguoping/p/7650014.html 搭建Harbor企业级docker仓库 一.Harbor简介 1.Harbor介绍 H ...
- 一个springboot能支持多少并发_吃透这篇,你也能搭建出一个高并发和高性能的系统...
" 什么是高并发?高并发是互联网分布式系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数,简单点说,就是 QPS(Queries Per Second). 那么我们在谈论高 ...
- php ssc 源码_吃透这篇,你也能搭建出一个高并发和高性能的系统
什么是高并发?高并发是互联网分布式系统架构的性能指标之一,它通常是指单位时间内系统能够同时处理的请求数,简单点说,就是 QPS(Queries Per Second). 那么我们在谈论高并发的时候,究 ...
- 如何push一个docker镜像到DockerHub上
如何push一个docker镜像到DockerHub上 2018.01.03 11:31:39字数 139阅读 202 有时候想要保存自己的docker镜像,又不想自己搭建docker registr ...
- 动手实现一个docker引擎-1-从内核到docker的三驾马车
学习自<自己动手写Docker> 作者:陈显鹭(花名:遥鹭)-阿里云高级研发工程师等 京东购买链接:https://item.jd.com/10033552355433.html 其他资料 ...
- 商业级4G代理搭建指南【搭建篇之Docker版】
时间过得真快,距离这个系列的上一篇文章<商业级4G代理搭建指南[准备篇]>发布的时间已经过了两个星期了,上个星期由于各种琐事缠身,周二开始就没空写文章了,所以就咕咕咕了. 那么在准备篇中, ...
- 为了实现CI/CD,先来定制一个Docker镜像【实战精华篇】
背景 计划把手头的项目逐步改造为基于Docker容器的方式发布,同时,项目中已经采用了云厂商提供的CI/CD自动化发布流水线.因此,为配合CI/CD操作,需要先针对项目构建一些发布的脚本,通过脚本来自 ...
- 第一个Docker应用栈 HelloWorld
Helloworld Docker应用栈 第一个Docker应用栈 HelloWorld HelloWorld应用栈的结构 搭建过程 1.获取应用栈各节点所需镜像 2.容器间互联及容器启动顺序 3.启 ...
最新文章
- 小马智行获2.67亿美元新融资,估值超53亿美元
- NLP命名实体识别(NER)代码实践
- .NET程序性能的基本要领
- LeetCode Evaluate Division(并查集)
- 与客户有关的业务数据表名,及删除客户主数据方法
- AutoMapper在MVC中的运用小结
- 按照RFC3984协议实现H264视频流媒体 RTSP H264
- Hive精华问答 | Hive和传统数据库有什么不同?
- MVC 特性使用总结
- 用 Python 描述 Cookie 和 Session
- 小程序解决方案 Westore - 组件、纯组件、插件开发
- 论文笔记-深度估计(4) Semi-Supervised Deep Learning for Monocular Depth Map Prediction
- Wifi Signal Strength for Mac(实用的WiFi信号监测工具)
- 2009年考研数学一解析pdf
- 【叮咚买菜】叮咚抢菜使用教程
- linux 设备树 otg,linux下充电IC OTG设备供电控制
- 记录:页面锚定 点击a标签进行锚定到指定的ID
- 单片机c语言交通灯源程序,51单片机用C语言实现交通灯_红绿灯_源程序
- 2019链塔大会暨亚洲区块链技术与应用论坛盛大召开
- 工程博士与在职博士的区别
热门文章
- 诺基亚困境,力掐苹果?
- android 课堂讨论内容,Android端课堂交互应用研究与实现
- linux 内核udp编程,Linux下网络编程实现UDP,还有大量实例
- ghost mysql 乱码,ghost安装之mysql
- mysql s.`name`_MySQL的基础操作命令
- HALCON 21.11:深度学习笔记---有监督训练(6)
- HALCON 20.11:学习笔记---一维测量(Measuring)
- Python+OpenCV:图像二进制鲁棒独立基本特征(BRIEF, Binary Robust Independent Elementary Features)
- 纺织名词术语(针织品部分)---疵点
- 多分辨率下的彩色图像分割方法