执行 微软官方教程 前我勾选了Hyper-V、适用于Linux的Windows子系统、虚拟机平台,与官方教程Step 1、Step 3作用一样。
微软官方教程 :
Step 1 - Enable the Windows Subsystem for Linux:
管理员运行PowerShell并执行: dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Step 2 - Check requirements for running WSL 2:
检查当前操作系统是否可以运行wsl2,需要win10 x64 Version 1903以上版本、ARM64 Version 2004 以上版本或win11。若版本不满足,需要升级。Windows + R, 输入 winver可以查看当前版本。
Step 3 - Enable Virtual Machine feature:
管理员运行PowerShell并执行: dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart。完成后重启电脑。
Step 4 - Download the Linux kernel update package:
Step 5 - Set WSL 2 as your default version:
管理员运行PowerShell并执行:wsl --set-default-version 2
Step 6 - Install your Linux distribution of choice:
打开微软商店 Microsoft Store,查询ubuntu版本下载安装。ubuntu选择的18,开始选择的最新版本ubuntu22,docker安装后启动失败,重新安装ubuntu 18后,docker可以正常启动。
安装完成后可以在开始菜单看到安装的Linux系统
安装docker:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
启动 docker:
sudo service docker start
查看docker运行状态:
service docker status
查看docker版本:
docker version
下载nginx最新镜像,本地镜像目录/var/lib/docker/containers
docker pull nginx:latest
查看已安装docker镜像:
docker images
删除docker镜像:
docker rmi 镜像id/镜像名:版本号
运行nginx镜像:
docker run --name myNginx -p 81:80 -d nginx
docker run --name myNginx --restart=always -p 81:80 -d nginx
运行nginx镜像,映射端口80到81,container名称myNginx,运行成功后浏览器可直接访问localhost:81
查看docker container:
docker ps
docker ps -a
docker container ls -a
停止运行中的docker镜像即docker container:
docker stop CONTAINER_ID
根据容器id、名称重启docker容器:
docker restart CONTAINER_ID/NAMES
根据容器id、名称查看运行中容器的目录结构:
docker exec -it CONTAINER_ID/NAMES /bin/bash
根据容器id、名称删除docker容器:
三、go程序docker部署docker rm CONTAINER_ID/NAMES
docker rm -f :强制删除运行中的容器
1、go环境安装
1.1、下载 go Linux安装包 go1.19.2.linux-amd64.tar.gz
1.2、解压安装包
tar -zxvf go1.19.2.linux-amd64.tar.gz
1.3、配置环境变量,我的安装包解压到了windows d盘,可以通过wsl ubuntu 挂载目录看到,vi /etc/profile 怎加如下配置:
export GOROOT=/mnt/d/go
export GOPATH=/mnt/d/gopath
export GOPROXY=https://goproxy.cn
export PATH=$GOROOT/bin:$PATH
1.4、查看go 版本
go version
2、go程序编写
package main
import "net/http"
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello docker"))
})
http.ListenAndServe(":8080", nil)
}
2.1、验证go程序
go run main.go
浏览器输入localhost:8080,显示 hello docker。
3、Dockerfile配置
# 依赖go1.19镜像
FROM golang:1.19
# docker容器上新建opt目录
WORKDIR /opt
# 把dockerfile文件所在目录添加到 docker /opt下
ADD . /opt
# 在容器内执行go 编译
RUN go build -o main ./main.go
# http服务监听端口,暴露给docker
EXPOSE 8080
# 运行go 程序的指令
CMD ["/opt/main"]
4、打包docker镜像
docker build -t gotest .
打包完毕后,执行 docker images 会发现刚刚打包的镜像gotest
5、运行镜像gotest
docker run --name mygo -p 8080:8080 -d gotest
浏览器输入localhost:8080,显示 hello docker。