Docker

CentOS7下安装Docker

准备工作

  • 更新操作系统
1
yum update
  • 安装常用软件
1
2
yum install -y unzip zip wget vim net-tools lrzsz
# 打包镜像的机器根据开发语言的不同,按实际需要的进行安装

安装

  • Docker CE版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#安装yum-utils软件包,以便使用yum-config-manager设置稳定库
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 安装最新版本的Docker
yum install docker-ce docker-ce-cli containerd.io

# Docker开机自启
systemctl enable docker

# 启动Docker
systemctl start docker

# 验证Docker是否安装成功
docker run hello-world

文档: https://docs.docker.com/engine/install/centos/

  • Docker开机自启

    1
    systemctl enable docker
  • Docker国内镜像加速

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cd /etc/docker
    touch daemon.json
    vim daemon.json
    {
    "registry-mirrors":[
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
    ]
    }
    #重启服务
  • 安装Docker Compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 下载当前稳定版本(要安装其他版本的Compose,请替换1.26.2 为要使用的Compose版本)
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 给文件添加执行权限
chmod +x /usr/local/bin/docker-compose

# 创建软链
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 测试安装
docker-compose --version

# 安装redis
docker run -p 6379:6379 --restart=always -d redis:latest redis-server

# 安装redis 并限制100M内存
docker run -it -m 100M --memory-swap -1 -p 6379:6379 --restart=always -d redis:latest redis-server

文档: https://docs.docker.com/compose/install/

私有镜像库

  • 安装镜像库

    • 下载镜像

      1
      docker pull registry
    • 运行registry容器

      1
      2
      3
      4
      5
      6
      7
      8
      #参数说明
      #-itd:在容器中打开一个伪终端进行交互操作,并在后台运行;
      #-v:把宿主机的/data/registry目录绑定 到 容器/var/lib/registry目录(这个目录是registry容器中存放镜像文件的目录),来实现数据的持久化;
      #-p:映射端口;访问宿主机的5000端口就访问到registry容器的服务了;
      #--restart=always:这是重启的策略,假如这个容器异常退出会自动重启容器;
      #--name registry:创建容器命名为registry,你可以随便命名;
      #registry:latest:这个是刚才pull下来的镜像;
      docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
  • 上传镜像

    配置镜像服务器

    1
    2
    3
    4
    5
    [root@node ~]# vim /etc/docker/daemon.json 
    {
    "registry-mirrors": [ "https://registry.docker-cn.com"],
    "insecure-registries": [ "镜像服务器IP:5000"]
    }

    镜像打标签

    1
    docker tag test:latest  镜像服务器IP:5000/test:v1

    镜像上传

    1
    docker push 镜像服务器IP:5000/test:v1
  • 查看镜像

    1
    curl http://IP:5000/v2/_catalog
  • 查看test镜像都有哪些tag

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        http://镜像服务器IP:5000/v2/busybox/tags/list
    ···


    ### 常用组件

    - MinIO 文件存储(单实例运行)
    ```bash
    docker run -itd -p 9000:9000 --restart=always --name minio1 -v /data/minio:/data -e "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE" -e "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" minio/minio server /data

    # 纠删码方式

    docker run -itd -p 9000:9000 --restart=always --name minio1 -v /home/minio/data00:/data00 -v /home/minio/data01:/data01 -v /home/minio/data02:/data02 -v /home/minio/data03:/data03 -v /home/minio/data04:/data04 -v /home/minio/data05:/data05 -v /home/minio/data06:/data06 -v /home/minio/data07:/data07 -v /home/minio/data08:/data08 -v /home/minio/data09:/data09 -e "MINIO_ACCESS_KEY=qwert12345" -e "MINIO_SECRET_KEY=qwert12345" minio/minio server /data00 /data01 /data02 /data03 /data04 /data05 /data06 /data07 /data08 /data09

文档:https://docs.min.io/docs/minio-docker-quickstart-guide

  • MySQL5.7
1
2
3
4
5
6
# 创建MySQL 且不区别大小写,时区为东八区 密码为root
# 注意mysql数据保存位置,root用户名密码 镜像版本号
docker run -id --name=ry_mysql -e TZ=Asia/Shanghai -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root -v /home/mysqldata:/var/lib/mysql mysql:5.7.38 --lower_case_table_names=1

# 创建MySQL 限制内存
docker run -it -m 256M --memory-swap -1 -id --name=ry_mysql -e TZ=Asia/Shanghai -p 3306:3306 --restart=always -e MYSQL_ROOT_PASSWORD=root -v /home/mysqldata:/var/lib/mysql mysql:5.7.38 --lower_case_table_names=1
  • ElasticSearch
1
docker run -e "ES_JAVA_OPTS=-Xms64m -Xmx251m" --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node"  --restart=always -d elasticsearch:7.2.0

docker中的容器时区更改

  • 进入需要更改时区的容器
1
    docker exec -it 容器ID bash
  • 将宿主机的时区链接到容器里面
1
2
3
4
# 这里使用的是上海的时区
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
    #如果本地时区不正确,可以更改本地时区:
    echo "Asia/Shanghai" > /etc/timezone
  • 退出容器并重启容器
1
2
    exit  # 退出容器
    docker restart 容器ID #重启容器
  • 删除无用和没有tag的镜像
1
docker image prune -f
  • 阿里云效容器加速打包
1
2
3
4
5
# jre8的版本 带字体修复
registry.cn-beijing.aliyuncs.com/qtubiao/openjdk:8-jre-alpine-font

# jdk17的版本 带字体修复
registry.cn-beijing.aliyuncs.com/qtubiao/openjdk:17-jdk-alpine3.14-font
  • 一键部署maven私服
1
docker run -d -p 48081:8081  --privileged=true --name nexus -v /data1/zhongyj/data/nexus-data:/nexus-data --restart=always sonatype/nexus3
  • 安装rockylinux
    1
    2