你必须知道的Docker镜像仓库的搭建

依赖地址:
docker-compose
https://github.com/docker/compose/releases

harbor
https://github.com/goharbor/harbor/releases

Harbor仓库搭建及简单使用
https://blog.csdn.net/qq_40378034/article/details/90752212

一篇带你了解私有仓库 Harbor 的搭建
https://www.cnblogs.com/tianzhendengni/p/14071523.html

VirtualBox 使用 NAT网络、仅主机(Host-only)网络 实现双网卡上网并与宿主机连接。
https://blog.csdn.net/u010606397/article/details/115350392

JAVA项目如何通过Docker实现持续部署
https://blog.51cto.com/dadonggg/1957691

Docker学习(三)java应用docker部署
https://segmentfault.com/a/1190000019965126?utm_source=tag-newest

安装

  1. cd /opt
  2. # 安装docker
  3. yum install -y yum-utils device-mapper-persistent-data lvm2
  4. # 添加aliyun镜像
  5. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  6. # 安装Docker CE
  7. yum install -y docker-ce docker-ce-cli containerd.io
  8. # 安装Docker Compose
  9. yum install -y lsof wget
  10. wget https://github.com/docker/compose/releases/download/1.29.0/docker-compose-Linux-x86_64
  11. mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
  12. chmod +x /usr/local/bin/docker-compose
  13. # 查看Docker Compose 的版本
  14. docker-compose version
  15. # 安装 Harbor
  16. wget https://github.com/goharbor/harbor/releases/download/v2.4.0/harbor-online-installer-v2.4.0.tgz
  17. tar -zxvf harbor-online-installer-v2.4.0.tgz
  18. cd harbor
  19. vi harbor.yml
  20. hostname 配置为ip
  21. 去掉https开头的配置
  22. 默认密码: Harbor12345

image.png

  1. ./install.sh
  2. 查看服务进程
  3. docker-compose ps
  4. 停止服务
  5. docker-compose down -v
  6. 启动服务
  7. docker-compose up -d
  8. 查看日志
  9. docker ps -a
  10. docker logs --tail=200 d651c3a07a2e
  11. 查看网络模式
  12. docker network ls

调整容器网络

部署Harbor主机与容器网络不通问题
docker 创建容器时指定容器ip

  1. yum install bridge-utils -y
  2. brctl show

image.png

  1. # 删掉bridge,重新创建一个新的网桥
  2. service docker stop
  3. ip link set dev br-2b9e1b8e71f2 down
  4. brctl delbr br-2b9e1b8e71f2
  5. brctl addbr br-2b9e1b8e71f2
  6. ip addr add 172.27.0.1/16 dev br-2b9e1b8e71f2
  7. ip link set dev br-2b9e1b8e71f2 up
  8. service docker start

调整后
image.png

自签ssl证书

  1. 官方文档:https://github.com/goharbor/harbor/blob/master/docs/1.10/install-config/configure-https.md
  2. #mkdir /data/cert -p
  3. #openssl genrsa -out /data/cert/server.key 2048
  4. #openssl req -x509 -new -nodes -key /data/cert/server.key -subj "/CN=reg.hechunping.com" -days 36500 -out /data/cert/server.crt
  5. #mkdir /etc/docker/certs.d/reg.hechunping.com -p
  6. #cp /data/cert/server.crt /etc/docker/certs.d/reg.hechunping.com/

推送镜像

Java项目打成docker镜像

Java 和 Maven环境

  1. ########################
  2. # Install Maven
  3. # download url : http://mirrors.hust.edu.cn/apache/maven/maven-3/
  4. # user:root
  5. # path:/opt
  6. #
  7. ########################
  8. cd /opt
  9. # check java install
  10. if which java 2>/dev/null; then
  11. echo "java exists!"
  12. else
  13. yum install wget -y
  14. wget http://cdn.wswzms.top/jdk-8u11-linux-x64.tar.gz
  15. # unzip
  16. tar -zxvf jdk-8u11-linux-x64.tar.gz
  17. # rename
  18. mv jdk1.8.0_11 jdk
  19. # change Jurisdiction
  20. chown -R root:root /opt/jdk
  21. # set config
  22. echo 'export JAVA_HOME=/opt/jdk' >> /etc/profile
  23. echo 'export CLASSPATH=$JAVA_HOME/lib' >> /etc/profile
  24. echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
  25. # Take effect config
  26. source /etc/profile
  27. # Test
  28. java -version
  29. fi
  30. # Download maven source tar.gz
  31. # https://maven.apache.org/download.cgi
  32. wget http://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
  33. # unzip
  34. tar -zxvf apache-maven-3.5.4-bin.tar.gz
  35. # rename
  36. mv apache-maven-3.5.4 maven
  37. # set env config
  38. echo "export M3_HOME=/opt/maven" >> /etc/profile
  39. echo "export PATH=/opt/maven/bin:${PATH}" >> /etc/profile
  40. # source config
  41. source /etc/profile
  42. mvn -version
  43. # 打包
  44. mvn clean package -Dmaven.test.skip=true --update-snapshots

登录私服仓库

  1. docker login -u admin -p Harbor12345 http://192.168.216.3

Dockerfile

  1. FROM java:8
  2. MAINTAINER luis luis@xxx.com
  3. COPY bootstrap.yml bootstrap.yml
  4. COPY target/web-start.jar web-start.jar
  5. ENTRYPOINT ["java","-jar","-Deureka.instance.metadata-map.zone=dev -Duser.timezone=GMT -Dspring.profiles.active=dev -Dspring.config.location=bootstrap.yml -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 --server.port=8089 --management.server.port=8089","/web-start.jar"]
  6. EXPOSE 8089

打包&上传&部署

  1. yum install -y git
  2. git clone http://xxx.xxx.com/eureka-server.git
  3. # 登录私服仓库
  4. docker login -u admin -p Harbor12345 http://192.168.216.3
  5. # 构建镜像
  6. docker build -t eureka-server .
  7. # 查看镜像
  8. docker images
  9. # 运行容器
  10. docker run -d -p 0.:8761:8761 eureka-server
  11. # 容器发版
  12. docker tag eureka-server 192.168.216.3/austpay/eureka-server
  13. # 将容器上传至私服
  14. docker push 192.168.216.3/austpay/eureka-server
  15. # 查看容器的进程
  16. docker ps
  17. # 查看日志
  18. docker logs --tail=200 xxxx # xxxx IMAGES ID
  19. # 删除容器镜像
  20. docker rmi 192.168.216.3/austpay/eureka-server
  21. # 下载私服镜像
  22. docker pull 192.168.216.3/austpay/eureka-server
  23. # 进入容器内部
  24. docker exec -ti 我们的容器id bash

ISSUS

使用aliyun镜像解决安装docker-ce过慢问题

  1. # 一、添加aliyun镜像
  2. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. # 二、修改配置文件docker-ce.repo
  4. vi /etc/yum.repos.d/docker-ce.repo
  5. [docker-ce-stable]
  6. name=Docker CE Stable - $basearch
  7. #baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
  8. baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
  9. enabled=1
  10. gpgcheck=1
  11. gpgkey=https://download.docker.com/linux/centos/gpg
  12. # 三、安装docker
  13. yum install docker-ce docker-ce-cli containerd.io

Docker批量操作

  1. docker中 启动所有的容器命令
  2. docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
  3. docker中 关闭所有的容器命令
  4. docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)
  5. docker中 删除所有的容器命令
  6. docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)
  7. docker中 删除所有的镜像
  8. docker rmi $(docker images | awk '{print $3}' |tail -n +2)

Docker查看日志

  1. 查看指定时间后的日志,只显示最后100行:
  2. $ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
  3. 查看最近30分钟的日志:
  4. $ docker logs --since 30m CONTAINER_ID
  5. 查看某时间之后的日志:
  6. $ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
  7. 查看某时间段日志:
  8. $ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
  1. 一 docker ps
  2. 查看正在运行的docker容器有哪些。
  3. 二 docker ps -a
  4. 查看所有docker容器,包括不在running状态的。
  5. 三 docker logs 参数 容器id
  6. 查看具体某一个容器的日志。
  7. 其中参数可选择的有:
  8. -f follow 表示实时显示日志
  9. -t timestamp 表示显示时间戳
  10. --tail=n 或 --tail n 表示显示末尾n行
  11. 例如:docker logs -f --tail=200 xxxx,表示实时加载日志信息,并且仅显示最后200行。
  12. 四 docker logs 参数 容器id | grep str
  13. 查找日志文件中含有特定字符串的行
  14. 五 docker logs 参数 容器id | grep str >> out.txt
  15. 查找日志文件中含有特定字符串的行,并且输出到指定文件out.txt中。
  16. 六 根据时间查看log
  17. --since 从指定时间点到最新的日志
  18. --until 指定结束时间点
  19. docker logs --since 2020-04-10T19:50:00 container
  20. docker logs --since 2020-04-10T19:30:00 --until 2020-04-10T20:05:00 contailer

关闭防火墙

Centos 6.x版本 iptables

查看防火墙状态:service iptables status
iptables:Firewall is not runing. 说明防火墙没有开启
开启防火墙:service iptables start
关闭防火墙:service iptables stop

Centos 7版本 firewall

查看当前防火墙状态:systemctl status firewalld.service
执行后可以看到绿色字样标注的“active(running)”,说明防火墙是开启状态

关闭防火墙命令:systemctl stop firewalld.service
关闭后,使用命令systemctl status firewalld.service
可以看到,disavtive(dead)的字样,说明防火墙已经关闭

开启防火墙:systemctl start firewalld.service

怎么设置才能永久关闭防火墙呢?
关闭开机自启动,禁止防火墙服务器:systemctl disable firewalld.service

开启开机启动:systemctl enable firewalld.service

devicemapper: Error running deviceCreate (ActivateDevice) dm_task_run failed

  1. rm -rf /var/lib/docker/*
  2. systemctl restart docker

Linux查找大文件和目录

查找大文件

  1. cd /
  2. find / -type f -size +800M

查找大目录

  1. du -h --max-depth=1
  2. du -h --max-depth=2 | sort -n
  3. du -hm --max-depth=2 | sort -nr | head -12
  4. du -sh

如何清理 Docker 占用的磁盘空间

  1. docker system df
  2. TYPE 列出了docker 使用磁盘的 4 种类型:
  3. Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的。
  4. Containers:运行的容器占用的空间,表示每个容器的读写层的空间。
  5. Local Volumes:容器挂载本地数据卷的空间。
  6. Build Cache:镜像构建过程中产生的缓存空间(只有在使用 BuildKit 时才有,Docker 18.09 以后可用)。
  7. docker system prune -a

故障现象(二):client 端无法正常访问用户界面和 register 服务

  1. 之前得操作都是在Harbor服务器本地操作,但是如果其他客户端上传镜像到 Harbor,就可能会报错
  2. 出现这问题是因为Docker Registry交互默认使用的是 HTTPS,但是搭建私有镜
  3. 像默认使用的是HTTP服务,所以与私有镜像交互时会出现错误
  4. --
  5. 报错:client端无法正常登录
  6. [root@client ~]# docker login -u admin -p Harbor12345 http://192.168.126.16
  7. WARNING! Using --password via the CLI is insecure. Use --password-stdin.
  8. Error response from daemon: Get https://192.168.126.16/v2/: dial tcp 192.168.126.16:443: connect: connection refused '//报错:连接拒绝'
  9. [root@client ~]# vim /usr/lib/systemd/system/docker.service
  10. ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.126.16 --containerd=/run/containerd/containerd.sock
  11. '//需要修改此行,指向harbor服务器IP地址,之后就可以连接了'
  12. [root@client ~]# systemctl daemon-reload
  13. [root@client ~]# systemctl restart docker
  14. [root@client ~]# docker login -u admin -p Harbor12345 http://192.168.126.16
  15. WARNING! Using --password via the CLI is insecure. Use --password-stdin.
  16. WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
  17. Configure a credential helper to remove this warning. See
  18. https://docs.docker.com/engine/reference/commandline/login/#credentials-store
  19. Login Succeeded '//登录成功!'

Git clone 时遇见错误 Peer‘s Certificate has expired

  1. git config --global http.sslVerify false

git http每次提交都要输入密码解决方案

  1. https 方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受 https 带来的极速
  2. 按照以下设置记住密码十五分钟:
  3. git config --global credential.helper cache
  4. 如果你想自定义记住的时间,可以这样:
  5. git config credential.helper 'cache --timeout=3600' //这里记住的是一个小时,如需其他时间,请修改3600为你想修改的时间,单位是秒
  6. 你也可以设置长期记住密码:
  7. git config --global credential.helper store
  8. 或修改仓库的地址带上你的账号密码
  9. http://yourname:password@git.oschina.net/name/project.git //注意,码云平台同时支持个性地址与邮箱,当使用邮箱时,请对@符号使用%40替换
  10. 如果你原本使用的 ssh 地址想更换成 http(s) 地址,可以执行以下命令:
  11. //删除原本的ssh仓库地址
  12. git remote rm origin //origin 代表你原本ssh地址的仓库的别名
  13. //新增http地址的仓库
  14. git remote add origin http://git.oschina.net/username/project.git

Maven仓库配置

仓库默认位置:/root/.m2/repository

在/root/.m2目录下添加 setting.xml

停止进程命令执行文件_Docker所有命令一览

资料