# 一、本地docker环境搭建
mac下安装docker: brew install docker
https://hub.docker.com 拉取镜像速度比较慢,我们推荐使用国内的镜像源访问速度较快 https://hub.daocloud.io
# 1.1 设置国内镜像源

{
"registry-mirrors": ["https://register.docker-cn.com/"]
}
进入该网站https://hub.daocloud.io获取镜像的下载地址
# 1.2 docker命令基础
docker images查看镜像docker ps查看启动的容器 (-a查看全部)docker rmi 镜像ID删除镜像docker rm 容器ID删除容器docker exec -it 1a8eca716169(容器ID:docker ps获取) sh进入容器内部docker inspect bf70019da487(容器ID)查看容器内的信息
删除none的镜像,要先删除镜像中的容器。要删除镜像中的容器,必须先停止容器。
$ docker rmi $(docker images | grep "none" | awk '{print $3}')
$ docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') //停止容器
$ docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }') //删除容器
$ docker rmi $(docker images | grep "none" | awk '{print $3}') //删除镜像
# 1.3 环境准备
这里拉取nginx、node、redis、mysql镜像
# 1、安装node镜像
进入https://hub.daocloud.io 搜索node,切换到版本获取下载地址
docker pull daocloud.io/library/node:12.18docker tag 28faf336034d node重命名镜像
重命名镜像后IMAGE ID都是一样的

也可以导出镜像到本地备份 docker save -o node.image(导出镜像要起的名称) 28faf336034d(要导出的镜像的ID)

我们先删除之前的镜像 docker rmi 28faf336034d -f 强制删除

再次导入本地镜像
docker load -i node.image(导入的镜像名称)

然后再次重命名镜像即可
docker tag 28faf336034d node:v1.0(版本v1.0)

# 2、安装MySQL镜像
进入https://hub.daocloud.io 搜索mysql,切换到版本获取下载地址

docker pull daocloud.io/library/mysql:8.0.20

启动MySQL镜像
docker run -d(后台运行) -p 3307:3306(本机端口:MySQL运行端口) --name mysql(容器名称) -e MYSQL_ROOT_PASSWORD=123456(设置mysql密码) be0dbf01a0f3(mysql镜像ID)
查看当前正在运行的镜像
docker ps -a(正在运行和停止的镜像-a都可见)

删除容器
删除之前需要stop:docker stop bac2692e2b9a(容器ID)
docker rm bac2692e2b9a(容器ID:docker ps获取)
进入容器内部
docker exec -it bac2692e2b9a(容器ID) sh(指定进入方式)

我们使用Navicat新建一个连接测试一下

说明我们使用docker安装MySQL的方式是没问题的
查看MySQL容器日志
docker logs -f(查看最后几条) bac2692e2b9a(容器ID)

重启容器
如果修改了容器配置,我们需要重新启动容器
docker restart bac2692e2b9a(容器ID)
设置MySQL权限
mysql8.0后,需要设置,否则node连接不上
docker exec -it bac2692e2b9a sh
mysql -uroot -p
# 远程连接权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
# 更新加密规则
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
# 更新用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
# 刷新权限
FLUSH PRIVILEGES;

# 3、安装redis镜像

docker pull daocloud.io/library/redis:6.0.3-alpine3.11
启动Redis镜像
docker run -d -p 6380:6379 --name redis 29c713657d31(镜像ID) --requirepass 123456(redis登录密码)

或进入redis镜像后在输入密码

交互式进入redis容器
docker exec -it 9751cbc96861(容器ID) sh

# 4、安装Nginx镜像

docker pull daocloud.io/library/nginx:1.13.0-alpine

启动Nginx镜像
服务器上启动
docker run --name nginx(起一个容器名称) -d(后台运行) -p 80:80(本机:容器) -v(映射Nginx容器的运行目录本机) /root/nginx/log:/var/log/nginx(本机目录:容器目录) -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf(本机目录:容器内nginx配置所在目录) -v /root/nginx/conf.d:/etc/nginx/conf.d -v /root/nginx/html:/usr/share/nginx/html f00ab1b3ac6d(nginx镜像ID)
本地电脑启动
docker run --name nginx -d -p 8666:80 -v /Users/poetry/Downloads/docker/nginx/log:/var/log/nginx -v /Users/poetry/Downloads/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /Users/poetry/Downloads/docker/nginx/conf.d:/etc/nginx/conf.d -v /Users/poetry/Downloads/docker/nginx/html:/usr/share/nginx/html f00ab1b3ac6d
把docker容器中的Nginx服务配置映射本地方便管理

访问docker暴露的8666端口即可

当我们修改了html中的文件,无需重启容器即可看到效果

# 1.4 部署egg代码
构建egg镜像,进入到egg目录
# 构建egg镜像,版本v1.0
docker build -t egg:v1.0 .
Dockerfile文件如下
# 使用node镜像
FROM daocloud.io/library/node:12.18
# 在容器中新建目录文件夹 egg
RUN mkdir -p /egg
# 将 /egg 设置为默认工作目录
WORKDIR /egg
# 将 package.json 复制默认工作目录
COPY package.json /egg/package.json
# 安装依赖
RUN yarn config set register https://registry.npm.taobao.org
# 只安装dependencies的包
RUN yarn --production
# 再copy代码至容器
COPY ./ /egg
# 7001端口
EXPOSE 7001
# 等容器启动之后执行脚本
CMD yarn prod
# 启动egg镜像
docker run -d(后台启动) -p 7001:7001(本机:容器) --name server(容器名称) af9360186a24(镜像ID)

# 二、docker-compose部署
# 2.1 编写docker-compose.yml文件
# 2.2 启动服务
修改egg服务代码

常用命令
docker-compose -h查看命令
docker-compose up启动服务,控制台可见日志docker-compose up -d后台启动服务docker-compose build --no-cache重新构建镜像不使用缓存(最后docker-compose up -d启动)- 停止服务
docker-compose down - 下载镜像过程
docker-compose pull - 重启服务
docker-compose restart
后台启动服务 docker-compose up -d

查看应用状态 docker-compose ps

停止服务 docker-compose down
# 三、Nginx容器内部署前端
把前端打包的文件放到Nginx目录下访问



# 四、docker部署到云服务器
# 4.1 安装docker环境
# 安装工具包
yum install yum-utils device-mapper-persistent-data lvm2 -y

# 设置阿里镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装docker
yum install docker-ce docker-ce-cli containerd.io -y
# 启动docker
systemctl start docker
# 设为开机启动
systemctl enable docker
# 设置docker镜像源
vi /etc/docker/daemon.json
后续拉取镜像直接从 https://hub.docker.com 网站拉取速度更快
重启docker
# 安装mysql镜像测试

运行mysql镜像


创建软链