Shell脚本运行Docker相关命令说明

#1.Shell脚本 key = value 获取value

# 查看xxx.ini文件内容
cat xxx.ini

# 显示/获取包含指定内容的那一行
| grep node_num 
-------------------------
结果:node_num = 3

# awk -F (-F 指定分割符)
# 2使用=作为分割符,获取第二个值
# 2分割后结果 [node_num , 3] (注意node_num后面有个一个空格,3前面有一个空格)
| awk -F'=' '{print $2}'
-------------------------
结果: 3(前面有空格)

# 去除空格
| sed s/[[:space:]]//g
-------------------------
结果:3(前面无空格)

--------------------------------------------------------------------------
配置文件设置内容:
# 节点编号
node_num = 3
--------------------------------------------------------------------------
# 查找/获取 xxx.ini文件中yyy属性等号右边的值
cat xxx.ini | grep yyy | awk -F'=' '{print $2}' | sed s/[[:space:]]//g
cat sectag-node.ini | grep node_num | awk -F'=' '{print $2}' | sed s/[[:space:]]//g`
--------------------------------------------------------------------------
结果:3

#2.获取容器ID

docker ps -f name="${SERVICE_NAME}_${NUM}" -aq
-f :根据条件过滤显示的内容。 例如:-f name="sls-file-kit_3" 显示name=sls-file-kit_3的容器信息
-a :显示所有的容器,包括未运行的。
-q :静默模式,只显示容器编号。

[root@localhost sls-dbs-kit]# docker ps -f name="sls-file-kit_3"
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
0498d3c570bb        sls-file-kit:2.0.0.1   "sh -c 'java -agentl…"   4 days ago          Up 2 hours          0.0.0.0:9648->9648/tcp   sls-file-kit_3
[root@localhost sls-dbs-kit]# docker ps -f name="sls-file-kit_3" -aq
0498d3c570bb

#3.Docker启动命令相关参数说明

命令:

docker run 
		
		#1.第一部分 基础命令
		-d -p ${MOUNT_PORT}:${PORT} -v /etc/localtime:/etc/localtime:ro -v ${CURRENT_DIR}/../jar:/sls \
		-v ${FILE_FOLDER_MAP}:${FILE_FOLDER_MAP} --name=${SERVICE_NAME}_${NUM} --network ${SLS_NETWORK} --network-alias ${SERVICE_NAME}_${NUM} --restart=always 
	       
		#2.第二部分 容器参数传递
		-e jar_name=""${SERVICE_NAME}"-"${VERSION}".jar" -e params="--kit.ip="${SERVICE_IP}" \
		--server.port="${PORT}" --spring.rabbitmq.host="${RABBITMQ_IP}" --spring.rabbitmq.port="${RABBITMQ_PORT}" \
		--spring.rabbitmq.username="${RABBITMQ_USERNAME}" --spring.rabbitmq.password="${RABBITMQ_PASSWORD}" \
		--database.ip="${DATABASE_IP}" --database.port="${DATABASE_PORT}" --database.name="db_kit_0" \
		--database.username="${DATABASE_USERNAME}" --database.password="${DATABASE_PASSWORD}" \
		--verification.code="${VERIFY_CODE}" --supervise.isOpen="${SUPERVISE_OPEN}" \
		--kit.username="${SUPERVISE_USERNAME}" --kit.password="${SUPERVISE_PASSWORD}" \
		--document.preview.switch="${DOCUMENT_PREVIEW_SWITCH}" --document.openOffice.ip="${OPENOFFICE_IP}" --document.openOffice.port="${OPENOFFICE_PORT}" \
		--kit.webtoken="${SUPERVISE_WEBTOKEN}" --office.tag.open="${OFFICE_TAG_SERVER_OPEN}" \
		--office.tag.ip="${OFFICE_TAG_SERVER_IP}_${NUM}" --office.tag.port="${OFFICE_TAG_SERVER_PORT}" \
		--file.scan.time="${FILE_SCAN_TIME}" --tongtech.exchange.copyFile.start="${TONGTECH_EXCHANGE_COPYFILE_START}" \
		--tongtech.exchange.copyFile.time="${TONGTECH_EXCHANGE_COPYFELE_TIME}"" 
	       
		#3.第三部分 指定容器运行
		${IMAGE_NAME}:${VERSION}(最后指定启动那个容器)
docker run 
#1.-d 后台运行守护进程
#2.-p 端口映射 -p a_port:b_port a_port(容器对外映射的端口) b_port(容器内部的端口)
#3.-v xxx:yyy 将外部xxx未知,与docker容器内yyy挂载到一起
#4.--name=newNmae 为容器创建的别名
#5.--network 
#6.--restart=always  当docker重启时,容器自动启动
#7.-e 传递环境变量,:-e jar_name=""${SERVICE_NAME}"-"${VERSION}".jar" 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下方式在shell脚本执行docker命令: 1. 直接在脚本中使用docker命令,例如: ``` #!/bin/bash docker run -it --rm ubuntu:latest /bin/bash ``` 2. 将docker命令封装成函数,方便在脚本中调用,例如: ``` #!/bin/bash function run_container() { docker run -it --rm ubuntu:latest /bin/bash } run_container ``` 3. 使用变量传递docker命令参数,例如: ``` #!/bin/bash DOCKER_CMD="docker run -it --rm ubuntu:latest /bin/bash" $DOCKER_CMD ``` 以上是几种常见的在shell脚本执行docker命令的方式,具体使用哪种方式取决于具体的需求和场景。 ### 回答2: shell脚本执行docker命令是一种在Linux系统下自动化运行Docker容器的方法。这种方法可以让用户在不需要手动输入命令的情况下管理容器,并且可以通过脚本的方式指定容器的运行方式、环境变量、网络配置等。以下是关于shell脚本执行docker命令的详细解释。 Docker是一种宿主机上的应用容器化技术,它能够为应用程序提供隔离和封装的环境,使得在不同的系统上运行应用程序变得更为容易。但是,在实际应用中,需要手动输入docker命令来创建、修改、启动、停止容器,这会浪费大量的时间和精力。而shell脚本执行docker命令正是为了解决这个问题而出现的。 首先,我们需要编写一个shell脚本来控制Docker容器。脚本的基本格式如下: ```bash #!/bin/bash docker run [options] image [command] [args] ``` 其中,#!/bin/bash表示使用bash作为解释器。docker run命令用于启动容器。options是启动容器时需要指定的参数,比如端口映射、环境变量、挂载数据卷等。image是镜像名,command和args是容器内运行命令和参数。 接下来,我们来看一个简单的实例。假设我们要启动一个Redis容器,并映射宿主机的6379端口到容器内的6379端口: ```bash #!/bin/bash docker run -d --name redis -p 6379:6379 redis ``` 在脚本中,-d参数表示容器在后台运行,--name指定容器的名称,-p指定端口映射,redis为镜像名。 除了启动容器,我们还可以使用shell脚本执行docker命令来停止、删除、查看容器等。例如,我们要停止名为redis的容器,可以使用下面的命令: ```bash #!/bin/bash docker stop redis ``` 其中,stop是docker stop命令的缩写。 除了容器的管理,我们还可以在shell脚本执行docker镜像的构建、推送、拉取等操作。例如,我们要从Docker Hub拉取最新的Ubuntu镜像: ```bash #!/bin/bash docker pull ubuntu ``` 总的来说,shell脚本执行docker命令可以提高工作效率,避免重复操作,同时还能够精确控制容器的运行环境。当然,使用脚本也存在一些需要注意的问题,例如容器名的冲突、脚本的权限和安全性等。因此,在使用此方法时,需要了解Docker的基本知识,谨慎编写脚本,以确保系统安全和稳定性。 ### 回答3: Docker是一款流行的容器化平台,可以快速部署应用程序并提供可重复的环境。Shell脚本是一种用于自动化执行命令和处理数据的脚本语言。本文将介绍如何使用Shell脚本执行Docker命令。 首先需要安装Docker并了解其基本概念和命令Docker可以通过官方网站下载并安装。安装完成后,可以通过docker命令运行容器、构建镜像、运行命令等。例如下面的命令可以拉取一个镜像并启动一个容器: ``` docker run -d -p 80:80 nginx ``` 这个命令会下载最新版本的Nginx镜像并在容器中运行。容器会将主机的80端口映射到容器的80端口,以便访问Nginx的欢迎页面。现在可以通过http://localhost来访问该页面。 接下来,需要编写一个Shell脚本执行docker命令。一个最简单的脚本如下: ```bash #!/bin/bash docker run -d -p 80:80 nginx ``` 这个脚本可以运行Docker容器,并将Nginx服务暴露到主机的80端口。然而,这只是一个简单的例子。实际上,Shell脚本可以执行更复杂的任务,例如构建镜像、上传镜像、部署容器等。下面是一个更复杂的脚本: ```bash #!/bin/bash # Build a custom Docker image docker build -t my-image . # Push the image to a Docker registry docker push my-image:latest # Deploy the image to a Kubernetes cluster kubectl apply -f my-deployment.yaml ``` 这个脚本首先使用docker build命令构建一个自定义镜像,然后使用docker push命令将镜像上传到Docker仓库,最后使用kubectl apply命令在Kubernetes集群中部署容器。这个脚本可以通过运行chmod +x script.sh命令授权为可执行文件,并使用./script.sh命令运行。 总体而言,Shell脚本可以让管理员和开发者轻松地自动化执行Docker命令,从而快速、可靠地构建、部署和管理容器化应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值