文档地址:https://yeasy.gitbook.io/docker_practice/

Docker hub

Docker Install

Docker 部署 Springboot

# 列出所有镜像

1
docker images

# 查看运行的容器

1
docker ps

列出所有容器 ID

1
docker ps -aq

# 查看所有的容器包括停止的

1
docker ps -a

# 删除

删除容器

1
docker rm <NAMES>/<CONTAINER ID>

删除镜像

1
docker image rm <IMAGES>

# 停止、启动、杀死、重启一个容器

1
2
3
4
docker stop Name或者ID  
docker start Name或者ID
docker kill Name或者ID
docker restart name或者ID

# docker 启动失败如何查看容器日志

1
2
3
# 我们可以通过如下命令来获取容器的日志地址
docker inspect --format '{{.LogPath}}' <NAMES>
# 然后通过cat命令查看上述命令找到的日志地址

更简单的方式

1
docker logs <NAMES>

# M1 拉取 Mysql 数据库

1
2
3
4
docker pull --platform linux/x86_64 mysql:5.7

# 启动mysql
docker run --name mymysql -e MYSQL_ROOT_PASSWORD=root -v /etc/localtime:/etc/localtime -d -p 3306:3306 mysql:5.7

# Docker 安装 Nginx 并且部署 Vue 项目

# 拉取 Nginx

1
docker pull nginx

# 创建挂载目录

找个目录创建一下目录(在 /Users/jinmao/Documents/Docker/ 下创建 /nginx

1
mkdir

# 运行并且挂载 nginx

1
docker run -d -p 80:80 --name nginx_BEBA  -v /Users/jinmao/Documents/Docker/nginx/dist:/usr/share/nginx/html --restart=always nginx

#vue 的目录上传到挂载的目录

vue 项目打包

1
npm run build

# 重启 Docker 容器

1
docker restart <NAMES>

此时就可以了, nginx 开放端口为 80 , 直接 ip 访问即可

# 为什么要挂载在到 docker/usr/share/nginx/html

nginx 的默认配置就知道
进入 docker 的容器里面:
通过命令 docker ps 查看运行容器信息;
在通过命令 docker exec -it 容器id /bin/bash 进入容器目录

1
docker exec -it <NAMES> /bin/bash

进入 cd /etc/nginx/conf.d , 查看 default.conf 文件

但是你会发现 etc/nginx 下有个 nginx.conf 配置文件我们查看配置发现这里有条语句是引用了上面 default.conf 的配置,由此可见我们以后需要配置其他项目路径就直接配置 default.conf 就行了。

但是这个有个缺点每次修改都需要进入容器的内部求修改。

# 优化 nginx 的配置文件(为了以后多项目部署方便修改 Nginx

我们可以通过把 etc/nginx 复制到宿主机的目录下这样我们就可以修改宿主机的配置文件在重新启动一下容器就可以实现最新的配置

  1. 使用命令复制容器的文件到宿主机: docker cp <NAMES>:/etc/nginx /Users/jinmao/Documents/Docker/nginx/

    /etc/nginx : 为需要复制的文件

    /Users/jinmao/Documents/Docker/nginx/dist : 把他保存到那个目录下

  2. 进入 /nginx 修改宿主机 (本地的) 的 default.conf 配置文件命令

  3. 通过命令删除就的 nginx 容器: docker rm 容器id 删除容器

  4. 重新启动容器

    1
    2
    3
    4
    5
    6
    7
    8
    docker run --name <name> -p 80:80 -v /Users/jinmao/Documents/Docker/nginx/dist:/Users/jinmao/Documents/Study/doctor/Topic1/frontPro/dist -v /Users/jinmao/Documents/Docker/nginx/nginx:/etc/nginx -d nginx

    # 解释:
    # –name:后面的是容器名称
    # -p:冒号前面是宿主机的对外端口,冒号后面的是容器的端口
    # -v:冒号前面的是宿主机的文件目录,冒号后面是容器的内部文件目录
    # -d:表示后端运行
    # nginx:最后面的nginx是镜像的名称

现在已经把宿主机的 vue 项目 dist 挂载到 nginx 容器中,这样监听的请求就会被 nginx 代理到对应的目录中访问资源,还有宿主机的 /Users/jinmao/Documents/Docker/nginx/nginx 也被挂载到了容器 etc/nginx 中,这样只要修改宿主机的 nginx 配置,只要重启容器最新配置就会生效。

参考链接

# 制作 Dockerfile ( Springboot )

Maven 打包完 jar 包,忽略。。

# 编辑 DockerFile 文件

jar 包在同一级

1
vim Dockerfile

example:

1
2
3
4
5
6
7
8
9
# Docker image for springboot file run
# VERSION 1.0.0
# Author: jinmao
FROM java:8
VOLUME /tmp
EXPOSE 9999
ADD thesis-project.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

打包命令

1
docker build -t <lower_name> .

运行

1
docker run -p 9999:9999 --name BABE_Thesis -d babe_end

# Docker 安装 Jenkins

原理图:

  1. 拉取镜像 (稳定版本)
1
docker pull jenkins/jenkins:lts
  1. 创建挂载目录

创建目录

1
/Users/jinmao/Documents/Docker/jenkins_mount
  1. 运行容器
1
2
3
4
5
6
7
# -d 后台运行镜像
# -p 10240:8080 将镜像的8080端口映射到服务器的10240端口。
# -p 10241:50000 将镜像的50000端口映射到服务器的10241端口
# -v /Users/jinmao/Documents/Docker/jenkins_mount:/var/jenkins_home /var/jenkins_home目录为容器jenkins工作目录,我们将硬盘上的一个目录挂载到这个位置,方便后续更新镜像后继续使用原来的工作目录。这里我们设置的就是上面我们创建的 /Users/jinmao/Documents/Docker/jenkins_mount 目录
# -v /etc/localtime:/etc/localtime让容器使用和服务器同样的时间设置。
# --name myJenkins 给容器起一个别名
docker run -d -p 10240:8080 -p 10241:50000 -v /Users/jinmao/Documents/Docker/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myJenkins jenkins/jenkins:lts

链接别的容器 ( --link ,前面为容器名,后面为别名)

1
run -d -p 10242:8080 -p 10243:50000 -v /Users/jinmao/Documents/Docker/jenkins_m/jenkins_10242:/var/jenkins_home -v /etc/localtime:/etc/localtime --link mysql57:mysql  --name myJenkins10242  jenkins/jenkins:lts
  1. 查看 jenkins 是否启动成功
1
docker ps
  1. 查看 docker 容器日志。
1
2
docker logs <name> 
# docker logs myJenkins
  1. 进入挂载目录
  1. 访问 Jenkins
1
localhost:10240

根据提示输入密码

  1. 安装 plugin

安装完成创建一下账户即可使用 (账户截图未展示)

# Jenkins 关闭跨域

低版本可以直接在图形化界面中关闭,高版本只能进入 Docker 容器中更改

进入容器

1
2
3
4
5
6
7
8
9
10
11
12
13
# docker exec -u root -it myJenkins bash
docker exec -u root -it <name> bash

# apt update
apt-get update

# install vim
apt-get install vim

# change configuration
vim /usr/local/bin/jenkins.sh

-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true

需要重启

1
2
# docker restart myJenkins
docker restart <name>

关闭成功

Edited on Views times