首页
学习
活动
专区
圈层
工具
发布

在docker容器中使用非root用户执行脚本 (

应用容器化之后,在docker容器启动时,默认使用的是root用户执行命令,因此容器中的应用默认都是使用root用户来运行的,存在很高的安全风险,那么如何能够使用非root的业务用户来运行应用呢,下面我将举一个简单的例子来说明...该例子是在容器中使用自建的用户来运行一个简单的shell脚本,并将脚本输出日志持久到容器外部。接下来让我们来看从制作镜像到容器运行的全过程吧。...Sending build context to Docker daemon 3.072 kB Step 1 : FROM docker.io/ubuntu:14.04  ---> c69811d4e993...: 注意,在启动容器之前,需要将宿主机上/data/hepf/log目录的权限,否则容器启动时,脚本中的日志将没有权限写该目录,我直接将该目录权限修改成777了。...[root@host09 log]# cat /etc/passwd |grep hpf1 hpf1:x:1000:1000::/data1:/bin/bash[root@host09 log]# ll

2.5K10

在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)

前言: 在默认情况下,当 Docker 守护进程终止时,它将关闭正在运行的容器。不过,我们可以配置该守护进程,以便在该守护进程不可用时容器仍在运行。这种功能称为实时恢复。...在 Linux 上,默认的配置文件为/etc/docker/daemon.json vim /etc/docker/daemon.json { "live-restore": true } 2.Docker...$(pidof dockerd) 3.检查上面的配置是否成功 docker info | grep -i live 4.重启Docker,此时重启Docker时就容器就不会停止了 systemctl...Docker后,上面在运行的两个容器的运行时间分别为1小时、32分钟,容器并没有在我们重启Docker时停止,而是一直保持运行状态 。...以后不用再担心处理问题时必须重启 dockerd 时会影响现有业务了,如升级 docker 版本、dockerd 内存泄漏等!

5.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【AlmaLinux+Docker MySQL 实战】:自动化备份与恢复(备份策略·脚本编写·恢复演练)

    在 master宿主机终端执行 Docker 相关命令,脚本也写在宿主机里,通过 docker exec进入容器执行 mysqldump。...备份时可针对从库做逻辑备份(可选)。 在 node1宿主机终端执行 Docker 命令,若需要从容器里做恢复演练,可进入容器执行 mysql 命令。...备份脚本:通常挂载在主库宿主机的某个目录下,执行时会通过 docker exec mysql-master进入容器,调用 mysqldump导出数据。...": 如果容器中未安装 mysqldump(极少见,因为官方镜像自带),进入容器后安装: dockerexec-it mysql-master bash # 在容器内部 yum install-y mysql...mysql -uroot-p# 进入 MySQL STOP SLAVE;# 停止复制线程 exit# 退出 MySQL exit# 退出容器 shell 在宿主机停止容器 docker stop

    39810

    Docker 部署 Debian 全流程教程

    进入容器操作(验证部署结果):# 进入 debian-test 容器的交互式终端(bash shell)docker exec -it debian-test bash进入后可执行 Debian 系统命令...null # 保持容器后台运行(Debian 默认启动后会立即退出)第二步:启动容器服务进入 docker-compose.yml 所在目录:cd /data/debian-compose一键启动(自动创建挂载目录并启动容器...,在挂载目录创建文件:docker exec -it debian-prod bash echo "Debian 持久化测试" > /root/data/test.txt exit # 退出容器宿主机查看文件是否同步...:bash docker.sh)5.2 容器启动后立即退出?...解决方法:快速测试场景:添加 -it 参数进入交互式终端,避免退出:docker run -it --name debian-test library/debian:latest bash长期运行场景:

    27010

    Linux创建Playwright-Docker容器

    Please install them with the following command: 解决方法: 创建playwright docker容器,并在容器内运行脚本 在开始使用Docker之前,我们需要从.../opt/python_home:/app代表挂载宿主机目录/opt/python_home 到容器内的 /app,这样容器能访问主机的 Python 脚本等文件 进入挂载目录 root@a4e89ad0446d...:/# cd app root@a4e89ad0446d:/app# python3 testdocker.py 退出后如果需要重新进入 -a = attach 表示启动后把容器的标准输出、标准错误输出...myplaywright /app/start_all_crawler.sh 创建python3.10docker容器,并在容器内运行脚本 在开始使用Docker之前,我们需要从Docker Hub上拉取一个镜像...进入Docker容器 docker exec -it python3.10 /bin/bash 这将打开一个交互式终端,让我们能够与容器进行交互 将脚本上传到本机/opt/python_home中: 切换到容器的挂载目录

    49310

    使用Docker搭建Tomcat运行环境

    容器是在镜像的基础上来运行的,一旦容器启动了,我们就可以登录到容器中,安装自己所需的软件或应用程序。...,需要运行的命令,此时使用“/bin/bash”,表示启动后直接进入bash shell。...然后,移动Tomcat目录: # mv apache-tomcat-7.0.81/ /opt/tomcat/ 6.3 编写运行脚本 编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat。...run 最后,为运行脚本添加执行权限: # chmod u+x /root/run.sh 7 退出容器 当以上步骤全部完成后,可使用exit命令,退出容器。...随后,可使用如下命令查看正在运行的容器: docker ps 此时,应该看不到任何正在运行的程序,因为刚才已经使用exit命令退出的容器,此时容器处于停止状态,可使用如下命令查看所有容器: # docker

    1.2K10

    Docker 部署 AlmaLinux 全流程教程

    、重启更方便/bin/bash:启动后默认进入 Bash 命令行(AlmaLinux 默认 Shell)基础操作演示进入容器后,可执行以下命令熟悉环境:# 查看系统版本(确认是 AlmaLinux 9)...(如服务运行日志、错误日志)进入运行中的容器部署后如需操作容器(如安装软件、修改配置),执行以下命令:# 进入已启动的 alma-prod 容器docker exec -it alma-prod /bin...# 停止并删除容器(数据在挂载目录,不会丢失)docker compose logs -f # 实时查看容器日志(排查问题用)docker compose restart # 重启服务3....进入容器(以 alma-prod 为例)docker exec -it alma-prod /bin/bash# 2....验证挂载目录(在容器内创建文件,宿主机查看是否同步)echo "AlmaLinux production data" > /var/data/test.txtexit # 退出容器# 4.

    19110

    【云原生 | Docker】Linux 定时自动化备份Mysql数据到本地 & Windows 最佳实践,确定不来看看?

    保存和退出:保存Cron表的修改,并退出编辑器。 测试备份脚本:运行备份脚本进行测试,确保备份正常工作。在终端中执行bash /path/to/backup.sh命令,检查备份文件是否生成。...在执行备份命令时,需要替换用户名、密码、数据库名、表名和备份文件路径为实际的值。...如果是在docker之中,则需要先进入到docker中 要备份Docker中的MySQL,您可以使用以下步骤:查找MySQL容器的名称或ID:运行以下命令来获取正在运行的MySQL容器的名称或ID:docker...ps 进入MySQL容器:使用以下命令进入MySQL容器的命令行界面:docker exec -it 容器名称或ID> bash 在MySQL容器中执行备份命令:在MySQL容器的命令行界面中,可以使用...MySQL容器:完成备份后,使用以下命令退出MySQL容器的命令行界面:exit 将备份文件从容器复制到宿主机:在宿主机上使用以下命令将备份文件从MySQL容器复制到宿主机的特定位置:docker cp

    1.2K51

    Hexo -43- 友链朋友圈 后端部署

    部署方式来说,需要进到容器内部修改配置 创建容器后,进入容器: docker exec -it circle bash 进入 /home/fcircle_src/hexo_circle_of_friends...容器内创建启动服务脚本 进入容器 docker exec -it circle bash 在 /home/fcircle_src 创建启动脚本文件 setup.sh #!.../api/main.py > /dev/null 2>&1 & 这样在服务器(容器外)就可以通过 docker exec 命令启动这个脚本实现服务启动了 修改容器后可以通过 docker commit...命令保存配置于自启动脚本到 docker image 创建自动运行脚本 在 /usr/local/friend-circle 文件夹下创建 friend_circle.sh 文件,内容为: #!.../setup.sh 该脚本在创建容器后,可以复活容器并启动友链朋友圈服务 systemctl 添加服务 添加 systemctl 服务随开机启动,创建 /lib/systemd/system/friend-circle.service

    93210

    Dockerfile命令及实践构建一个网站

    镜像的创建有两种方式: 1、手动修改容器内容,然后docker commit提交容器为新的镜像 2、通过在dockerfile中定义一系列的命令和参数构成的脚本,然后这些命令应用于基础镜像,依次添加层,...例如centos 镜像默认的CMD是/bin/bash,直接docker run -it centos 会直接进入bash解释器。...容器就是为了主进程而存在的,主进程如果退出了,容器也就失去意义了,自动退出。...off;" ENTRYPOINT 和 CMD的区别及用法 ENTRYPOINT 和CMD的区别及用法 ENV和ARG都是给容器设置环境变量 区别在于ENV无论是在镜像构建时,还是容器运行时,该变量都可以使用...(1)进入容器 docker exec -it 容器id bash (2)修改容器内的程序 cat test_flask.py (3)退出容器,重启容器 exit docker restart 容器id

    1.6K20

    Docker 部署 openEuler 教程及常见问题解决

    (保持终端连接,能直接输入命令)--name openeuler-test:给容器指定固定名称,后续停止、重启不用记容器 ID/bin/bash:启动后默认进入 Bash 命令行(openEuler 默认...Shell)特殊架构需加 --platform=linux/arm64 等参数,与拉取时一致基础操作演示进入容器后,可执行以下命令熟悉 openEuler 特性:# 查看系统版本(确认是 24.03-...客户端测试)dnf install -y docker-clientdocker --version# 退出容器:临时退出(容器继续运行)按 Ctrl+P+Q;完全退出(停止容器)输入 exit2.2...进入容器(以 openeuler-prod 为例)docker exec -it openeuler-prod /bin/bash# 2....解决方案:启动时指定后台运行命令,比如:docker run -d --name openeuler-test openeuler/openeuler:24.03-lts-sp2 /bin/bash -

    35610

    docker容器中的前台程序和后台程序,为什么一定要前台运行

    例子:docker run -d --name my-redis redis bash# 指定命令是bash,但显然bash在容器起来后,很快就会结束,导致没有前台进程,故容器处于退出状态Docker容器后台运行...容器运行的命令如果不是那些一直挂起的命令(比如运行ping,sleep),就是会自动退出的。而上面的代码中bash就是需要执行的指定的命令。命令如果执行完毕了,或者叫指定的应用终结时,容器会自动停止。...2.使用交互界面后退出容器docker run -it --name my-redis redis bash之后会进入容器,如果想保持容器后台运行,我们可以 Ctrl + p + q,再次查看容器运行状态...当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作,建议开发时使用。...name或容器ID进入到容器中:如果我们在启动容器的时候指定-name选项,我们可以:docker exec -it container_name bash没指定name,我们可以通过docker ps

    4.6K30

    Docker必备基础知识

    可根据需要下载 2)docker基本操作:安装、仓库设置、启动、关闭、退出、进入 docker安装 https://yeasy.gitbook.io/docker_practice/install/ubuntu...--help来查看 # 关闭容器 docker stop -t=ContainerID 或 docker kill -t=ContainerID # 暂时退出镜像 exit # 重新进入镜像 sudo...images #查看本地仓库内的镜像 # 用image启动一个容器 docker run -it ubuntu:18.04 bash # 暂时退出并重新进入容器 exit docker ps -a sudo...docker exec -it 067 /bin/bash #此处067是上一指令查到的需要进入的容器ID # 在容器内进行操作 和ubuntu系统内的操作一致 cat /etc/os-release...或 VOLUME 在image启动时可替换 docker run -d -v mydata:/data xxxx #其中的 -v mydata:/data 就是挂载宿主机的卷到容器内 EXPOSE

    96420

    centos7 下 基于docker搭建javatomcat (方式一)

    CentOS 7 中 Docker 的安装 Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。...Docker运行,通过下面的命令参数启动容器: docker run -i:表示以“交互模式”运行容器 -t:表示容器启动后会进入其命令行 -v:表示需要将本地哪个目录挂载到容器中.../bin/bash 安装jdk/tomcat 创建好容器自动进入了容器 然后安装JDK和Tomcat等(这步最重要的就是配置tomcat环境,配置不好重启容器不能运行) 可以用命令【docker...,设置立即生效: root@29ca665c0a12:/data# source /etc/profile Tomcat 启动脚本 创建start.sh启动脚本 root@29ca665c0a12...1 2 异常: 启动一个有 nat 映射端口的容器时,iptables 报 No chain/target/match by that name  ?

    1.3K50

    二、php环境之nginx的docker镜像制作

    同时用镜像做服务还一个好处,php站点容易被黑挂马什么的,这样发现被黑了抛弃旧的容器,直接重启一个新的容器即可,不用再麻烦处理了,以前有个被黑挂马的站藏的很深,它修改了内核系统命令,你登录服务器时主动杀死挖矿程序...版本选择 见后面的常见问题归纳 1 docker pull centos 启动并进入该容器准备安装nginx docker run -it centos /bin/bash 先安装nginx所需的相关依赖包...中已经完成,我们来提交创建我们刚才的容器做成镜像 #容器内执行exit退出该容器 exit #查看容器信息 [root@xxx]docker ps -a CONTAINER ID IMAGE...#当然也可以直接运行nginx启动,但后续脚本最后写全地址和指定配置比较好 nginx -t nginx #Ctrl + Q 可以退出容器不关闭容器 #docker ps CONTAINER ID...#程序变动直接在服务器的/wwwdocker/wwwroot下修改即可 #nginx配置变更后 执行下面命令重启容器内部的nginx即可,不需要再进入了 docker exec 容器 ID 或容器名

    1.2K30
    领券