搭建第一个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 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

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}')

命令运行结果如下所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值