Отделка внутри контейнера


Утепляем контейнер. Утеплить контейнер изнутри или снаружи?

В одной из своих статей «Дома из контейнеров своими руками» мы упомянули о том, что утеплить контейнер будет правильнее снаружи. В той статье мы написали дословно следующее: «Утепление дома из контейнеров (как и любого другого) производится снаружи. Утеплять можно как листовым материалом, так и методом напыления прямо на стены…», — однако в комментариях к статье, в ответе на вопрос одного из читателей мы посоветовали утеплить контейнер изнутри, что вызвало вопросы у некоторых читателей.

Так Денис из Подмосковья задаёт вопрос: «Все-таки есть вопрос по утеплению — в самой статье вы пишите, что утеплять нужно снаружи — чтобы изолировать контейнер от воздействия осадков, а в комментариях советуете утеплять изнутри. Все-таки как лучше делать и почему? И нет ли смыла делать утепление с обеих сторон?»

На наш взгляд, ответ на вопрос о том, с какой стороны стоит утеплять контейнер — довольно неоднозначен, поэтому мы решили посвятить ему эту, отдельную, статью.

То, что мы будем описывать ниже – одинаково справедливо и для утепления любого традиционного дома и для дома, сделанного из контейнеров. Мы все понимаем, что теплоизоляция нужна для того, чтобы сохранять тепло внутри теплоизолированного объёма. Соответственно чем лучше теплоизоляция, тем дольше сохраняется внутри тепло. Надо понимать, что под хорошей теплоизоляций понимается не только толщина теплоизоляционного слоя! Нужно стараться снизить любые утечки тепла, причиной которых могут быть:

  1. Щели;
  2. Мостики холода;
  3. Любые элементы с высокой теплопроводностью.

Теперь поясним по пунктам.

Надеюсь, что с пунктом №1 и так всё ясно? Если в доме будут щели (где угодно) которые позволят образовываться сквознякам, то как бы Вы не утеплялись и как бы Вы не отапливали свой дом – всё тепло будет вытягиваться сквозняками.

По пункту №2 – под мостиком холода понимается такая часть конструкции, которая обладает высокой теплопроводностью и  через которую происходит повышенный теплообмен. Попробуем «пояснить на пальцах», — представьте себе хорошо утепленный дом, внутри которого плюс 25°С, в то время, как на улице минус 25°С. Теперь проткните стену такого дома металлическим ломом и оставьте его в стене. Металл является отличным проводником тепла, поэтому этот лом будет являться мостиком холода, по нему холод будет попадать внутрь помещения, как электрический ток протекает по проводам. Это очень условное пояснение. Чаще всего мостиками холода являются: металлические дверные коробки; различные стальные анкера, прошивающие стены дома насквозь; неутепленные бетонные элементы конструкции, соединяющие внутренний объем помещения с улицей; неправильно установленные оконные блоки; неутепленные оконные и дверные проемы и т.д. В одной из наших статей: «Утепление окон. Утепление оконного проема», — мы подробно описывали вариант образования мостика холода в неутепленном оконном проеме.

По пункту №3 – имеются в виду участки ограждающих конструкций с высокой теплопроводностью. Например, окна с тонким стелопакетом, у которых толщина слоя воздушной прослойки между стеклами не обеспечивает нормальной теплоизоляции. Или стены выполнены из материала с высокой теплопроводностью, имеют малую толщину и не утеплены. Так, например, даже из такого «холодного» материала как железобетон можно сделать «теплую» стену в том случае, если её толщина будет около 6 метров. Это не опечатка! Именно около ШЕСТИ метров толщиной. При такой толщине её можно даже не утеплять (если мы говорим о климатической зоне Подмосковья). Ниже приводим таблицу минимальных толщин стен, выполненных из материалов, имеющих разную теплопроводность. В таблице приведен примерный расчёт толщины стен из однородного материала для выполнения требований СНиП 23-02-2003 «Тепловая защита зданий» (для сравнительного анализа используются данные климатической зоны г. Москвы и Московской области)

 

Материал стены Коэффициент теплопроводности Требуемая толщина стены в метрах
Вспененный пенополистирол 0,039 0,12
Минеральная вата 0,041 0,13
Газосиликат D500 0,12 0,385
Пенобетон D600 0,14 0,45
Клееный деревянный брус 0,16 0,50
Керамзитобетон 0,47 1,48
Кладка из дырчатого кирпича 0,5 1,57
Шлакобетон 0,6 1,88
Кладка из силикатного полнотелого кирпича 0,76 2,38
Железобетон 1,7 5,33

 

Утепление контейнера снаружи методом напыления теплоизоляционного слоя

А вот теперь давайте попробуем ответить на вопрос, с какой стороны утеплять контейнер – снаружи или изнутри. Сразу скажем, что в принципе можно утеплять как снаружи, так и изнутри, но чтобы сделать правильный, окончательный выбор, надо учесть некоторые дополнительные моменты, обусловленные тем, что металл – довольно специфический материал, координально отличающийся от других материалов своей высокой теплопроводностью, отсутствием пористости и высокой склонностью к коррозии. Именно эти три особенности и вносят свою специфику в выбор стороны для утепления.

Действительно, обычно все дома, построенные из таких традиционных строительных материалов, как бетон, пенобетон и им подобных — правильнее утеплять снаружи, так как:

  • Во-первых, — эти материалы пористые и могут увлажняться (напитываться влагой). Стены из таких материалов нужно защитить от промерзания, поэтому их утепляют снаружи иначе они промерзнут и содержащаяся в них влага замерзнет. При замерзании вода расширяется и может образовывать микротрещины, разрывая материал, из которого построена стена (исключением являются материалы, обладающие достаточной эластичностью).
  • Во-вторых, — утепление изнутри зачастую создаёт проблему, связанную с тем, что любая внутренняя стена (из материала с высокой теплопроводностью), примыкающая к наружной, может превратиться в мостик холода. Представьте себе дом, построенный из железобетона. Теперь представьте себе, что в доме есть внутренние стены (перегородки), выполненные из железобетона и примыкающие к внешней стене. Представьте себе, что Вы решили утеплять такой дом изнутри. В этом случае внешние стены промерзают насквозь и холод передается в примыкающие к внешней стене внутренние стены. Представили себе этот ужас? Изолировать ещё и внутренние стены с обеих сторон? Холод уйдет в примыкающие к ним потолок и пол…. Изолировать ещё потолочные и половые плиты с обеих сторон? Или исключить прямое примыкание потолочных, половых плит и стен к внешней стене? Конечно, в такой ситуации лучше утеплять дом снаружи.

Всё, описанное выше, преследует цель – не допустить образования точки росы внутри стены.

А теперь от традиционных материалов вернемся к нашему контейнеру, сделанному из железа, и попробуем вспомнить, что такое точка росы. Точка росы — это температура, до которой должен охладиться воздух, чтобы содержащийся в нём пар достиг состояния насыщения и начал конденсироваться в росу. Конечно, данный параметр будет зависеть ещё и от атмосферного давления, но это уже тонкости, которые мы, в данной статье, можем не учитывать. Проще говоря, точка росы — это температура, при которой выпадает конденсат (влага из воздуха превращается в воду).

Таблица зависимости точки росы от температуры и влажности воздуха

Температура воздуха, °С 0 2,5 5 7,5 10 12,5 15 17,5 20 22,5 25
Относительная влажность %
20 −20 −18 −16 −14 −12 −9,8 −7,7 −5,6 −3,6 −1,5 −0,5
25 −18 −15 −13 −11 −9,1 −6,9 −4,8 −2,7 −0,6 1,5 3,6
30 −15 −13 −11 −8,9 −6,7 −4,5 −2,4 −0,2 1,9 4,1 6,2
35 −14 −11 −9,1 −6,9 −4,7 −2,5 −0,3 1,9 4,1 6,3 8,5
40 −12 −9,7 −7,4 −5,2 −2,9 −0,7 1,5 3,8 6,0 8,2 10,5
45 −10 −8,2 −5,9 −3,6 −1,3 0,9 3,2 5,5 7,7 10,0 12,3
50 −9,1 −6,8 −4,5 −2,2 0,1 2,4 4,7 7,0 9,3 11,6 13,9
55 −7,8 −5,6 −3,3 −0,9 1,4 3,7 6,1 8,4 10,7 13,0 15,3
60 −6,8 −4,4 −2,1 0,3 2,6 5,0 7,3 9,7 12,0 14,4 16,7
65 −5,8 −3,4 −1,0 1,4 3,7 6,1 8,5 10,9 13,2 15,6 18,0
70 −4,8 −2,4 0,0 2,4 4,8 7,2 9,6 12,0 14,4 16,8 19,1
75 −3,9 −1,5 1,0 3,4 5,8 8,2 10,6 13,0 15,4 17,8 20,3
80 −3,0 −0,6 1,9 4,3 6,7 9,2 11,6 14,0 16,4 18,9 21,3
85 −2,2 0,2 2,7 5,1 7,6 10,1 12,5 15,0 17,4 19,9 22,3
90 −1,4 1,0 3,5 6,0 8,4 10,9 13,4 15,8 18,3 20,8 23,2
95 −0,7 1,8 4,3 6,8 9,2 11,7 14,2 16,7 19,2 21,7 24,1
100 0,0 2,5 5,0 7,5 10,0 12,5 15,0 17,5 20,0 22,5 25,0

Например, если внутри помещения температура +20°С, и влажность внутри помещения 60%, то на любой поверхности с температурой ниже +12°С выпадет конденсат (см. таблицу выше).

Если говорить о традиционных материалах, таких как бетон, то надо учитывать то, что точка росы это не только температурная точка, это ещё точка, имеющая своё геометрическое положение в толще материала. Например, если мы говорим о таком пористом материале как бетон, увлажненном и имеющем некоторую толщину, то при разнице температур с разных сторон, точка росы будет находиться где-то внутри данного материала, где сочетание температуры и влажности позволит пару конденсироваться в воду.

Когда мы говорим о контейнере, сделанном из железа, мы понимаем, что металл не является пористым материалом, поэтому в его толще не может быть пара, способного конденсироваться в воду. Металл не паропроницаем! Следовательно, из всех возможных вариантов, можно оставить лишь те два, при которых точка росы будет расположена либо на внутренней, либо на наружной поверхности металлической стены контейнера. Теперь давайте определимся, чем может нам грозить каждый из этих вариантов. Коррозией? Возможно, но от неё легко защититься, для этого надо всего лишь хорошенько покрыть поверхность устойчивым гидроизолирующим материалом будь то краска или битумно-полимерная мастика. Итак, от коррозии мы защитились, чем ещё нам грозит выпадение росы на внутренней или наружной стороне стенок контейнера? Если роса выпадает на наружной стороне стенок контейнера – в этом нет проблем, такая влага ничем не будет отличаться от осадков. Если роса будет образовываться на внутренней стороне стен, она начнет стекать на пол, образовывая лужи, станет причиной сырости, возможно образование грибка и плесени.

Таким образом, можно утвердительно сказать, что нам надо утеплить контейнер так, чтобы исключить выпадение росы с внутренней стороны!

Теперь давайте рассмотрим, возможно ли возникновение такой неприятной ситуации в том случае, если мы утеплим контейнер снаружи? Ответ – возможно в тех случаях, когда дом из контейнера не будет использоваться постоянно, при этом в нем не будет постоянно поддерживаться положительная температура. Так, например, если Вы будете использовать дом, сделанный из контейнера лишь периодически, и приедете в него например зимой, когда железо промерзло до отрицательных температур и включите отопление (независимо от типа отопления), все его внутренние стены буквально потекут! Вы никогда не обращали внимание на то, что будет с любым металлическим предметом, который подержали на морозе, а потом внесли в теплое помещение? Он «вспотеет»!

С другой стороны, если вы планируете постоянное проживание, то такая ситуация может никогда не возникнуть. Хотя, возникнув лишь однажды, такая ситуация может доставить огромное количество проблем от разбухания половых покрытий, отклеивания обоев, возникновения плесени и грибка до возможных замыканий в электропроводке.

А теперь вспомните, вы никогда не прикасались на морозе к пенопласту или пенополистиролу? Если прикасались, то помните, что он на ощупь даже на морозе кажется теплым? А знаете почему? Это обман, конечно он не теплый, он нейтральный! Он является настолько хорошим теплоизолятором, что и не проводит тепло (почти) и не аккумулирует его. В результате, во-первых, он не аккумулирует в себе ни тепло, ни холод, а во-вторых, — когда Вы прикасаетесь к его поверхности, он не забирает тепло вашей кожи. В точке касания вы нагреваете своим теплом лишь тончайший слой, толщиной чуть ли не в несколько молекул, дальше это тепло не уходит. В результате, с одной стороны Вы не почувствуете такой незначительной потери тепла, с другой вы касаетесь поверхности, которая имеет ту же температуру, что и поверхность вашей кожи, — отсюда и ощущение того, что материал теплый. С железом на морозе всё наоборот – чтобы оно показалось теплым, его поверхность должна сравняться по температуре с температурой ваших рук. При этом высокая теплопроводность железа не даст нагреться поверхности пока весь железный предмет не нагреется во всей своей массе. Поэтому железо будет «высасывать» из вас тепло долго и много (охлаждая при этом поверхность Вашей кожи).

К чему мы сделали это лирическое отступление? К тому, что если Вы утеплите контейнер изнутри, уделив внимание тому, чтобы сделать теплоизолирующий слой сплошным, исключающим любой даже незначительный контакт железных внешних стен контейнера с воздухом внутреннего объема, — то можете приехать в промерзший насквозь контейнер, включить в нем отопление и никакой росы на стенах не образуется, при этом внутренний объем помещения прогреется мгновенно! Всё благодаря тому, что всё выделяемое тепло пойдет сразу на прогрев внутреннего объема, внутренняя теплоизоляция стен не будет отбирать тепло сама и не даст прогреваться стенам. Утепление контейнера изнутри превращает его в термос. При этом внешние стены контейнера всегда будут иметь температуру, обусловленную внешними факторами, но это не проблема. Нет никакой проблемы в том, что внешние стенки контейнера будут охлаждаться зимой до -30°С и ниже.

Итак, утепление изнутри возможно и иногда даже рекомендовано, особенно если мы утепляем контейнер. Возможны ли проблемы в случае такого способа утепления? Ответ – Да! Можно ли их предусмотреть, избежать? Ответ – Да!

Если говорить о возможных проблемах, то их всего две:

  1. Утепляя контейнер изнутри крайне важно сделать теплоизолирующий слой сплошным, исключая любой, даже незначительный контакт железных внешних стен контейнера с воздухом внутреннего объема! Проще всего реализовать такой сплошной теплоизоляционный слой путем напыления слоя пенополиуретана.
  2. Необходимо ИСКЛЮЧИТЬ любые мостики холода в виде материалов с высокой теплопроводностью, соединяющие внешние металлические стены с внутренним объемом помещения сквозь теплоизоляционный слой. Например, если Вы собрались сделать внутри контейнера стену-перегородку из металла, ни в коем случае нельзя приваривать её изнутри к внешним стенам контейнера. Крепление таких элементов нужно делать через материал с высоким сопротивлением теплопередаче! Например, в описанном примере прикрепите к внешним стенам деревянные бруски, а металлическую перегородку прикрепите уже к этим брускам.

Всё, что будет описано в этом разделе – касается лишь внутренней стороны контейнера!

  • Для начала рекомендуем вырезать все планируемые оконные и дверные проемы. Вырезая в стенах контейнера проемы под будущие окна и двери, вентиляционные и дымовые трубы, — мы ослабляем конструкционную прочность стены, нарушив непрерывность ребер жесткости. Поэтому по обеим сторонам каждого проема в стенах необходимо приварить трубы квадратного сечения, идущие вертикально от самого пола и до самого потолка (они же будут служить дополнительными вертикальными опорами). Над и под проемом нужно приварить две горизонтальные трубы квадратного сечения, концы которых привариваются к вертикально расположенным трубам. Трубы привариваются к обшивке точечно, друг к другу – сплошным швом. Результирующая конструкция послужит и ребрами жесткости для проема и как силовой элемент, к которому можно будет крепить устанавливаемые окна и двери. Чтобы избежать неприятностей в будущем, старайтесь очень точно соблюсти вертикальные, горизонтальные линии и прямые углы! Затем следует заварить основные двери контейнера. Далее не помешает очистить контейнер от следов ржавчины.
  • Утепляя контейнер изнутри, оптимально применять не готовые маты из минеральной ваты или плиты пенополистирола, а сделать вертикальную обрешетку, набив вертикально деревянные бруски, толщиной 5-10 см. Таким образом вы получите «маяки». Далее на стены напыляется пенополистирол или пенополиуретан. После нанесения по маякам снимаем излишки. Тоже самое делаем на потолке.
  • Затягиваем все стены и потолок пароизоляционной мембраной и пристреливаем её степлером к брускам обрешетки.
  • Оббиваем стены на ваш выбор: вагонкой, древесно-стружечными плитами, щепо-цементными плитами, гипроком и т.д.
  • Утепление пола — либо по аналогии со стенами либо плитами из пенополистирола, можно даже залить стяжку из легкого бетона. Использовать для утепления пола минеральную вату — крайне нежелательно! Иначе при случайном попадании в неё воды, вата пропитается и будет долго удерживать воду, вызывая ржавление днища, образование грибка и плесени
  • Устанавливая камины, печи, дымоходы – не забывайте, что пенополиуретан и пенополистирол, хоть и являются отличными теплоизоляторами – не выдерживают высоких температур и начинают плавиться, а в худшем варианте могут и загореться, поэтому изолируйте все места контакта с горячими поверхностями – прокладками из матов минеральной ваты толщиной 5-10 сантиметров.

Подробнее смотрите на фото, расположенных ниже или на этом видео

 

Похожие статьи:

  • Жилой дом из морских контейнеров в Харькове

    Первый жилой дом из морских контейнеров в Харькове начал строится в 2003 году в Дегтярном переулке. Окончание строительства и сдача жилого ...

  • Дом из морских контейнеров в Сантьяго-де-Чили

    Территория Сантьяго-де-Чили простирается до Анд, и растущее число состоятельных жителей стремиться строить себе дома на предгорьях Анд в поисках свежего воздуха и зеленых ...

  • Дом из морских контейнеров — доступное жилье

    «Дом из морских контейнеров — доступное жилье для людей с низким доходом» — звучит несколько унизительно, не правда ли? Социальное жильё редко ...

  • Железнодорожная станция из морских контейнеров

    Глядя на фото очередного объекта, построенного в Нидерландах из морских 40-футовых контейнеров складывается ощущение, что эту страну захватила мода строить всё ...

  • Freitag shop Zurich — самый высокий магазин из контейнеров

    Началось всё с того, что в далеком 1993 году братьям FREITAG пришла в голову мысль начать шить сумки из отслуживших свой ...

  • Утепляем контейнер. Утеплить контейнер изнутри или снаружи?

    В одной из своих статей «Дома из контейнеров своими руками» мы упомянули о том, что утеплить контейнер будет правильнее снаружи. ...

  • Общежитие из контейнеров в Амстердаме. Keetwonen — студгородок из контейнеров.

    «Keetwonen» это название самого большого в мире студенческого городка состоящего из студенческих общежитий, построенных из одних только морских контейнеров. Вы ...

  • Очередной магазин из контейнеров

    Построен очередной магазин из контейнеров. На этот раз это трехэтажный магазин контейнер построенный в Сан-Франциско. Можно сказать, что строительство магазинов ...

  • Дома из контейнеров своими руками. Цена, проекты, фото

    Дома из контейнеров вызывают всё больший интерес у той части населения, которая задумывается о том, чтобы построить жилой дом. Всё ...

  • Дома из контейнеров. 3х-этажный дом в Австралии

    Ранее мы уже писали про дома из контейнеров в статье под названием «Дом из контейнеров. Фото 22-х лучших проектов». Сегодня ...

Понравилась статья? Поделитесь ссылкой на неё с друзьями в социальных сетях:

Разработка внутри контейнера с использованием Visual Studio Code Удаленная разработка

Расширение Visual Studio Code Remote - Containers позволяет использовать контейнер Docker в качестве полнофункциональной среды разработки. Он позволяет открывать любую папку внутри контейнера (или подключенную к нему) и использовать весь набор функций Visual Studio Code. Файл devcontainer.json в вашем проекте сообщает VS Code, как получить доступ (или создать) контейнер разработки с четко определенным инструментом и стеком времени выполнения.Этот контейнер может использоваться для запуска приложения или для инструментов песочницы, библиотек или сред выполнения, необходимых для работы с базой кода.

Файлы рабочей области монтируются из локальной файловой системы или копируются или клонируются в контейнер. Расширения устанавливаются и запускаются внутри контейнера, где у них есть полный доступ к инструментам, платформе и файловой системе. Это означает, что вы можете легко переключить всю среду разработки, просто подключившись к другому контейнеру.

Это позволяет VS Code обеспечивать опыт разработки с локальным качеством - включая полный IntelliSense (завершение), навигацию по коду и отладку - независимо от того, где находятся ваши инструменты (или код) .

Начало работы

Примечание : Изучив этот раздел, вы можете начать работу с вводным руководством по контейнерам.

Системные требования

Местный:

Контейнеры :

  • x86_64 / ARMv7l (AArch42) / ARMv8l (AArch64) Debian 9+, Ubuntu 16.04+, CentOS / RHEL 7+
  • x86_64 Alpine Linux 3.9+

Другие контейнеры Linux на базе glibc могут работать, если для них необходимы предварительные требования Linux.

Установка

Чтобы начать, выполните следующие действия:

  1. Установите и настройте Docker для вашей операционной системы.

    Windows / macOS :

    1. Установите Docker Desktop для Windows / Mac.

    2. Щелкните правой кнопкой мыши элемент панели задач Docker, выберите Settings / Preferences и обновите Resources> File Sharing , указав все места, где хранится исходный код.См. Советы и рекомендации по устранению неполадок.

    3. Если вы используете WSL 2 в Windows, чтобы включить серверную часть Windows WSL 2: щелкните правой кнопкой мыши элемент панели задач Docker и выберите Настройки . Отметьте Используйте механизм на основе WSL 2 и убедитесь, что ваш дистрибутив включен в разделе Ресурсы > Интеграция WSL .

    Linux :

    1. Следуйте официальным инструкциям по установке Docker CE / EE для вашего дистрибутива.Если вы используете Docker Compose, следуйте также указаниям Docker Compose.

    2. Добавьте своего пользователя в группу docker с помощью терминала для запуска: sudo usermod -aG docker $ USER

    3. Выйдите и войдите снова, чтобы изменения вступили в силу.

  2. Установите Visual Studio Code или Visual Studio Code Insiders.

  3. Установите пакет расширений удаленной разработки.

Работаете с Git?

Вот два совета, которые следует учитывать:

  • Если вы работаете с одним и тем же репозиторием как локально в Windows, так и внутри контейнера, обязательно установите согласованные окончания строк. См. Подробности в советах и ​​приемах.
  • Если вы клонируете с помощью диспетчера учетных данных Git, ваш контейнер уже должен иметь доступ к вашим учетным данным! Если вы используете ключи SSH, вы также можете разрешить их совместное использование. См. Раздел «Совместное использование учетных данных Git с вашим контейнером».

Работа с контейнерами

Расширение Remote - Containers поддерживает две основные рабочие модели:

Быстрый старт: попробуйте контейнер для разработки

Самый простой способ начать - попробовать один из примеров контейнеров для разработки. Учебник по контейнерам проведет вас через настройку Docker и расширения Remote - Containers и позволит вам выбрать образец:

Быстрый старт: открытие существующей папки в контейнере

В этом кратком руководстве рассказывается, как настроить контейнер разработчика для существующего проекта, чтобы использовать его в качестве постоянной среды разработки, используя существующий исходный код в вашей файловой системе.Выполните следующие действия:

  1. Запустите VS Code, запустите команду Remote-Containers: Open Folder in Container ... из палитры команд (F1) или элемента строки состояния быстрых действий и выберите папку проекта, для которой вы хотите настроить контейнер.

    Совет: Если вы хотите отредактировать содержимое или настройки контейнера перед открытием папки, вы можете запустить Удаленные контейнеры: добавить файлы конфигурации контейнера разработки... вместо этого.

  2. Теперь выберите отправную точку для вашего контейнера разработки. Вы можете выбрать базовое определение контейнера разработчика из фильтруемого списка или использовать существующий файл Dockerfile или Docker Compose, если он существует в выбранной вами папке.

    Примечание: При использовании контейнеров Alpine Linux некоторые расширения могут не работать из-за зависимостей glibc в собственном коде внутри расширения.

    Список будет автоматически отсортирован по содержимому открытой папки. Обратите внимание, что отображаемые определения контейнеров разработчика взяты из репозитория vscode-dev-container. Вы можете просмотреть папку контейнеров и этого репозитория, чтобы увидеть содержимое каждого определения.

  3. После выбора начальной точки для вашего контейнера VS Code добавит файлы конфигурации контейнера разработчика в ваш проект (.devcontainer / devcontainer.json ).

  4. Окно VS Code перезагрузится и начнет сборку контейнера разработчика. Уведомление о ходе выполнения предоставляет обновления статуса. Вам нужно создать контейнер разработчика только при первом его открытии; открытие папки после первой успешной сборки будет намного быстрее.

  5. После завершения сборки VS Code автоматически подключится к контейнеру.

Теперь вы можете взаимодействовать со своим проектом в VS Code так же, как при локальном открытии проекта.С этого момента, когда вы открываете папку проекта, VS Code автоматически выбирает и повторно использует вашу конфигурацию контейнера разработчика.

Совет: Хотите использовать удаленный хост Docker? Подробную информацию о настройке см. В статье «Дополнительные контейнеры».

Хотя использование этого подхода для привязки монтирования локальной файловой системы к контейнеру удобно, он имеет некоторые накладные расходы на производительность в Windows и macOS. Есть несколько методов, которые можно применить для повышения производительности диска, или вы можете открыть репозиторий в контейнере, используя вместо этого изолированный том контейнера.

Откройте папку WSL 2 в контейнере в Windows

Если вы используете подсистему Windows для Linux v2 (WSL 2) и включили серверную часть WSL 2 Docker Desktop, вы можете работать с исходным кодом, хранящимся внутри WSL!

После включения механизма WSL 2 вы можете:

  • Используйте команду Remote-Containers: повторно открыть папку в контейнере из папки, уже открытой с помощью расширения Remote - WSL.
  • Выбрать удаленные контейнеры : открыть папку в контейнере... из палитры команд (kbstyle (F1)) и выберите папку WSL, используя локальный общий ресурс \ wsl $ (со стороны Windows).

Остальная часть быстрого запуска действует как есть! Вы можете узнать больше о расширении Remote - WSL в документации.

Открыть существующее рабочее пространство в контейнере

Вы также можете выполнить аналогичный процесс, чтобы открыть многокорневое рабочее пространство VS Code в отдельном контейнере , если рабочее пространство ссылается только на относительные пути к подпапкам папки .code-workspace файл (или сама папка).

Вы можете либо:

  • Используйте команду удаленных контейнеров : открыть рабочую область в контейнере ... .
  • Используйте File> Open Workspace ... после того, как вы открыли папку, содержащую файл .code-workspace в контейнере.

После подключения вы можете добавить папку .devcontainer в рабочую область, чтобы вы могли легко редактировать ее содержимое, если оно еще не отображается.

Также обратите внимание, что, хотя вы не можете использовать несколько контейнеров для одной и той же рабочей области в одном окне VS Code, вы можете использовать несколько управляемых контейнеров Docker Compose одновременно из разных окон.

Быстрый старт: откройте репозиторий Git или GitHub PR в изолированном томе контейнера

Хотя вы можете открыть локально клонированный репозиторий в контейнере, вы можете захотеть работать с изолированной копией репозитория для PR-проверки или для исследования другой ветви, не влияя на вашу работу.

Контейнеры репозитория

используют изолированные локальные тома Docker вместо привязки к локальной файловой системе. Помимо того, что локальные тома не загрязняют ваше файловое дерево, они имеют дополнительное преимущество - повышенную производительность в Windows и macOS. (См. Раздел Расширенная конфигурация для получения информации о том, как использовать эти типы томов в других сценариях.)

Например, выполните следующие действия, чтобы открыть один из «пробных» репозиториев в контейнере репозитория:

  1. Запустите VS Code и запустите Remote-Containers: Clone Repository in Container Volume... из палитры команд (F1).

  2. Введите microsoft / vscode-remote-try-node (или один из других репозиториев «try»), URI Git, URL-адрес ветви GitHub или URL-адрес GitHub PR в появившемся поле ввода и нажмите Enter.

    Совет: Если вы выбираете частный репозиторий, вы можете настроить диспетчер учетных данных или добавить свои ключи SSH к своему агенту SSH. См. Раздел «Совместное использование учетных данных Git с вашим контейнером».

  3. Если в вашем репозитории нет файла .devcontainer / devcontainer.json , вам будет предложено выбрать начальную точку из фильтруемого списка или существующего файла Dockerfile или Docker Compose (если он существует).

    Примечание: При использовании контейнеров Alpine Linux некоторые расширения могут не работать из-за зависимостей glibc в собственном коде внутри расширения.

    Список будет автоматически отсортирован по содержимому открытой папки.Обратите внимание, что отображаемые определения контейнеров разработчика взяты из репозитория vscode-dev-container. Вы можете просмотреть папку контейнеров и этого репозитория, чтобы увидеть содержимое каждого определения.

  4. Окно VS Code (экземпляр) перезагрузится, клонирует исходный код и начнет сборку контейнера разработчика. Уведомление о ходе выполнения предоставляет обновления статуса.

    Если вы вставили URL-адрес запроса на вытягивание GitHub на шаге 2, PR будет автоматически проверен, и в контейнер будет установлено расширение GitHub Pull Requests.Расширение предоставляет дополнительные функции, связанные с PR, такие как PR-проводник, взаимодействие со встроенными PR-комментариями и видимость строки состояния.

  5. После завершения сборки VS Code автоматически подключится к контейнеру. Теперь вы можете работать с исходным кодом репозитория в этой изолированной среде, как если бы вы клонировали код локально.

Обратите внимание, что если контейнер не открывается из-за чего-то вроде ошибки сборки Docker, вы можете выбрать Reopen in Recovery Container в появившемся диалоговом окне, чтобы перейти в «контейнер восстановления», который позволяет вам редактировать файл Dockerfile или другой контент.Это откроет том докера с клонированным репозиторием в минимальном контейнере и покажет вам журнал создания. Как только вы закончите исправление, используйте Reopen в контейнере , чтобы повторить попытку.

Совет: Хотите использовать удаленный хост Docker? Подробную информацию о настройке см. В статье «Дополнительные контейнеры».

Создайте файл devcontainer.json

Конфигурация контейнера

VS Code хранится в файле devcontainer.json. Этот файл похож на запуск .json для отладки конфигураций, но вместо этого используется для запуска (или присоединения) вашего контейнера разработки. Вы также можете указать любые расширения для установки после запуска контейнера или команды после создания для подготовки среды. Конфигурация контейнера разработчика находится либо в .devcontainer / devcontainer.json , либо хранится в виде файла .devcontainer.json (обратите внимание на префикс точки) в корне вашего проекта.

В качестве отправной точки можно использовать любой образ, файл Dockerfile или набор файлов Docker Compose.Вот простой пример, в котором используется один из предварительно созданных образов VS Code Development Container:

  { "изображение": "mcr.microsoft.com/vscode/devcontainers/typescript-node:0-12", "forwardPorts": [3000], "extension": ["dbaeumer.vscode-eslint"] }  

Выбор удаленных контейнеров : Добавить файлы конфигурации контейнера разработки ... Команда из палитры команд (F1) добавит необходимые файлы в ваш проект в качестве отправной точки, которую вы можете дополнительно настроить для своих нужд.Команда позволяет вам выбрать предопределенную конфигурацию контейнера из списка на основе содержимого вашей папки, повторно использовать существующий файл Docker или повторно использовать существующий файл Docker Compose.

Дополнительные сведения о создании файлов devcontainer.json см. В разделе Создание контейнера разработки.

Инспекционные объемы

Иногда вы можете столкнуться с ситуацией, когда вы используете именованный том Docker, который вы хотите проверить или внести изменения. Вы можете использовать VS Code для работы с этим содержимым, не создавая или изменяя devcontainer.json , выбрав Remote-Containers: Inspect Volume in Container ... на панели команд (F1).

Если у вас установлено расширение Docker, вы также можете щелкнуть правой кнопкой мыши том в разделе Volumes в Docker Explorer и выбрать Inspect в Visual Studio Code .

Управление добавочными номерами

VS Code запускает расширения в одном из двух мест: локально на стороне пользовательского интерфейса / клиента или в контейнере.Хотя расширения, которые влияют на пользовательский интерфейс VS Code, такие как темы и фрагменты, устанавливаются локально, большинство расширений будут находиться внутри определенного контейнера. Это позволяет вам устанавливать в контейнер только расширения, необходимые для данной задачи, и легко переключать всю цепочку инструментов, просто подключившись к новому контейнеру.

Если вы устанавливаете расширение из представления «Расширения», оно будет автоматически установлено в правильном месте. Вы можете определить, где установлено расширение, по группировке категорий.Будет категория Local - Installed , а также категория для вашего контейнера.

Примечание: Если вы являетесь автором расширения и ваше расширение не работает должным образом или устанавливается не в том месте, см. Раздел «Поддержка удаленной разработки».

Локальные расширения, которые действительно необходимо запускать удаленно, будут отображаться как Отключено в категории Локально - Установлено . Выберите Install , чтобы установить расширение на удаленный хост.

Вы также можете установить все локально установленные расширения внутри контейнера разработчика, перейдя в представление «Расширения» и выбрав Установить локальные расширения в контейнере разработчика: [Имя] , используя облачную кнопку справа от строки заголовка Локально - установлено . Появится раскрывающийся список, в котором вы можете выбрать, какие локально установленные расширения установить в свой контейнер.

Однако для некоторых расширений может потребоваться установка дополнительного программного обеспечения в контейнер.Если у вас возникнут проблемы, обратитесь к документации по расширению.

Добавление расширения к devcontainer.json

Хотя вы можете редактировать файл devcontainer.json вручную, чтобы добавить список идентификаторов расширений, вы также можете щелкнуть правой кнопкой мыши любое расширение в представлении «Расширения» и выбрать Добавить в devcontainer.json .

Расширения "Всегда устанавливались"

Если есть расширения, которые вы хотели бы всегда устанавливать в любом контейнере, вы можете обновить удаленный .container.defaultExtensions Пользовательская настройка. Например, если вы хотите установить расширения GitLens и Resource Monitor, вы должны указать их идентификаторы расширения следующим образом:

  "remote.containers.defaultExtensions": [ "eamodio.gitlens", "mutantdino.resourcemonitor" ]  

Дополнительно: принудительный запуск расширения локально или удаленно

Расширения

обычно разрабатываются и тестируются для работы локально или удаленно, но не для обоих одновременно. Однако, если расширение поддерживает его, вы можете принудительно запустить его в определенном месте в настройках .json файл.

Например, настройка ниже заставит расширение Docker запускаться локально, а расширение Debugger for Chrome - запускаться удаленно вместо значений по умолчанию:

  "remote.extensionKind": { "ms-azuretools.vscode-docker": ["ui"], "msjsdiag.debugger-for-chrome": ["рабочая область"] }  

Значение «ui» вместо «workspace» заставит расширение вместо этого запускаться на стороне локального пользовательского интерфейса / клиента.Как правило, это следует использовать только для тестирования, если иное не указано в документации расширения, поскольку это может нарушить расширения . См. Статью о поддержке удаленной разработки.

Перенаправление или публикация порта

Контейнеры

- это изолированные среды, поэтому, если вы хотите получить доступ к серверу, службе или другому ресурсу внутри вашего контейнера, вам нужно будет либо «переслать», либо «опубликовать» порт на вашем хосте. Вы можете настроить свой контейнер так, чтобы эти порты всегда открывались, или просто временно перенаправляли их.

Всегда перенаправляет порт

Вы можете указать список портов, которые всегда хотите пересылать при присоединении или открытии папки в контейнере, используя свойство forwardPorts в devcontainer.json .

  "forwardPorts": [3000, 3001]  

Просто перезагрузите / снова откройте окно, и настройка будет применена, когда VS Code подключится к контейнеру.

Временное перенаправление порта

Если вам нужен доступ к порту, который вы не добавляли в devcontainer.json или опубликовать в файле Docker Compose, вы можете временно перенаправить новый порт на время сеанса, выполнив команду Forward a Port из палитры команд (F1).

После выбора порта в уведомлении будет указан порт localhost, который следует использовать для доступа к порту в контейнере. Например, если вы перенаправили HTTP-сервер, прослушивающий порт 3000, в уведомлении может быть указано, что он был сопоставлен с портом 4123 на локальном хосте.Затем вы можете подключиться к этому удаленному HTTP-серверу, используя http: // localhost: 4123 .

Эта же информация доступна в разделе Forwarded Ports удаленного проводника, если вам понадобится доступ к нему позже.

Если вы хотите, чтобы VS Code запомнил все перенаправленные порты, отметьте Remote: Restore Forwarded Ports в редакторе настроек (⌘, (Windows, Linux Ctrl +,)) или установите «remote.restoreForwardedPorts»: true в настройки.json .

Публикация порта

Docker имеет концепцию «публикации» портов при создании контейнера. Опубликованные порты ведут себя очень похоже на порты, которые вы делаете доступными в своей локальной сети. Если ваше приложение принимает вызовы только от localhost , оно будет отклонять соединения с опубликованных портов так же, как ваш локальный компьютер для сетевых вызовов. С другой стороны, перенаправленные порты выглядят для приложения как localhost .Каждый может быть полезен в разных ситуациях.

Для публикации порта вы можете:

  1. Используйте свойство appPort: Если вы ссылаетесь на образ или файл Docker в devcontainer.json , вы можете использовать свойство appPort для публикации портов на хосте.

      "appPort": [3000, "8921: 5000"]  
  2. Используйте сопоставление портов Docker Compose: Сопоставление портов можно легко добавить в файл docker-compose.yml для публикации дополнительных портов.

      порты: - «3000» - «8921: 5000»  

В каждом случае вам необходимо перестроить контейнер, чтобы настройки вступили в силу. Это можно сделать, выполнив команду Remote-Containers: Rebuild Container на палитре команд (F1), когда вы подключены к контейнеру.

Открытие терминала

Открыть терминал в контейнере из VS Code просто.После того, как вы открыли папку в контейнере, любое окно терминала , открытое в VS Code ( Terminal> New Terminal ), будет автоматически запускаться в контейнере, а не локально.

Вы также можете использовать командную строку code из того же окна терминала для выполнения ряда операций, таких как открытие нового файла или папки в контейнере. Введите код --help , чтобы узнать, какие параметры доступны в командной строке.

Отладка в контейнере

Открыв папку в контейнере, вы можете использовать отладчик VS Code так же, как и при локальном запуске приложения.Например, если вы выберете конфигурацию запуска в launch.json и начнете отладку (F5), приложение запустится на удаленном хосте и подключит к нему отладчик.

См. Документацию по отладке для получения подробной информации о настройке функций отладки VS Code в .vscode / launch.json .

Настройки для конкретного контейнера

Локальные пользовательские настройки

VS Code также повторно используются при подключении к контейнеру разработчика. Хотя это обеспечивает единообразие взаимодействия с пользователем, вы можете захотеть изменить некоторые из этих параметров на вашем локальном компьютере и в каждом контейнере.К счастью, после подключения к контейнеру вы также можете установить параметры для конкретного контейнера, выполнив команду Preferences: Open Remote Settings из палитры команд (F1) или выбрав вкладку Remote в редакторе настроек. Они переопределят любые локальные настройки, которые у вас есть при каждом подключении к контейнеру.

Параметры контейнера по умолчанию

Вы можете включить значения по умолчанию для конкретных настроек контейнера в devcontainer.json с использованием свойства settings . Эти значения будут автоматически помещены в файл настроек конкретного контейнера внутри контейнера после его создания.

Например, добавление этого в .devcontainer / devcontainer.json установит домашний путь Java:

  "настройки": { "java.home": "/ docker-java-home" }  

Так как это просто устанавливает значение по умолчанию, вы все еще можете изменить настройки по мере необходимости после создания контейнера.

Совместное использование учетных данных Git с вашим контейнером

Расширение Remote - Containers обеспечивает готовую поддержку использования локальных учетных данных Git изнутри контейнера. В этом разделе мы рассмотрим два поддерживаемых варианта.

Если ваше имя пользователя или адрес электронной почты не настроены локально, вам может быть предложено сделать это. Вы можете сделать это на своем локальном компьютере , выполнив следующие команды:

  git config --global user.name "Ваше имя" git config --global user.электронная почта "[email protected]"  

Расширение автоматически скопирует ваш локальный файл .gitconfig в контейнер при запуске, поэтому вам не нужно делать это в самом контейнере.

Использование помощника по учетным данным

Если вы используете HTTPS для клонирования репозиториев и имеет помощник по учетным данным, настроенный в вашей локальной ОС, дальнейшая настройка не требуется. Учетные данные, которые вы ввели локально, будут повторно использоваться в контейнере и наоборот.

Использование ключей SSH

В некоторых случаях вы можете клонировать свой репозиторий, используя ключи SSH вместо помощника по учетным данным.Чтобы включить этот сценарий, расширение автоматически перенаправит ваш локальный агент SSH , если он работает под управлением .

Вы можете добавить локальные ключи SSH к агенту, если он запущен, с помощью команды ssh-add . Например, запустите это из терминала или PowerShell:

  ssh-add $ HOME / .ssh / github_rsa  

В Windows и Linux вы можете получить сообщение об ошибке, потому что агент не запущен (в macOS он обычно работает по умолчанию). Выполните следующие действия, чтобы решить проблему:

Windows :

Запустите локальный администратор PowerShell и выполните следующие команды:

  # Убедитесь, что вы работаете как администратор Set-Service ssh-agent -StartupType Автоматический Старт-Сервис ssh-агент Get-Service ssh-агент  

Linux:

Сначала запустите агент SSH в фоновом режиме, запустив в терминале следующее:

  eval "$ (ssh-agent -s)"  

Затем добавьте эти строки в свой ~ /.bash_profile или ~ / .zprofile (для Zsh), поэтому он запускается при входе в систему:

 , если [-z "$ SSH_AUTH_SOCK  
.

Внутри канонической контейнерной стратегии

Canonical продолжает придерживаться несколько разветвленного подхода к контейнерам, объявляя о поддержке Kubernetes 1.15 и продолжая продвигать Snaps как контейнер приложений, который позволяет развертывать программное обеспечение одним щелчком мыши.

Например, Canonical недавно объявила в сотрудничестве с DJI, что Snaps будет поддерживаться на экземпляре Ubuntu, встроенном в дроны Manifold 2, производимые DJI. Хотя такой подход упростит развертывание контейнерных приложений во встроенных системах, Snaps - по крайней мере, на данный момент - в основном работает только в Ubuntu.

Docker, напротив, предоставляет то, что Canonical описывает как «контейнеры процессов», которые обычно неизменяемы и совместно используют некоторые библиотеки во всех контейнерах при выполнении. Реестры Docker не являются обязательными и обычно содержат непостоянную коллекцию образов Docker, идентифицируемых по хешу или тегам. Такой подход позволяет запускать контейнерные приложения в нескольких операционных системах. Однако в организациях, которые стандартизировали Ubuntu, Canonical предлагает контейнер приложений в форме Snap.

Canonical с переменным успехом пытается заручиться поддержкой Snap в нескольких дистрибутивах Linux. Совсем недавно он сделал доступным Snapd, службу, которую отдельные разработчики могут использовать для запуска Snaps в других дистрибутивах Linux. Поддержка Snaps, работающих в дистрибутивах Linux, отличных от Ubuntu, обычно ограничивается тем, что предоставляется Canonical, что, как правило, ограничивает энтузиазм. Также стоит отметить, что альтернативные технологии упаковки приложений в виде AppImage и Flatpak существуют дольше, чем Snaps.

Том Каннинг, вице-президент по глобальным продажам IoT и устройств Canonical, говорит, что в зависимости от сценария использования Canonical ожидает, что клиенты будут использовать сочетание контейнеров Snap и Docker. По его словам, снимки могут быть не такими портативными, как контейнеры Docker, но их намного проще создавать, что делает Snaps намного более доступными для среднего разработчика. Вместо того, чтобы застрять в чистилище пилотных проектов, Snaps значительно упрощают создание приложений.

Хотя внедрение контейнеров Docker получило более широкое распространение, неясно, в какой степени разработчики примут их.Существуют миллионы разработчиков Docker, но большинство разработчиков сегодня все еще не используют контейнеры в основном из-за конструкций нижнего уровня, которые им необходимо освоить. К сожалению, невозможно развернуть контейнеры приложений Snaps поверх кластеров Kubernetes. Однако Snaps можно использовать для развертывания Kubernetes так же, как и любое другое программное обеспечение.

Независимо от того, какой путь к контейнеру выбран, Canonical старается обеспечить его актуальность. Например, предоставляемый им дистрибутив Kubernetes не только проще установить с использованием технологии Snaps, но и может быть развернут более чем в 40 дистрибутивах Linux.

Также неясно, насколько актуальными будут операционные системы в эпоху контейнеров. Тем не менее, количество и типы контейнеров, работающих в корпоративной ИТ-среде, вероятно, станут гораздо более разнообразными, чем ожидалось.

Связанные

.

Получение оболочки для работающего контейнера

На этой странице показано, как использовать kubectl exec для получения оболочки для работающий контейнер.

Перед тем как начать

У вас должен быть кластер Kubernetes, а инструмент командной строки kubectl должен быть настроенным для связи с вашим кластером. Если у вас еще нет кластер, вы можете создать его, используя миникубе или вы можете использовать одну из этих игровых площадок Kubernetes:

Получение оболочки в контейнер

В этом упражнении вы создаете Pod с одним контейнером.Контейнер запускает образ nginx. Вот файл конфигурации для Pod:

  apiVersion: v1 вид: Стручок метаданные: имя: shell-demo спецификации: объемы: - имя: общие данные emptyDir: {} контейнеры: - имя: nginx изображение: nginx объем - имя: общие данные путь монтирования: / usr / share / nginx / html hostNetwork: true dnsPolicy: по умолчанию  

Создайте модуль:

  kubectl apply -f https://k8s.io/examples/application/shell-demo.ямл  

Убедитесь, что контейнер запущен:

  kubectl get pod shell-demo  

Получить оболочку в работающий контейнер:

  kubectl exec --stdin --tty shell-demo - / bin / bash  

Примечание. Двойное тире () отделяет аргументы, которые вы хотите передать команде, от аргументов kubectl.

В вашей оболочке укажите корневой каталог:

  # Запустите это внутри контейнера ls /  

В своей оболочке поэкспериментируйте с другими командами.Здесь несколько примеров:

  # Вы можете запустить эти примеры команд внутри контейнера ls / cat / proc / mounts cat / proc / 1 / карты apt-get update apt-get install -y tcpdump tcpdump apt-get install -y lsof lsof apt-get install -y procps ps aux ps aux | grep nginx  

Написание корневой страницы для nginx

Еще раз посмотрите файл конфигурации для вашего Pod. Стручок имеет том emptyDir , а контейнер устанавливает том по адресу / usr / share / nginx / html .

В вашей оболочке создайте файл index.html в каталоге / usr / share / nginx / html directory:

  # Запустить это внутри контейнера echo 'Hello shell demo'> /usr/share/nginx/html/index.html  

В вашей оболочке отправьте запрос GET на сервер nginx:

  # Запустите это в оболочке внутри вашего контейнера apt-get update apt-get install curl завиток http: // localhost /  

Вывод показывает текст, который вы записали в индекс .html файл:

  Hello shell demo  

Когда вы закончите работу с оболочкой, введите exit .

  exit # Для выхода из оболочки в контейнере  

Выполнение отдельных команд в контейнере

В обычном командном окне, а не в вашей оболочке, укажите среду переменные в работающем контейнере:

  kubectl exec shell-demo env  

Поэкспериментируйте с запуском других команд. Вот несколько примеров:

  kubectl exec shell-demo - ps aux kubectl exec shell-demo - ls / kubectl exec shell-demo - cat / proc / 1 / mounts  

Открытие оболочки, когда Pod имеет более одного контейнера

Если Pod имеет более одного контейнера, используйте --container или -c , чтобы укажите контейнер в команде kubectl exec .Например, Предположим, у вас есть Pod с именем my-pod, и у Pod есть два контейнера названы main-app и helper-app . Следующая команда откроет shell в контейнер основного приложения .

  kubectl exec -i -t my-pod --container main-app - / bin / bash  

Примечание: Короткие параметры -i и -t такие же, как длинные параметры --stdin и --tty

Что дальше

Последнее изменение 23 мая 2020 г. в 18:18 по тихоокеанскому стандартному времени: измените примеры команд, чтобы они соответствовали руководству по стилю (280a527a7).

Смотрите также