Faits :
A.
Le 16 août 2005, Z._ (ci-après: le locataire) a conclu avec X._ (ci-après: la bailleresse ou la coopérative) un contrat de bail à loyer portant sur un appartement subventionné de deux pièces, d'une durée initiale d'un an dès le 1 er septembre 2005 et renouvelable ensuite chaque année. Le loyer mensuel était fixé à 685 fr., acompte de chauffage, eau et taxes d'épuration compris.
Sous l'intitulé «Garantie», l'art. 5 du contrat contient les termes suivants:
" La location de locaux de la coopérative nécessite l'adhésion de l'intéressé à la coopérative. La garantie de loyer se fait donc sous forme d'achat de parts sociales (...). Ainsi, avec le paiement complet des parts sociales le locataire devient membre de la coopérative. "
Sous le titre «Obligations du locataire (art. 9 RULV) », l'art. 8 let. c du contrat est libellé comme suit:
" En complément à l'art. 9 des règles et usages locatifs du canton de Vaud [RULV], le locataire s'engage: (...) let. c) à ne pas héberger de chiens, la présence de ceux-ci étant interdite dans l'immeuble. "
Selon l'art. 36 al. 2 let. f des statuts de la bailleresse - qui ont été remis au locataire en annexe au bail selon l'indication figurant au bas de la deuxième page de ce dernier -, le fait d'héberger des animaux sans autorisation expresse de la gérance est un motif de congé découlant du droit du bail.
Dans le formulaire intitulé «proposition de location» que le locataire a signé le 8 août 2005, il est également indiqué que "la garde de tout animal n'est pas autorisée".
Lors d'une assemblée générale tenue le 17 avril 2007, les statuts de la bailleresse ont été modifiés afin de supprimer l'obligation faite aux locataires d'être simultanément membres-coopérateurs pour pouvoir disposer d'un logement. Les locataires avaient alors à choisir entre le statut de "simple locataire régi par les RULV" - ce qu'a fait le locataire - et le statut de coopérateur.
En 2015, le locataire a fait l'acquisition d'un chien de type Husky.
La bailleresse a résilié le contrat de bail le 28 mai 2015, puis a renouvelé le congé le 30 juin pour le 31 août 2015. A l'heure actuelle, elle ne se prévaut plus de ces résiliations.
Dans un courrier du 1 er septembre 2015, la coopérative a rappelé au locataire la teneur de l'art. 8 du contrat de bail ainsi que de l'art. 36 de ses statuts et l'a sommé de se débarrasser de son chien d'ici au 30 septembre 2015 ou de quitter les lieux.
Le locataire n'ayant pas donné suite à cette requête, la bailleresse a une nouvelle fois résilié le contrat de bail le 4 novembre 2015 pour le 31 décembre 2015 par formule officielle mentionnant le motif suivant:
" possession d'un grand chien dans un 2 pièces, non autorisé par la gérance; violation des statuts art. 36f de X._; violation du bail à loyer art. 8c; violation du devoir de diligence: déjection du chien dans les parties communes; plaintes du chien dans l'appartement."
B.
Le locataire a saisi l'autorité de conciliation, laquelle a rendu une proposition de jugement puis, après opposition de la coopérative, a délivré à cette dernière une autorisation de procéder.
Par requête du 7 avril 2016, la bailleresse a saisi le Tribunal des baux du canton de Vaud. Par jugement du 23 février 2017, le tribunal a prononcé que le contrat de bail avait valablement pris fin le 31 décembre 2015 et a donné l'ordre au locataire de quitter et rendre libre de tous occupants et de tous biens lui appartenant l'appartement en question dans un délai de trente jours dès jugement définitif et exécutoire. En substance, les premiers juges ont considéré que le locataire était lié par une clause contractuelle - l'art. 8 let. c - interdisant de manière absolue la détention de chiens et que son irrespect constituait une violation grave au sens de l'<ref-law>, justifiant la résiliation anticipée du bail à loyer, dès lors que le locataire, dûment sommé, avait persisté dans son attitude. Il importait peu que le locataire ne fût plus coopérateur au moment de la résiliation litigieuse. La bailleresse était fondée à imposer cette obligation dans le contrat, compte tenu de l'art. 36 al. 2 let. f de ses statuts, lequel primait sur l'art. 15 RULV qui autorisait la détention de chiens à condition qu'ils ne gênent pas les autres locataires ou qu'ils ne provoquent ni dégâts, ni salissures à l'immeuble ou à ses abords.
Statuant le 25 avril 2018, la Cour d'appel civile du Tribunal cantonal du canton de Vaud a admis l'appel formé par le locataire et a prononcé que la résiliation anticipée du bail était inefficace. L'arrêt cantonal peut se résumer comme suit. Le locataire n'était pas lié par une interdiction absolue de détenir un chien. Certes, les dispositions statutaires de la coopérative, lesquelles contenaient une semblable interdiction, primaient les RULV qui autorisaient la détention de chiens à certaines conditions. Cela étant, lors de l'assemblée générale du 17 avril 2007, les statuts de la bailleresse avaient été modifiés et le locataire avait choisi de demeurer simple locataire régi par les RULV, et non plus coopérateur. Dans ses nouveaux statuts, la bailleresse avait précisé que les locataires qui avaient choisi le statut de simples locataires étaient régis par les RULV. Cette indication ne pouvait, objectivement et de bonne foi, se comprendre que dans le sens où seules les RULV régiraient désormais la relation contractuelle. Ainsi, le locataire était fondé à se prévaloir de l'art. 15 RULV. Les juges cantonaux ont ensuite examiné si le locataire avait contrevenu à cette disposition dans une mesure justifiant l'application de l'<ref-law>. Ils ont constaté qu'il n'était pas établi que son chien aurait gêné les autres locataires ni provoqué des dégâts ou des salissures à l'immeuble ou à ses abords. Au contraire, les locataires avaient confirmé à deux reprises qu'ils n'étaient pas dérangés par l'animal et qu'ils n'avaient jamais vu celui-ci faire ses besoins dans l'immeuble. Il n'y avait dès lors pas violation de l'art. 15 RULV et le locataire n'avait pas enfreint son devoir de diligence au sens de l'<ref-law>.
C.
La bailleresse interjette un recours en matière civile, concluant à la réforme de l'arrêt cantonal en ce sens que l'appel est rejeté et le deuxième chiffre du dispositif, par lequel la Cour d'appel civile a statué à nouveau pour prononcer l'inefficacité de la résiliation de bail, est annulé.
Le locataire et la cour cantonale n'ont pas été invités à se déterminer.

Considérant en droit :
1.
1.1. Dirigé contre une décision rendue en matière civile (<ref-law>), le recours a été interjeté en temps utile (<ref-law>) par la bailleresse qui a succombé dans ses conclusions prises devant l'autorité précédente (<ref-law>). Au surplus, l'arrêt attaqué a été prononcé sur appel par le tribunal supérieur du canton (<ref-law>), dans une cause relevant du droit du bail à loyer dont la valeur litigieuse atteint le seuil déterminant de 15'000 fr. (<ref-law>; cf. <ref-ruling> consid. 1.1 p. 390 s.; <ref-ruling> consid. 1.1 p. 197).
La recourante conclut à la réforme de l'arrêt cantonal, en ce sens que l'appel est rejeté et le deuxième chiffre du dispositif, par lequel la Cour d'appel civile a statué à nouveau et prononcé l'inefficacité de la résiliation de bail, est annulé. Cette formulation alambiquée des conclusions n'est pas des plus heureuses. En effet, l'<ref-law> permet au Tribunal fédéral de réformer la décision attaquée, c'est-à-dire de statuer lui-même sur le fond comme l'autorité précédente aurait dû le faire, sans qu'il soit pour autant saisi d'un appel à admettre ou à rejeter. Cela étant, les conclusions de la recourante peuvent se comprendre comme une demande de juger au fond de la même manière que la première instance, c'est-à-dire constater la validité de la résiliation anticipée du bail au 31 décembre 2015 et donner ordre au locataire de libérer les locaux dans un délai de 30 jours dès jugement définitif et exécutoire. Dans ces conditions, il convient d'entrer en matière sur le recours, sous réserve de l'examen de la recevabilité des griefs particuliers.
1.2. Le recours en matière civile peut être exercé pour violation du droit fédéral (<ref-law>), y compris le droit constitutionnel (<ref-ruling> consid. 2.1 p. 247; <ref-ruling> consid. 2.4 p. 313).
Le Tribunal fédéral applique le droit d'office (<ref-law>). Compte tenu de l'exigence de motivation contenue à l'art. 42 al. 1 et 2 LTF, sous peine d'irrecevabilité (<ref-law>), le Tribunal fédéral n'examine en principe que les griefs invoqués, sauf en cas d'erreurs juridiques manifestes. Il n'est pas tenu de traiter, comme le ferait une autorité de première instance, toutes les questions juridiques qui se posent, lorsque celles-ci ne sont plus discutées devant lui (<ref-ruling> consid. 2; <ref-ruling> consid. 2; <ref-ruling> consid. 1.3). Par exception à la règle selon laquelle il applique le droit d'office, il n'examine la violation d'un droit constitutionnel, tel que la prohibition de l'arbitraire (art. 9 Cst.) que si le grief a été invoqué et motivé de façon détaillée (<ref-law>; <ref-ruling> consid. 1.4 in fine).
1.3. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). Il ne peut rectifier ou compléter les constatations de l'autorité précédente que si elles sont manifestement inexactes ou découlent d'une violation du droit au sens de l'<ref-law> (<ref-law>). "Manifestement inexactes" signifie ici "arbitraires" (<ref-ruling> consid. 1.3.1 p. 253; <ref-ruling> consid. 2 p. 117; <ref-ruling> consid. 1.5). Encore faut-il que la correction du vice soit susceptible d'influer sur le sort de la cause (<ref-law>)
La critique de l'état de fait retenu est soumise au principe strict de l'allégation évoqué ci-dessus (<ref-ruling> consid. 2.3 p. 266 et les références). La partie qui entend attaquer les faits constatés par l'autorité précédente doit donc expliquer clairement et de manière circonstanciée en quoi ces conditions seraient réalisées (<ref-ruling> consid. 1.3.1 p. 18 et les références). Si elle souhaite obtenir un complètement de l'état de fait, elle doit aussi démontrer, par des renvois précis aux pièces du dossier, qu'elle a présenté aux autorités précédentes en conformité avec les règles de procédure les faits juridiquement pertinents à cet égard et les moyens de preuve adéquats (<ref-ruling> consid. 2 p. 90). Si la critique ne satisfait pas à ces exigences, les allégations relatives à un état de fait qui s'écarterait de celui de la décision attaquée ne pourront pas être prises en considération (<ref-ruling> consid. 1.3.1 p. 18). Aucun fait nouveau ni preuve nouvelle ne peut être présenté à moins de résulter de la décision de l'autorité précédente (<ref-law>).
En l'espèce, la recourante fonde son recours sur la violation du droit fédéral et ne se plaint nulle part d'arbitraire dans la constatation des faits. La motivation du recours est pourtant jalonnée de faits qui ne ressortent pas de l'arrêt attaqué et dont le Tribunal fédéral ne tiendra dès lors pas compte.
2.
2.1. La recourante soutient en premier lieu que la cour cantonale a fait une mauvaise interprétation de l'art. 8 let. c du contrat de bail à loyer, lequel serait demeuré inchangé à l'issue de la modification des dispositions statutaires de la coopérative. Il convient de relever d'emblée que le grief est irrecevable dans la mesure où il se fonde sur une série de faits ne résultant pas de la décision entreprise (cf. consid. 1.3 supra).
2.2. Dans le système de la coopérative d'habitation, le locataire-coopérateur et la société coopérative d'habitation sont liés par deux rapports de droit: un rapport coopératif, de caractère social - qui lie le coopérateur à la société coopérative - et un rapport d'obligation, de caractère individuel, qui découle du contrat de bail - qui lie le locataire à la société bailleresse. Ces deux rapports sont fondés sur un accord de volonté des parties (<ref-ruling> consid. 2.2 p. 68; <ref-ruling> consid. 5.2.3 p. 163).
Dans le cas présent, il n'y avait plus de rapport coopératif entre les parties après que, en 2007, les statuts de la bailleresse avaient été modifiés afin de supprimer l'obligation faite aux locataires d'être membres-coopérateurs pour disposer d'un logement et que le locataire avait choisi de demeurer "simple locataire régi par les RULV". Examinant si les parties avaient, à ce moment-là, modifié le rapport d'obligation qui les liait toujours, la cour cantonale a conclu que tel était le cas, sur la base d'une interprétation objective des déclarations de l'époque de la bailleresse. Les juges vaudois ont ainsi constaté que, dans ses nouveaux statuts adoptés lors de son assemblée générale du 17 avril 2007, la coopérative avait précisé que les locataires qui avaient choisi le statut de simple locataire étaient régis par les RULV. La précision n'avait de sens que si elle impliquait un changement par rapport à la situation antérieure. Si la bailleresse entendait s'en tenir aux conditions antérieures, la mention en cause n'avait pas lieu d'être, puisqu'il aurait au contraire fallu préciser qu'en dérogation aux RULV, les clauses contractuelles contraires restaient valables. Dès lors, la mention précitée ne pouvait, objectivement et de bonne foi, que se comprendre dans le sens que la relation contractuelle serait désormais régie exclusivement par les RULV. Par cette communication, la bailleresse avait ainsi exprimé de manière univoque sa volonté de renoncer aux dérogations que l'art. 1 al. 1 let. b de l'arrêté du Conseil d'État du canton de Vaud déclarant de force obligatoire générale le contrat-cadre de baux à loyer comprenant les dispositions paritaires romandes et les règles et usages locatifs du canton de Vaud [RULV] du 8 octobre 2001 (renouvelé le 4 juin 2008 puis le 21 mai 2014; RSV 221.217.1) lui aurait permis de maintenir. Dans ces conditions, le locataire était fondé à se prévaloir des dispositions impératives des RULV et à en déduire qu'il avait le droit de détenir un chien, aux conditions posées par l'art. 15 RULV.
La recourante ne s'en prend pas à cette interprétation objective de la volonté exprimée par la bailleresse. En revanche, elle cherche à démontrer que la réelle et commune intention des parties portait uniquement sur la modification des dispositions statutaires, et non du contrat de bail. Or, la cour cantonale n'a pas procédé à une interprétation subjective et la recourante ne se plaint pas à cet égard d'une violation du principe de la priorité de l'interprétation subjective déduit de l'<ref-law>, laquelle violation est d'ailleurs tout sauf évidente. Il s'ensuit que le grief soulevé dans le recours manque sa cible et ne peut être que rejeté.
3.
3.1. En deuxième lieu, la recourante fait valoir que l'art. 1 al. 1 let. b, troisième tiret, de l'arrêté précité du Conseil d'État vaudois a été violé.
Aux termes de la disposition invoquée, la force obligatoire générale est conférée au contrat-cadre dénommé «Dispositions paritaires romandes et règles et usages locatifs du canton de Vaud» (RULV), sous la réserve que, dans l'application du contrat-cadre à des coopératives, leur but et leurs dispositions statutaires sont à respecter. L'art. 4 al. 2 des arrêtés du Conseil fédéral du 5 septembre 2001 et du 20 juin 2014 relatifs à la déclaration de force obligatoire générale du contrat-cadre romand de baux à loyer (FF 2001 5509; FF 2014 5087) prévoit également que l'application du contrat-cadre à des coopératives doit respecter leur but et leurs dispositions statutaires. La recourante en déduit que l'art. 36 al. 2 let. f de ses statuts a la primauté sur les RULV et demeure opposable au locataire.
3.2. La Cour d'appel civile ne remet pas en question la primauté des dispositions statutaires sur les RULV contraires. Mais elle considère que les parties n'étaient plus liées par un rapport social après le choix du locataire à la suite de la modification des statuts de la coopérative et qu'à partir de ce moment-là, elles avaient la possibilité de soumettre le rapport d'obligation subsistant entre elles exclusivement aux RULV, ce qui pouvait être déduit des déclarations de l'époque de la bailleresse interprétées selon le principe de la confiance. Lorsque la recourante prétend qu'il n'était pas possible de déroger à l'ordre prévu dans la disposition précitée, cela revient à affirmer que les obligations statutaires de la coopérative d'habitation continueraient de par la loi à s'imposer à un locataire qui n'est plus coopérateur. Tel ne saurait toutefois être le sens qu'il convient de prêter à la disposition susmentionnée et la recourante ne motive d'ailleurs pas davantage son grief, qui ne peut être qu'écarté pour autant qu'il soit recevable au sens de l'<ref-law>.
4.
En troisième lieu, la recourante invoque une violation de l'<ref-law>. Dans le cadre de l'interprétation objective à laquelle elle s'est livrée, la cour cantonale aurait protégé la prétendue bonne foi du locataire malgré toute une série de faits qui démontreraient la mauvaise foi de celui-ci.
Les faits auxquels la recourante fait référence ne ressortent toutefois pas de l'arrêt attaqué et ne seront dès lors pas pris en considération (cf. consid. 1.3 supra). Privé de fondement, le moyen ne peut être qu'écarté.
5.
5.1. En dernier lieu, la recourante s'en prend à la constatation des juges cantonaux selon laquelle le chien du locataire ne gêne pas les autres locataires, ni n'a provoqué de dégâts ou salissures à l'immeuble ou à ses abords, les locataires ayant, au contraire, confirmé à deux reprises qu'ils ne sont pas dérangés par l'animal, qu'ils n'ont jamais vu faire ses besoins dans l'immeuble.
Sur ce point, la recourante ne se plaint toutefois pas d'arbitraire, de sorte que le grief se révèle irrecevable (cf. consid. 1.3 supra).
6.
Faute d'autres griefs formulés dans le recours, le Tribunal fédéral peut se dispenser d'examiner des questions juridiques supplémentaires (cf. consid. 1.2 supra).
Sur le vu de ce qui précède, le recours doit être rejeté dans la mesure où il est recevable.
7.
La recourante, qui succombe, prendra à sa charge les frais judiciaires (<ref-law>). Elle n'aura pas à verser de dépens à l'intimé qui n'a pas été invité à se déterminer.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge de la recourante.
3.
Le présent arrêt est communiqué aux mandataires des parties et à la Cour d'appel civile du Tribunal cantonal du canton de Vaud.
Lausanne, le 28 juin 2018
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann