docker相关

Posted by Stq's NoteBook on January 16, 2022

docker在线安装

yum install docker

docker离线安装

#下载所需文件
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
   
# 安装   
rpm -i /path/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
rpm -i /path/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
  

# docker启动java程序

#!/bin/bash
# 定义Docker容器名称
container_name="my-java-app"
java_name="a.jar"

# 运行Docker容器,并使用主机网络,添加自动重启参数
docker run -d --name "$container_name" --network host --restart always -v "`pwd`:/" openjdk:8 java -jar "$java_name"

if [ $? -eq 0 ]; then
    echo "Docker容器已成功启动,并使用了主机网络,配置了自动重启。"
else
    echo "启动Docker容器失败。"
fi

# docker常用操作

  #启动 Docker
systemctl start docker
  
  #停止docker
systemctl stop docker
  
  #拉取镜像
docker pull imageId | imageName:tagId
  
  #docker镜像导出 //容器导出镜像也是一样的操作
docker image save  imageName:tag| gzip -5 > imageName.tar.gz
或者 
docker  save  -o nextcloud.tar.gz imageName:tag |gzip -5 


  #docker 镜像导入
docker load -i imageName.tar.gz

#docker 镜像或者容器重新打tag
docker tag imageId/containerId imageName/containerName:tagName

#进入正在运行的docker容器内部
docker exec containerId /bin/bash

#查看docker容器最近100条日志
 docker logs -f --tail 100 containerId
 
 
 #容器保存为镜像
docker commit containername imagename

#跨架构拉取镜像 配置参考https://blog.csdn.net/lhc0602/article/details/116596006
docker image pull containername --platform=arm64
 #未完待续

docker部署单机postgresql

#拉取镜像
  docker pull postgres:13.3
#创建数据挂载目录
  mkdir -p /home/postgresql/data
#启动
  docker run -d --name postgresql --restart always -v /home/postgresql/data/:/var/lib/postgresql/data -e POSTGRES_PASSWORD=123456 -p 5432:5432 postgres:13.3
#导出docker镜像至本地文件
  docker image save  postgres:13.3 | gzip -5 > pgimage.tar.gz
#离线导入镜像	
	docker load -i pgimage.tar.gz
#重命名镜像
  docker tag imageId postgres:13.3
  
              

docker部署mariadb

#拉取镜像 
docker pull  mariadb:10.5.10
#创建数据挂载目录
  mkdir -p /home/mariadb/data
#运行
docker run -it --name mariadb -p 3306:3306 -v /home/mariadb/data:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=root mariadb:10.5.10

docker部署redis

#拉取镜像
docker pull redis
#启动,并设置密码
docker run --name redis -d -p 6379:6379 redis --requirepass "Hjdev_2021"
#导出镜像
docker image save  02c | gzip -5 > redis.tar.gz

docker单节点部署es

#--ulimit memlock=-1:-1是为了防止内存不够启动失败
docker run  --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms2g -Xmx2g" --ulimit memlock=-1:-1  es:6.24withEsqk=l

docker数据目录迁移

#创建docker数据目录
mkdir -p /data/docker

#停止docker //此步开始影响用户访问平台
systemctl stop docker 

#备份配置文件
cp /usr/lib/systemd/system/docker.service /usr/lib/systemd/system/docker.servicebak

#迁移数据文件
rsync -avz /var/lib/docker /data/docker

#修改数据目录配置
vi /usr/lib/systemd/system/docker.service  
#在ExecStart里加上--graph=/data/docker 

#重新加载配置和启动docker
systemctl daemon-reload
systemctl start docker

#查看docker数据存储目录
docker info | grep "Docker Root Dir"
 
删除原数据目录
rm -rf /var/lib/docker 

#over