Docker

312 阅读3分钟

切换 root

sudo -i

安装 Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

sudo yum install -y yum-utils

sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

systemctl start docker

systemctl enable docker.service

systemctl disable docker.service

docker-compose部署

  • 下载最新的docker-compose,若是github访问太慢,可以用daocloud下载
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
  • 测试安装结果
docker-compose --version

docker-compose 离线部署

    mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

启动Nexus

    docker pull sonatype/nexus3

    mkdir -p /docker/nexus/
    chmod -R 777 /docker

    docker run -d -p 8081:8081 -p 8082:8082 --privileged=true -v /docker/nexus/nexus-data:/nexus-data --name nexus sonatype/nexus3

启动 opengaussdb

    docker pull enmotech/opengauss:latest
    docker run -d -p 5432:5432 --name opengauss --privileged=true -e GS_PASSWORD=Enmo@123 -v /wuyc/opengauss:/var/lib/opengauss enmotech/opengauss:latest

    数据库:postgres 用户:gaussdb 密码:Enmo@123

启动 vagrant

<https://blog.csdn.net/weixin_44449518/article/details/128572769>

启动达梦

docker pull registry.cn-shanghai.aliyuncs.com/techerwang/dbhub:jem_dm8

docker run -d --name jemdm8 -h jemdm8 -p 52360-52364:5236-5240 -p 58080:8080 -p 53389:3389 -v /docker/fs/cgroup:/sys/fs/cgroup --privileged=true my_dameng:jem_dm8 /usr/sbin/init

docker exec -it jemdm8 bash

disql SYSDBA/SYSDBA

desc v$database;

启动redis

version: "3.1"
services:
  redis:
    image: redis:4
    environment:
      TZ: Asia/Shanghai
    ports:
      - 6379:6379
    command: ["redis-server","/etc/redis/redis.conf"]
    restart: always
    volumes:
      - ./conf:/etc/redis/
      - ./data:/data
  • redis.conf

    bind 0.0.0.0 port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 0 #loglevel notice #logfile "/redis/logs/redis.log" databases 16 requirepass liubei@2021

docker 无法联网

vi /etc/sysctl.conf

增加:
et.ipv4.ip_forward=1

systemctl restart network

sysctl net.ipv4.ip_forward

启动minio

version: '3.1'
services:
  minio:
    image: minio/minio:latest
    container_name: minio
    ports:
      - "8000:9000"
      - "8001:9090"
    restart: always
    command: server /data --console-address ":9090"
    environment:
      TZ: "Asia/Shanghai"
      MINIO_ROOT_USER: minio
      MINIO_ROOT_PASSWORD: minio@2023
    volumes:
      - ./data:/data
      - ./config:/root/.minio

报错

时差太大
date -s 'yyyy-MM-dd hh:mm:ss'
----
docker date: cannot set date: Operation not permitted
sudo -> --privileged=true

启动nacos

version: "3.1"
services:
  nacos:
    image: nacos/nacos-server:v2.0.4
    container_name: nacos
    environment:
      - PREFER_HOST_MODE=hostname
      - MODE=standalone
      - SPRING_DATASOURCE_PLATFORM=mysql
      - MYSQL_SERVICE_HOST=192.168.0.112
      - MYSQL_SERVICE_DB_NAME=nacos_config
      - MYSQL_SERVICE_PORT=3306
      - MYSQL_SERVICE_USER=root
      - MYSQL_SERVICE_PASSWORD=root
      - MYSQL_DATABASE_NUM=1
    volumes:
      - ./logs:/home/nacos/logs 
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties 
      - ./data:/home/nacos/data 
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849" 
    restart: always

启动 nginx

    mkdir -p /docker/nginx/conf
    mkdir -p /docker/nginx/log
    mkdir -p /docker/nginx/html

    # 生成容器
    docker run --name nginx -p 9001:80 -d nginx
    # 将容器nginx.conf文件复制到宿主机
    docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/conf/nginx.conf
    # 将容器conf.d文件夹下内容复制到宿主机
    docker cp nginx:/etc/nginx/conf.d /home/docker/conf/conf.d
    # 将容器中的html文件夹复制到宿主机
    docker cp nginx:/usr/share/nginx/html /docker/nginx/
    docker run \

\-p 9002:80 \
\--name nginx \
\-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
\-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
\-v /home/nginx/log:/var/log/nginx \
\-v /home/nginx/html:/usr/share/nginx/html \
\-d nginx:latest

# 解决docker报错Job for docker.service failed because start of the service was attempted too often

cd /etc/docker/
mv daemon.json daemon.conf

docker 操作

一、docker commit (生成) 参考: docker commit

当我在mmdetection3d的容器上修改后,可以通过 docker commit 的方式将容器生成新的镜像(相当于word的 另存为)。

# 重新生成一个镜像(生成过程要出docker):
docker commit id name
# id:做过更改容器的id
# name:随意命名
# 例如: docker commit f828 tom
# 生成完可以运行 docker images 查看

二、docker save(保存) 我们生成了 id=f82,name=tom 的镜像。现在将镜像打包保存。 生成了tar文件,可以发送给别人。

docker save -o  文件名   镜像名
# 例如 docker save -o ~/mydocker.tar tom
# -o是--output的简写。

二、docker load(加载) 当别人拿到了我的mydocker.tar文件时候,可以进行解压,在本地生成docker容器运行我的代码。

docker load -i  文件名   镜像名
# 例如 docker load -i mydocker.tar
# -i 是 --input 的简写
# docker images 就可以查看是否成功啦