Docker部署与配置全攻略

docker部署安装

#安装国内阿里源;

复制代码
mkdir -p /data/download/docker

cd /data/download/docker
​
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#检查一下下载的docker-ce.repo 文件没有问题之后

复制代码
cp /data/download/docker/docker-ce.repo /etc/yum.repos.d/docker-ce.repo
复制代码
yum clean expire-cache
#安装Docker-CE版本;
yum install docker-ce -y
复制代码
​
#查Docker版本是否安装;
rpm -qa|grep -E "docker"
#启动Docker引擎服务;
systemctl daemon-reload && systemctl restart docker
#查看Docker服务进程;
ps -ef|grep docker

Docker仓库源更新

二选一

vim /etc/docker/daemon.json

.................................................

cat>/etc/docker/daemon.json<<EOF
{

"registry-mirrors":["https://docker.m.daocloud.io"]

}

EOF

..................................

cat daemon.json

​
复制代码
systemctl daemon-reload && systemctl restart docker

ps -ef|grep docker

验证docker源下载速度

docker pull tomcat
复制代码
查看dockers容器镜像

docker image

删除docker容器镜像

docker rmi tomcat

如果删除容器镜像报错,先停止再删除

docker stop tomcat

从Docker仓库下载nginx镜像;
docker pull docker.io/nginx
#从Docker仓库下载tomcat镜像;
docker pull docker.io/tomcat
复制代码
基于docker run启动nginx镜像,并且启动到/bin/bash解释器;
docker run -itd docker.io/nginx

-i表示:interactive交互;
-t表示:tty终端;
d表示:daemon后台启动;
#基于docker run启动nginx镜像,启动到/bin/bash解释器,同时映射本地80端口至容器80端口;替代了docker原有的命令,或者docker原来就没有启动命令,并不是所有的都可以替代
docker run -p 80:80 -itd docker.io/nginx /bin/bash
#-p端口映射,第一个80宿主机监听端口,第二个80端口为容器监听;
#浏览器输入宿主机IP+80端口,即可访问容器中的80端口所在服务;
复制代码
#查看当前正在运行中的容器;
docker ps
#查看当前Linux系统所有容器,包括运行和已经停止、其他容器(所有容器)
docker ps -a
复制代码
#查看容器详细信息;
docker inspect 55e339c80051
#查看容器详细信息,并且从信息中过滤IP地址;
docker inspect 55e339c80051|grep -i ipaddr
复制代码
#在Docker中容器运行指令:df -h;
docker exec 55e339c80051 df -h
#在Docker中容器/tmp目录创建jfedu.txt文件;
docker exec 55e339c80051 touch /tmp/test.txt
#进入Docker容器/bin/bash终端,然后执行df -h指令;
docker exec -it 55e339c80051 /bin/bash
#退出容器

exit
复制代码
#基于stop停止正在运行中的容器;
docker stop 55e339c80051
#基于start启动已经停止的容器;
docker start 55e339c80051
复制代码
#Kill掉正在运行中某个容器;
docker kill 55e339c80051
复制代码
#删除某个指定的已经停止Docker容器;
docker rm dc455c12ca7d
#强制删除某个指定的正在运行中的Docker容器;
docker rm -f 55e339c80051
复制代码
#从Docker images列表中删除某个镜像;
docker rmi 78b258e36eed
#从Docker images列表中删除多个镜像;
docker rmi e81eb098537d 415381a6cb81
复制代码
Docker-Compose部署安装

mkdir -p /data/docker-compose

curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose   (如下载失败,可重复多次)
复制代码
#查看下载文件;

cd /usr/local/bin/

ls -la

#添加脚本x权限

chmod +x /usr/local/bin/docker-compose

查看其版本信息;

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

docker-compose --version
复制代码
基于docker-compose构建Nginx容器

mkdir -p /data/docker-compose

vi docker-compose.yml

..................................

version: "3" 

services:

  nginx:

    container_name: www-nginx

    image: nginx:latest

    restart: always

    ports:

      - 80:80

    volumes:

    - /data/webapps/www/:/usr/share/nginx/html/

..............................................

创建发布目录:/data/webapps/www/

mkdir -p /data/webapps/www/

echo "<h1>www.hefang.net Nginx Test pages.</h1>" >>/data/webapps/www/index.html

docker-compose up -d

docker ps

docker exec -it www-nginx /bin/bash
root@4528f7b12b43:/# exit
exit

启动和关闭

docker-compose stop

docker-ompose start

验证网络nginx

curl 192.168.63.210
复制代码
测试后,删除nginx

docker-compose stop

docker-compose rm
复制代码
Docker Harbo仓库

cd /data/download/
wget -c https://github.com/goharbor/harbor/releases/download/v2.7.1/harbor-offline-installer-v2.7.1.tgz

ls -la

tar -xzf harbor-offline-installer-v2.7.1.tgz
复制代码
cd /data/download/harbor

cp harbor.yml.tmpl harbor.yml

修改Habor配置文件harbor.yml,修改hostname为本机IP地址,同时注释掉https部分

vi harbor.yml

............................

.........................

复制代码
安装

./install.sh

ls -la  (安装成功后,生成docker-compose.yml文件,如果遇到问题,例如端口被占用,解决问题之后,回到当前目录 docker-compose stop && docker-compose start

)

登陆Habor WEB平台,默认用户名:admin,默认密码:Harbor12345

登陆Harbor WEB控制台,可以进行进一步配置

创建私有仓库用户名hefang,并且设置密码Harbor12345,并且绑定library仓库;

复制代码
​
默认访问Docker仓库使用443端口,要修改为80端口仓库地址

vim /etc/docker/daemon.json

.............................................

{

  "registry-mirrors":["https://docker.m.daocloud.io"],

  "insecure-registries":["192.168.63.210"]

}

...........................................

systemctl daemon-reload && systemctl restart docker

​
复制代码
 cd /data/download/harbor

 systemctl restart docker

docker-compose restart

登录私有仓库

docker login 192.168.63.210
  1. 进入后台查看操作命令提示
复制代码
docker images

按照提示标记镜像

docker tag nginx:latest 192.168.63.210/library/nginx:v1

docker images
复制代码
通过docker push将镜像上传至Harbor仓库

docker push 192.168.63.210/library/nginx:v1

在仓库中,查看上传的镜像

复制代码
docker stats查看所有运行的容器的资源

docker stats+容器ID查看指定容器的资源

docker stats a698c13c985e

docker stats 容器id,--nostream非流式查看容器资源

docker stats a698c13c985e --no-stream

获取容器CPU的信息;

docker stats a698c13c985e --no-stream|awk 'NR>1 {print $1,"CPU:"$3}'

获取容器MEM的信息;

docker stats a698c13c985e --no-stream|awk 'NR>1 {print $1,"MEM:"$4}'

获取容器IO读写的信息;

docker stats a698c13c985e --no-stream|awk 'NR>1 {print $1,"IO:"$(NF-1)}'
复制代码
部署CAdvisor监控

下载cadvisor镜像,命令如下:

docker pull google/cadvisor

基于镜像启动cadvisor容器,命令如下:

docker run -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 -d --name cadvisor google/cadvisor

通过浏览器访问cadviosr 8080端口,如图所示:

http://192.168.63.210:8080/containers/

复制代码
Cadvisor+InfluxDB+Grafana部署

单独方式比较繁琐,此处采用Docker-compose方式部署,首先编写compose.yml文件,然后启动compose相关容器服务即可

先停止删除cadviosr

docker stop cadvisor

docker rm cadvisor
复制代码
docker ps

cd /data/download/harbor
systemctl restart docker
docker-compose restart

docker ps
复制代码
vim /etc/docker/daemon.json

.............................................

{

"registry-mirrors":["https://docker.1ms.run",
"https://docker.m.daocloud.io",
"https://docker.xuanyuan.me",
"https://mirror.tuna.tsinghua.edu.cn"],

"insecure-registries":["192.168.63.210"]

}

...........................................

systemctl daemon-reload && systemctl restart docker



mkdir -p /data/cadvisor

cd /data/cadvisor

vim docker-compose.yml

...........................................

version: '3.8'

services:
  influxdb:
    image: influxdb:1.8.10
    container_name: influxdb
    restart: unless-stopped
    environment:
      INFLUXDB_DB: cadvisor
      INFLUXDB_ADMIN_USER: admin
      INFLUXDB_ADMIN_PASSWORD: admin_pass
    ports:
      - "8083:8083"
      - "8086:8086"
    volumes:
      - influxdbData:/var/lib/influxdb
    logging:
      driver: "json-file"
      options:
        max-size: "100m"

  grafana:
    image: grafana/grafana:9.5.15
    container_name: grafana
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      GF_SECURITY_ADMIN_USER: admin
      GF_SECURITY_ADMIN_PASSWORD: admin_pass
      GF_INSTALL_PLUGINS: "grafana-clock-panel,grafana-piechart-panel"
    volumes:
      - grafanaData:/var/lib/grafana
    depends_on:
      - influxdb

  cadvisor:
    image: docker.1ms.run/google/cadvisor
    container_name: cadvisor
    ports:
      - "8080:8080"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/healthz"]
      interval: 30s
      timeout: 5s
      retries: 3
    restart: unless-stopped
    security_opt:
      - no-new-privileges:true
    read_only: true
    tmpfs:
      - /tmp:rw,size=100M
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

volumes:
  influxdbData:
  grafanaData:




................................................
复制代码
启动Docker-compose,命令如下:

docker-compose up -d

docker images -a

docker ps

看下docker volume ls
docker volume inspect cadvisor_influxdbData

Docker-compose默认会启动三个类别容器,分别为:grafana、cadvisor、influxdb,对外访问IP+端口如下:

  1. Grafana:http://192.168.63.210:3000

  2. Cadvisor:http://192.168.63.210:8080

  3. Influxdb:http://192.168.63.210:8086

浏览器访问Grafana WEB界面,默认用户名和密码:admin/admin,然后选择add-database source,填写Influxdb数据库的IP和端口,数据库名:cadvisor,用户名和密码:admin/admin_pass,如图所示:http://192.168.63.210:3000/login

或者从home-connections-connect data搜索数据源

添加新的数据源

可以修改名称并填写Influxdb数据库的IP和端口

数据库名:cadvisor

创建Grafana图像,设置监控项目,例如添加MEM内存使用监控

创建Grafana图像,设置监控项目,例如添加CPU使用监控

相关推荐
janthinasnail2 小时前
使用Docker安装code-server(VS Code in the browser)
docker·code-server
路由侠内网穿透2 小时前
本地部署开源 LLM 应用观测与调试平台 Langfuse 并实现外部访问
运维·服务器·数据库·物联网·开源
m0_612591972 小时前
尚航科技 IDC vs 其他服务商:企业服务器托管选择对比
运维·服务器·idc
Magic--2 小时前
Linux静态库与共享库(动态库)详解
linux·运维·服务器
河码匠2 小时前
Kubernetes YAML 详解之网络服务二( Ingress、IngressClasses)
云原生·容器·kubernetes
袖手蹲2 小时前
Arduino UNO Q 板载 Nanobot 自动化编程指南之五
运维·自动化
m0_683124793 小时前
无U盘装Ubuntu
linux·运维·ubuntu
默|笙3 小时前
【Linux】进程信号(2)_信号捕捉_中断
linux·运维·服务器
东方不败之鸭梨的测试笔记3 小时前
UI自动化执行时,元素不在视野内,需要拖动滑动条才能找到,这种元素怎么处理?
运维·ui·自动化