一、wsl2安装

执行 微软官方教程 前我勾选了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安装

安装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容器:

docker rm CONTAINER_ID/NAMES
docker rm -f :强制删除运行中的容器

三、go程序docker部署

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。