一 安装Docker
1.1 卸载Docker:
#查看包含docker的软件包
yum list installed | grep docker
#删除软件包
yum -y remove (软件包)
#删除docker相关存储
rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker
1.2配置镜像源(阿里云镜像源)
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.3安装docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
1.4镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://9wztwpke.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1.5测试
#查看docker版本
docker version
#测试hello-world
docker run hello-world
二:获取镜像
2.1拉取golang镜像,
#查看golang
docker search golang
#拉取镜像
docker pull golang:1.20
#查看已经拉取过的镜像
docker images
2.2拉取mysql,redis镜像
docker pull mysql:8.0
docker pull redis
三mysql与navica连接测试
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql01 mysql:8.0
指令详解:
docker run #启动容器
-d #后台运行容器
-p 3310:3306 #-p映射端口号,将3306映射为3310
-v #数据卷挂载使数据持久化
-e #修改环境变量
--name #给你这个容器起个名字
mysql:8.0 #指定所用镜像
外部:navicat 连接数据库:
主机:虚拟机ip地址(ifconfig查看)
端口:映射的端口号:3310
用户名:root
密码:-e修改环境变量设置的密码
四.Dockerfile打包镜像
4.1Dockerfile:
在项目下起文件名Dockerfile,编写Dockerfile:
FROM golang:1.20 AS builder
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
GOPROXY=https://goproxy.cn,direct \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
# 移动到工作目录:/build
WORKDIR /build
# 将代码复制到容器中
COPY . .
# 下载依赖信息
RUN go mod download
# 将我们的代码编译成二进制可执行文件 library
RUN go build -o library-test-app .
###################
# 接下来创建一个小镜像
###################
FROM scratch
# 从builder镜像中把/dist/app 拷贝到当前目录
COPY --from=builder /build/library-test-app /
# 需要运行的命令
ENTRYPOINT ["/library-test-app"]
4.2构建镜像
将项目连带着dockerfile传送到虚拟机上
进入虚拟机内的项目目录中:
docker build . -t library
-t 构建项目名字
五.部署项目
目前项目需要用到三个容器:自身项目,mysql,redis。利用docker网络将三个容器进行通信
#创建一个自己的网络mynet自己网络名字
docker network create mynet
#启动三个容器并加入自己的网络
docker run -d --name redis --network mynet --network-alias redisnet -p 6379:6379 redis:latest
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root --network mynet --network-alias mysqlnet -p 3306:3306 mysql:8.0
docker run -p 8080:8080 --name library01 --network mynet library:latest