Нет смысла защищать секреты внутри контейнеров, как уже было сказано, если есть доступ к контейнеру, их в любом случае раскроют.
Озаботьтесь тем, чтобы при сборке и деплое контейнера секреты не передавались в открытом виде (в зависимости от инструмента деплоя - разные методы защиты, например в ansible используйте ansible-vault, если docker-compose, используйте файлы, которые маунтят секрет, чтобы не писать в compose файле секрет в открытом виде) :
version: '3.8'
    secrets:
      db_password:
        file: ./secrets/db_password.txt # Путь к локальному файлу с секретами 
    services:
      database:
        image: postgres
        environment:
          POSTGRES_PASSWORD_FILE: /run/secrets/db_password
        secrets:
          - db_password
Секрет у вас будет маунтиться в /run/secrets/, но надо все равно использовать внешний файл с паролем. 
В swarm чуть более удобно - пароль берётся из секрета, который создаётся заранее 
docker swarm init
docker secret create <secret_name> <file_path>
 
или
echo "mysecretvalue" | docker secret create <secret_name> -
version: '3.8'
    secrets:
      db_password:
        external: true # Указывает, что секрет уже создан в swarm
    services:
      database:
        image: postgres
        environment:
          POSTGRES_PASSWORD_FILE: /run/secrets/db_password
        secrets:
          - db_password