Docker入门学习

198 阅读3分钟

Docker镜像创建

  1. 创建dockerflie文件

# 最低版本go的依赖
FROM golang:1.17.7 

# 配置模块代理
ENV GOPROXY=https://goproxy.cn,direct

# 复制文件目录下的所有代码 
ADD . /whygo

#默认进入文件目录
WORKDIR /whygo

# 复制代码
ADD /whygo/go.mod .
ADD /whygo/go.sum .

# 下载依赖
RUN go mod download

# 运行命令,安装依赖
# 例如 RUN npm install && cd /app && mkdir logs
# ADD ./whygo .
ENV CGO_ENABLED=0
ENV GOOS=linux
ENV GOARCH=amd64

# RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。
# 构建exe文件,名字为demo
RUN go build -tags netgo  -o  demo

# CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
# 默认运行 demo
ENTRYPOINT [ "./demo" ]
  1. 构建镜像 编译命令:docker build -t test:v1 .
    -t 设置镜像名字和版本号
  2. 运行容器
    运行 docker run -p 8090:8080 --name test-hello test:v1
    -p 映射容器内端口到宿主机,8090端口映射为实机8080端口
    --name 设置运行容器的名字为:test-hello
    -d 后台运行

Docker中Mysql创建

首先运行容器:docker run -dit --name db -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
端口映射3306为主机3306设置密码为root,容器命名为:db。名字后面的命令为设置编码,防止中文乱码。

主机导入文件到Docker的命令 docker cp f:\go_study\whygo\douyin.sql db:/douyin.sql
从目录f:\go_study\whygo\douyin.sql导入到db容器中,在容器db中目录为:/douyin.sql\

  1. 首先查看容器id:docker ps

  2. 进入容器命令:docker exec -it *容器id** /bin/bash

  3. 查看容器中文件的命令:ls. 看看文件拷贝成功没有.

  4. 进入Mysql:mysql -uroot -p然后输入密码之前设置的密码:root

  5. 运行sql文件:source douyin.sql

Mysql常用相关命令

use abc; 设置数据库编码
show databases; 查看所有的数据库
create database test; 创建一个叫test的数据库
drop database test; 删除一个叫test的数据库
use test 选中库 ,在建表之前必须要选择数据库
show tables 在选中的数据库之中查看所有的表
create table 表名 (字段1 类型, 字段2 类型);
desc 表名; 查看所在的表的字段
drop table 表名; 删除表
show create databases 库名; 查看创建库的详细信息\

Compose的创建

version: '3.9' #compose版本,一般是3.x

services:
  server: 
    image: douyin:v1
    build: .
    volumes:  #讲当前目录挂载到/whygo
      - ./:/whygo
    network_mode: service:mysql #依赖容器mysql,必须先运行前置依赖
    depends_on: #依赖容器,必须先运行前置依赖容器
      - mysql
    stdin_open: true #不知道是啥
    tty: true #不知道是啥
    environment:
      - TZ=Asia/Shanghai #设置容器时间为北京时间

  mysql:
    image: mysql:5.6 #使用的镜像为mysql:5.6版本
    ports: #将容器端口暴露
      - 3306:3306
      - 8080:8080
    volumes:
      - ./docker_data/mysql:/db #将当前目录/docker_data挂载到容器db

Docker常用相关命令

docker ps 查看当前运行中的容器
docker images 查看镜像列表
docker rm container-id 删除指定 id 的容器
docker stop/start container-id 停止/启动指定 id 的容器
docker rmi image-id 删除指定 id 的镜像
docker volume ls 查看 volume 列表
docker network ls 查看网络列表

Docker打开闪退,运行如下命令,重启。 netsh winsock reset