文章目录
- 安装docker
- 建立GO工程
- 制作docker镜像
- 查看docker镜像
- 开启docker
- 前台方式
- 后台方式
- 关闭docker
安装docker
安装依赖,输入
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
如果报错:
Problem: package docker-ce-3:19.03.4-3.el7.x86_64 requires containerd.io >= 1.2.2-3
那就先装新版的 containerd.io
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
再装剩下两个
sudo yum install docker-ce docker-ce-cli
sudo systemctl start docker
验证是否安装成功
docker --version
出现
即安装成功
设置开机自启
sudo systemctl enable docker
或自己手动启动
sudo service docker start
建立GO工程
新建一个hellodocker文件夹,在里面新建一个go工程,我取名为Web.go
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "欢迎使用Go语言")
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("服务端口:8080") //控制台输出信息
err := http.ListenAndServe(":8080", nil) //设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
执行:
打开浏览器输入localhost:8080
若:
则说明程序执行成功。
制作docker镜像
在工程目录hellodocker下,新建dockerfile文件
FROM golang:latest
MAINTAINER Razil "511728892@qq.com"
WORKDIR $GOPATH/hellodocker
ADD . $GOPATH/hellodocker
RUN go build .
EXPOSE 8080
ENTRYPOINT ["./hellodocker"]
FROM : 母镜像
MAINTAINER:维护者信息
WORKDIR : 工作目录
ADD:将文件复制到镜像中
RUN : 执行操作(就跟在终端执行语句一样)
EXPOSE : 暴露端口
ENTRYPOINT : 程序入口
然后打开终端
输入:
docker build -t hellodocker .
别忘了后面有一个点 .
docker build :构建镜像
hellodocker: 名字为hellodocker
. (点号):dockerfile目录为当前目录
执行:
出现Successfully build …
说明构成成功。
查看docker镜像
在终端中输入:
docker images
里面显示了本机所有docker的镜像与其基本信息。
开启docker
前台方式
在终端输入:
docker run -p 8080:8080 hellodocker
docker run: 运行docker镜像
-p 8080:8080 : 将宿主机(也就是本机)的8080端口映射到容器的8080端口,此 处需要先确认本机的8080端口并未被占用,否则将无法开启
hellodocker : 镜像名(也支持id)
后台方式
当在前台开启时候,终端无法进行其他操作,docker支持让容器在后台执行。
在终端输入:
docker run -p 8080:8080 -d hellodocker
执行后出现:
即说明启动成功
我们可以查看本机当前后台正在开启的容器有哪些
在终端输入:
docker ps
可以看到正在运行的hellodocker容器
关闭docker
停止和退出docker有两种方法,一个是kill另一个是stop
两种的区别是:
stop : 系统先发送停止信号,有充分的时间(默认10s)完成清理后再发送kill信号让容器退出
kill : 系统直接发送退出信号,让容器强制退出
具体操作:
我们在上一步 docker ps 中看到后台容器的运行情况,里面每个容器都有其独立的container id。
复制需要关闭的容器id
当前hellodocker的id是:
也就是e0b66d33cb81
在终端输入:
docker stop e0b66d33cb81
或
docker kill e0b66d33cb81
即可关闭容器