Docker架构

Docker - 图1

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。

Docker安装

我本人电脑是macOS。用的就是最简单的安装

手动下载安装,请点击以下链接下载 StableEdge 版本的 Docker for Mac。
如同 macOS 其它软件一样,安装也非常简单,双击下载的 .dmg 文件,然后将鲸鱼图标拖拽到 Application 文件夹即可。
image.png
双击启动后,中间可能要你本机密码什么的。就给就完事儿了。
image.png
终端执行命令

  1. $ docker --version
  2. Docker version 19.03.13, build 4484c46d9d

image.png
这样就安装成功了。由于国内访问docker镜像的总仓库非常慢,因此需要修改下源。指向国内的一些源。
19.03.13 版本改设置镜像源的方式
image.png
image.png

  1. "registry-mirrors": [
  2. "http://hub-mirror.c.163.com",
  3. "https://docker.mirrors.ustc.edu.cn"
  4. ]

Apply & Restart后
执行命令

  1. $ docker info

image.png
也可以用阿里云镜像加速。用支付宝或者其他阿里系的账号登陆就行了。
https://cr.console.aliyun.com/
会分配一个地址,可以自行操作
image.png

Docker实战

Demo1: hello world

  1. $ docker image ls #查看本地镜像,第一次什么都没有
  2. $ docker image pull library/hello-world #抓取hello-world的镜像到本地
  3. $ docker image ls #再次查看,看到我们本地的镜像了

image.png
上面代码中,docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组,hello-world是 image 文件的名字。
由于 Docker 官方提供的 image 文件,都放在library组里面,所以它的是默认组,可以省略。因此,上面的命令可以写成下面这样。

  1. $ docker image pull hello-world

现在运行这个image

  1. $ docker container run hello-world

docker container run命令会从 image 文件,生成一个正在运行的容器实例。
注意,docker container run命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取。因此,前面的docker image pull命令并不是必需的步骤。
如果运行成功,你会在屏幕上读到下面的输出。
image.png
有些容器不会自动终止,因为提供的是服务。比如,安装运行 Ubuntu 的 image,就可以在命令行体验 Ubuntu 系统。

  1. $ docker container run -it ubuntu bash

对于那些不会自动终止的容器,必须使用 docker container kill 命令手动终止。

  1. $ docker container kill [containID]

如何查看 [ containID ]

image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。
执行命令

  1. # 列出本机正在运行的容器
  2. $ docker container ls
  3. # 列出本机所有容器,包括终止运行的容器
  4. $ docker container ls --all

image.png
终止运行的容器文件,依然会占据硬盘空间,可以使用 [ docker container rm ] 命令删除。

  1. $ docker container rm [containerID]

image.png
这样就只剩下一个容器了。

Demo2 nginx

  1. # 抓取官方源,默认lastest
  2. $ docker pull nginx
  3. # 查看抓取成功
  4. $ docker image ls
  5. # 运行容器
  6. $ docker run --name nginx-test -p 8080:80 -d nginx
  7. # 参数说明:
  8. # --name nginx-test:容器名称。
  9. # -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
  10. # -d nginx: 设置容器在在后台一直运行。
  11. # 查看正在运行的容器
  12. $ docker ps

访问 http://127.0.0.1:8080/
image.png

Docker的sonar配置新增P3C规则

1、把文件下载下来到宿主机
image.pngimage.png
2、重启sonar

sudo docker stop 0a2ff4469443 sudo docker start 0a2ff4469443

3、如何查看镜像里面的内容

sudo docker exec -it 镜像ID /bin/bash

4、配置sonar
https://blog.csdn.net/h825503721/article/details/83786758
5、如何用docker启动sonar
数据库地址
postgres
主机:192.168.15.191
端口:5432
用户名: sonar 密码: *
启动和停止sonar及数据库
ip: 192.168.15.191

查看命令
sudo docker ps -a | grep -E “0a2ff4469443|d6ea77f91a60”
Docker - 图16

sonarqube 的 id为 0a2ff4469443
数据库postgres的id 为d6ea77f91a60

启动顺序:
1、先启动 postgres
docker start 0a2ff4469443
2、后启动 sonarqube
docker start d6ea77f91a60
停止顺序:
先停止 sonarqube
docker stop d6ea77f91a60
后停止 postgres
docker stop 0a2ff4469443

docker 搭建sonarqube 命令
docker run —name sonarqube -d \
-p 9002:9000 \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=”sonar” \
-e SONARQUBE_JDBC_URL=”jdbc:postgresql://sonar_postgres:5432/sonar” \
-v /data/sonarqube/conf:/opt/sonarqube/conf \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/logs:/opt/sonarqube/logs \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions \
sonarqube:7.9.3-community

sonar通过sonarqube-community-branch-plugin-1.3.2.jar来实现一个project多个分支共同展示功能
sonarqube容器的插件依赖放置于/opt/sonarqube/extensions/plugins/ 路径下

sudo docker inspect 0a2ff4469443
Docker - 图17

sonarqube容器/opt/sonarqube/extensions 在本地host挂载路径为/data/sonarqube/extensions
即将sonarqube-community-branch-plugin插件包安装放置于/data/sonarqube/extensions/plugins/下重启容器即可(目前已放置)
数据库地址
postgres
主机:192.168.15.191
端口:5432
用户名: sonar 密码: sonar

启动和停止sonar及数据库

ip: 192.168.15.191

查看命令
sudo docker ps -a | grep -E “0a2ff4469443|d6ea77f91a60”
Docker - 图18

sonarqube 的 id为 0a2ff4469443
数据库postgres的id 为d6ea77f91a60

启动顺序:
1、先启动 postgres
docker start 0a2ff4469443
2、后启动 sonarqube
docker start d6ea77f91a60
停止顺序:
先停止 sonarqube
docker stop d6ea77f91a60
后停止 postgres
docker stop 0a2ff4469443

docker 搭建sonarqube 命令
docker run —name sonarqube -d \
-p 9002:9000 \
-e SONARQUBE_JDBC_USERNAME=sonar \
-e SONARQUBE_JDBC_PASSWORD=”sonar” \
-e SONARQUBE_JDBC_URL=”jdbc:postgresql://sonar_postgres:5432/sonar” \
-v /data/sonarqube/conf:/opt/sonarqube/conf \
-v /data/sonarqube/data:/opt/sonarqube/data \
-v /data/sonarqube/logs:/opt/sonarqube/logs \
-v /data/sonarqube/extensions:/opt/sonarqube/extensions \
sonarqube:7.9.3-community

sonar通过sonarqube-community-branch-plugin-1.3.2.jar来实现一个project多个分支共同展示功能
sonarqube容器的插件依赖放置于/opt/sonarqube/extensions/plugins/ 路径下

sudo docker inspect 0a2ff4469443

image.png
sonarqube容器/opt/sonarqube/extensions 在本地host挂载路径为/data/sonarqube/extensions
即将sonarqube-community-branch-plugin插件包安装放置于/data/sonarqube/extensions/plugins/下重启容器即可(目前已放置)
image.png

docker 常见命令
https://www.runoob.com/docker/docker-command-manual.html
参考
http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html