[英]Bash: sudo: command not found
我有一個正在運行的容器,我希望執行數據庫備份。 顯然,來自sudo mkdir new_folder
的簡單命令,例如: sudo mkdir new_folder
導致: bash: sudo: command not found
我嘗試了什么(在直觀層面上)我使用docker exec -i -t 434a38fedd69/bin/bash
和 RUN 訪問了一個正在運行的容器
apt-get update
apt-get install sudo
當退出回到sudo mkdir new_folder
並嘗試執行sudo mkdir new_folder
但我收到相同的消息bash: sudo: command not found
Baresp@adhg MINGW64 /c/Program Files/Docker Toolbox/postgre
$ mkdir new_folder
mkdir: cannot create directory ‘new_folder’: Permission denied
Baresp@adhg MINGW64 /c/Program Files/Docker Toolbox/postgre
$ sudo mkdir new_folder
bash: sudo: command not found
順便說一句,我不確定這是否相關,但我使用的 docker-compose 文件是:
version: '2'
services:
postgres:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: changeme
PGDATA: /data/postgres
volumes:
- /data/postgres:/data/postgres
ports:
- "5432:5432"
networks:
- postgres
restart: unless-stopped
container_name: xx_postgres
pgadmin:
links:
- postgres:postgres
image: fenglc/pgadmin4
volumes:
- /data/pgadmin:/root/.pgadmin
ports:
- "5050:5050"
networks:
- postgres
restart: unless-stopped
container_name: xx_pgadmin
networks:
postgres:
driver: bridge
首先,您在docker exec
所做的任何事情都不會在該特定運行容器(映像副本)之外是持久的,因此,如果您希望將來從該映像運行的容器包含sudo
,則這些apt-get
命令需要進入 Dockerfile建立形象。 其中,由於您使用的是 docker docker-compose
,因此需要您首先制作一個 Dockerfile 並在 YAML 中指定其位置。
其次,“退出回到docker”是什么意思? 您在容器內所做的任何事情都不會對運行 Docker 本身的系統產生任何影響,但看起來您正在 Docker 容器內運行軟件安裝命令,然后期望這會導致新安裝的軟件在運行 Docker 的 Windows 系統上的容器外部可用。
要做容器中postgres數據庫的備份,首先要進入容器(和你做的方式類似):
docker exec -it postgres bash
(substitude postgres 與您從docker-compose ps
獲得的真實容器名稱)現在您以 root 身份在容器中。 這意味着,你不需要 sudo 任何東西。 接下來創建您的備份文件夾:
mkdir /tmp/backup
現在運行備份命令,從快速谷歌我發現以下(你可能更清楚):
pg_dumpall > /tmp/backup/filename
然后通過鍵入 exit 退出容器內的 shell。 從您的主機系統運行以下命令以將備份文件復制出容器:
docker cp postgres:/tmp/backup/filename .
(postgres 又是你的容器名)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.