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

Обновлено: 21.11.2024

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

Проблема с определенным драйвером принтера?

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

Базовые проверки сервера и клиента

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

Проблемы с заданиями печати

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

Если печать на вашем эталонном компьютере работает, и вы подозреваете, что существует проблема с возможностью Print Deploy клонировать и установить драйвер, свяжитесь с нами, чтобы мы могли проверить ваш драйвер. Укажите как можно больше информации, включая журналы клонирования (см. ниже), информацию об ОС и ссылку на точный драйвер, вызывающий проблемы.

Если вы хотите глубже понять, что может происходить, информация об отладке доступна в рабочем журнале средства просмотра событий Windows и в журнале ошибок CUPS при работе в режиме отладки:

  • Для Mac: как включить отладку в CUPS
  • Для Windows: регистрация заданий печати в средстве просмотра событий

Инструмент клонирования печати

  • Windows: pc-print-deploy-cloner-.log, хранящийся в том же каталоге, из которого вы запустили средство клонирования
  • macOS: pc-print-deploy-cloner-.log, хранится в /tmp

Почему клонирование Print Deploy на Mac занимает больше времени?

В Windows при клонировании нескольких очередей печати с одним и тем же драйвером клонер Print Deploy копирует драйвер только один раз. Однако на компьютерах Mac драйвер копируется для каждой очереди печати вместе с его файлом PPD. Пусть клонер работает в фоновом режиме; он туда попадет.

Где я могу увидеть, что было клонировано?

Клонировщик сохраняет копию ZIP-пакета клонированного принтера (и файла журнала) на эталонном компьютере.

Windows: [host]-[os]-[arch]-[epoch].zip , сохраненный в том же каталоге, из которого вы запустили инструмент клонирования

MacOS: [host]-[os]-[arch]-[epoch].zip , хранится в /tmp для Mac OS

Linux: [host]-[os]-[arch]-[epoch].zip , хранится в /tmp для Linux

Клиент Linux не устанавливается

При установке клиента развертывания печати на компьютере с Linux без установленной системы CUPS (Common Unix Printing System) происходит сбой установки с выводом, подобным следующему:

Затем вы можете проверить следующий файл журнала: /opt/PaperCutPrintDeployClient/data/logs/install.log

Устранение неполадок с клонером

Проблема Некоторые очереди печати на моем эталонном компьютере не были клонированы (Windows)
Причина Инструмент клонирования Windows исключает некоторые принтеры при клонировании по разным причинам.
Строки файла журнала, на которые следует обратить внимание 2019 -07-19-14:11:14 SUPPO cloner_windows.go:182 принтер «Adobe PDF Converter» не настоящий. не клонировано

Драйвер принтера не имеет INF-файла. На данный момент Print Deploy не поддерживает драйверы без INF-файлов.

Полезные инструменты

Прежде чем пытаться починить что-то сломанное, вам нужно ознакомиться с несколькими инструментами, которые помогут вам сузить круг проблем. В нашем случае нас будут интересовать такие инструменты, как FileMon, RegMon и Security Auditing. Дополнительные сведения о FileMon см. в разделе FileMon для Windows версии 7.04.

Дополнительную информацию о RegMon см. в разделе Windows Sysinternals.

Детализация, чтобы выявить проблему

Приведенные выше вопросы полезны для диагностики проблемы. Если вы публикуете свою проблему на любом из форумов ASP.NET и если у вас уже есть ответы на большинство этих вопросов, то, скорее всего, вы получите быстрый указатель или решение вашей проблемы. Суть в том, чтобы опубликовать всю ошибку трассировки стека ASP.NET, если это применимо, вместо того, чтобы говорить: «Я получаю сообщение об ошибке «Отказано в доступе» при попытке запустить мое приложение ASP.NET. Может ли кто-нибудь помочь?» Кому-то гораздо проще посмотреть на трассировку стека и указать вам, когда он увидит полное сообщение об ошибке. Поэтому вам нужно спросить себя.

Какое точное сообщение об ошибке?

Первый вопрос, который мы задаем клиентам: "Какое именно сообщение об ошибке?" Если у вас есть четкое описание сообщения об ошибке, выдаваемого Microsoft .NET Framework, вы можете пропустить этот раздел. Если ваше приложение маскирует фактическое сообщение об ошибке и вместо этого выдает понятное сообщение об ошибке, например: «Произошла непредвиденная ошибка. За подробностями обратитесь к администратору веб-сайта», это никому не поможет.Вот несколько шагов, которые помогут вам получить фактическое сообщение об ошибке.

Найдите и откройте файл Web.config в каталоге приложения и измените значение customErrors на mode="Off". Сохраните файл и воспроизведите проблему.

Возможно, после выполнения описанного выше шага фактическое сообщение об ошибке по-прежнему не будет отображаться из-за специальной обработки событий/ошибок, выполненной разработчиком приложения. Вы можете попытаться найти событие Application_Error в файле Global.asax и закомментировать любой код, который использует функцию Server.Transfer("Errors.aspx") для перехода на пользовательскую страницу ошибки.

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

Если вы не можете получить четкое описание проблемы из-за пользовательского сообщения об ошибке, запустите FileMon и воспроизведите проблему. Остановите и сохраните захват как FileMon.xls и откройте файл в Microsoft Excel. В меню Данные щелкните Фильтр, а затем щелкните Автофильтр, чтобы использовать возможности фильтрации Excel. Теперь выберите раскрывающийся список в столбце F и найдите ошибки «ДОСТУП ЗАПРЕЩЕН».

Пример вывода FileMon показан ниже.

Хорошим шагом было бы изменить учетную запись процесса ASP.NET на учетную запись администратора, чтобы посмотреть, решит ли это проблему. В IIS 6.0 и более поздних версиях вы должны изменить идентификатор AppPool IIS на «Локальная система», чтобы проверить, работает ли приложение.

Это следует использовать не как решение, а только как шаг по устранению неполадок.

Запуск FileMon не показал никаких ошибок ACCESS DENIED. Все необходимые разрешения для учетной записи ASPNET были на месте. Единственный способ избавиться от проблемы — перезагрузить коробку. Даже сброс IIS не помог. Вы думаете: «А, Microsoft Software всегда нуждается в перезагрузке для восстановления?» Ну, вы ошибаетесь!

Самый простой способ отключить сторонние службы:

  1. Нажмите «Пуск», выберите «Выполнить» и введите msconfig.
  2. Выберите «Службы» и установите флажок «Скрыть все службы Microsoft».
  3. Нажмите «Отключить все», чтобы отключить сторонние службы.
  4. Нажмите "Пуск", выберите "Выполнить" и введите iisreset, чтобы перезагрузить среду CLR в рабочий процесс.

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

Папка %SystemRoot%\Assembly — это глобальный кэш сборок. Вы не можете напрямую использовать проводник Windows для редактирования ACL для этой папки.

Вместо этого используйте командную строку и выполните следующую команду:

cacls %windir%\assembly /e /t /p домен\useraccount:r

Кроме того, перед использованием проводника Windows отмените регистрацию Shfusion.dll с помощью следующей команды, чтобы предоставить разрешения через графический интерфейс:

После установки разрешений с помощью Проводника Windows повторно зарегистрируйте Shfusion.dll с помощью следующей команды:

Вашим первым шагом будет проверка возможности подключения к удаленному серверу через проводник Windows.

На сервере IIS войдите в систему со своим доменом/учетной записью, нажмите «Пуск», нажмите «Выполнить», а затем введите общий путь UNC удаленного сервера: \\RemoteServerName*\Test .

Создайте файл с именем CreateUNCFile.aspx с помощью приведенного ниже кода и сохраните файл в каталоге вашего приложения.

Убедитесь, что вы изменили следующую строку кода

Чтобы оно отражало имя вашего удаленного сервера.

Если создать файл не удается из клиентского браузера Internet Explorer, но работает, если вы переходите на ту же страницу с самого сервера IIS, вероятно, вы столкнулись со сценарием "двойного перехода". Если вы используете специально созданные веб-части для доступа к удаленным ресурсам, требующим проверки подлинности и авторизации пользователя, вы, вероятно, столкнетесь с проблемой «двойного перехода». Чтобы получить доступ к удаленному ресурсу, вам может потребоваться указать учетные данные конечного пользователя для ресурса, чтобы выходные данные из ресурса были ограничены данными, на доступ к которым у конечного пользователя есть разрешение.

В приведенных выше шагах предполагается, что в IIS включена проверка подлинности NTLM. Обычная аутентификация не использует Kerberos.

Дополнительную информацию о методах аутентификации IIS см. в технической документации Visual Studio 2003 Retired.

Существует множество других причин появления сообщения об ошибке "Серверное приложение недоступно". Журнал событий — лучший способ получить более подробную информацию о причине вашей проблемы.

Ошибки, связанные с IIS

Журналы IIS полезны в случаях ошибок, связанных с проверкой подлинности IIS.

Что вам нужно искать, так это коды статуса и подстатуса для этой конкретной ошибки.

Мы видим ошибку 401 с подстатусом 3, что означает "Неавторизовано из-за ACL на ресурсе".

Это указывает на отсутствие разрешений NTFS для файла или папки. Эта ошибка может возникнуть, даже если разрешения для файла, к которому вы пытаетесь получить доступ, верны, но разрешения и права пользователя по умолчанию могут отсутствовать в других папках SYSTEM и IIS. Например, вы можете увидеть эту ошибку, если учетная запись IUSR_ComputerName не имеет доступа к каталогу C:\Winnt\System32\Inetsrv.

Нажмите «Пуск», выберите «Выполнить» и введите logfiles, чтобы открыть папку, содержащую журналы IIS. Либо на странице свойств вашего веб-сайта в IIS щелкните вкладку WebSiteName и в разделе Формат активного журнала щелкните Свойства, чтобы просмотреть каталог и имя файла журнала.

Другой интерес представляет код состояния 5. Вы можете использовать команду net helpmsg, чтобы получить дополнительную информацию об этом коде состояния:

C:\Documents and Settings\User> net helpmsg 5

Давайте попробуем другой общий код состояния, код 50:

C:\Documents and Settings\User> net helpmsg 50

Идея состоит в том, чтобы использовать всю доступную зарегистрированную информацию, чтобы получить максимальную информацию о проблеме.

$_FILES и $_POST возвращаются пустыми

Эта функция используется для обработки загрузки файлов.

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

error_log("====================================== $messageBefore");
error_log("====================================== cmmediabrowsedfor"][ "tmp_name"][0]) || !is_uploaded_file($_FILES["cmmediabrowsedfor"]["tmp_name"][0])) error_log("ФАЙЛ НЕ ЗАГРУЖЕН");
> else error_log("ФАЙЛ УСПЕШНО ЗАГРУЖЕН");
>
>

Пояснение относительно скрытого поля формы MAX_FILE_SIZE и кода ошибки UPLOAD_ERR_FORM_SIZE:

В PHP есть несколько странная функция проверки нескольких "максимальных размеров файла".

Двумя широко известными ограничениями являются параметры php.ini "post_max_size" и "upload_max_size", которые в сочетании налагают жесткое ограничение на максимальный объем данных, который может быть получен.

Вдобавок к этому в PHP каким-то образом была реализована функция мягкого лимита. Он проверяет наличие имени поля формы «max_file_size» (верхний регистр также допустим), которое должно содержать целое число с максимально допустимым количеством байтов. Если загруженный файл больше, чем целое число в этом поле, PHP запрещает эту загрузку и представляет код ошибки в массиве $_FILES-Array.

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

Итак, вместо этого:
-----
if( $_FILES [ 'userfile' ][ 'error' ]) <
// обрабатываем ошибку
> else <
// процесс
>
?>
-----
Вы должны сделать это:
-----
if( $_FILES [ 'userfile' ][ 'error' ]== 0 ) <
// обработка
> else <
// обработка ошибки
>
?>
-----
Кроме того, ctype_digit не работает, но is_int работает. Если вам интересно. нет, в этом нет никакого смысла.

Вы задаетесь вопросом: зачем усложнять, если можно упростить? Я задаю тот же вопрос, поскольку версия кода, которую вы / Anonymous / Thalent (per danbrown) опубликовали, является ненужной накладной и приведет к вызову функции, а также к потенциально длинному оператору switch. В цикле это было бы смертельно. попробуйте вместо этого:

-----
= array(
1 => 'Загруженный файл превышает директиву upload_max_filesize в php.ini.' ,
'Загруженный файл превышает директиву MAX_FILE_SIZE, которая был указан в форме HTML.' ,
'Загруженный файл загружен только частично.' ,
'Файл не загружен.' ,
6 => 'Отсутствует временная папка.' ,
'Не удалось записать файл на диск.' ,
'Расширение PHP остановило загрузку файла.'
);

// Вне цикла.
if( $_FILES [ 'userfile' ][ 'error' ]== 0 ) <
// процесс
> else <
$error_message = $error_types [ $_FILES [ 'файл пользователя' ][ 'ошибка' ]];
// что делать с сообщением об ошибке
>

// В цикле.
for( $x = 0 , $y = count ( $_FILES [ 'userfile' ][ 'error' ]); $x $y ;++ $x ) <
if( $_FILES [ 'userfile' ][ 'error' ][ $x ]== 0 ) <
// процесс
> else <
$error_message = $error_types [ $_FILES [ 'userfile' ][ 'ошибка' ][ $x ]];
// Что делать с сообщением об ошибке
>
>

// Когда вы закончите. если вы не делаете все это в функции, которая вот-вот завершит/завершит всю обработку и хотите восстановить память
unset( $error_types );
?>

При загрузке файла обычно открывается страница php.ini и настройте upload_tmp_dir = /temp, но в случае какой-нибудь веб-хостессы как fatcow вам нужно направить не только /tmp, но и upload_tmp_dir = /hermes/walnaweb13a/b345/moo.youruser/tmp

Я немного расширил @adam в примере gotlinux dot us с правильными константами UPLOAD_FOO и поддержкой gettext. Также добавлен UPLOAD_ERR_EXTENSION (отсутствовал в его версии). Надеюсь, это кому-нибудь поможет.

class Some /**
* Коды ошибок загрузки
* @var array
*/
private static $upload_errors = [];

public function __construct () // Инициировать ошибки загрузки
self :: $upload_errors = [
UPLOAD_ERR_OK => _ ('Ошибки нет, файл успешно загружен'),
UPLOAD_ERR_INI_SIZE => _ ('Загруженный файл превышает директиву upload_max_filesize в php.ini.'),
UPLOAD_ERR_FORM_SIZE => _ ('Загруженный файл превышает директиву MAX_FILE_SIZE, указанную в HTML-форме.') ,
UPLOAD_ERR_PARTIAL => _ ('Загруженный файл загружен только частично.'),
UPLOAD_ERR_NO_FILE => _ ('Файл не загружен'),
UPLOAD_ERR_NO_TMP_DIR => _ ( ' Отсутствует временная папка.' ),
UPLOAD_ERR_CANT_WRITE => _ ('Невозможно записать в целевой каталог. Исправьте CHMOD.' ),
UPLOAD_ERR_EXTENSION => _ ('Расширение PHP остановило загрузку файла.' ),
];
>
>
?>

Что касается отправляемого имени файла, очень простой способ проверить это — проверить размер файла, а также имя файла. Например, чтобы проверить размер файла, просто используйте атрибут размера в массиве информации о файле:

if( $_FILES [ "file_id" ][ "size" ] == 0 )
<
// . ОШИБКА ПРОЦЕССА
>
?>

Я заметил, что в PHP-4.3.2 $_FILES также нельзя установить, если загружаемый файл превышает ограничения, установленные параметром upload-max-filesize в php.ini, вместо установки ошибки $_FILES["file" ]["ошибка"]

UPLOAD_ERR_PARTIAL задается, когда граница пантомимы не найдена после данных файла. Возможной причиной этого является то, что загрузка была отменена пользователем (нажал ESC и т. д.).

Примечание: вас может удивить то, что PHP также предоставляет значение в массиве $_FILES, если входной элемент вообще не имеет значения, сообщая об ошибке UPLOAD_ERR_NO_FILE.

Поэтому UPLOAD_ERR_NO_FILE — это не ошибка, а примечание о том, что элемент ввода просто не имеет значения. Таким образом, вы не можете полагаться на массив $_FILES, чтобы узнать, был ли предоставлен файл. Вместо этого вам нужно пройтись по массиву и проверить каждую чертову запись, что может быть довольно сложно, поскольку значения могут быть вложенными, если вы используете элементы ввода с именами вроде «foo[bar][bla]».

Похоже, PHP только что познакомил вас с еще одной распространенной ошибкой.

Я поэкспериментировал с ограничениями размера файла, и что касается параметра post_max_size, то, похоже, существует жесткое ограничение в 2047 МБ. Любое число, которое вы укажете выше, приведет к сбою загрузки без какой-либо информативной ошибки, описывающей, что пошло не так. Это происходит независимо от того, насколько маленьким может быть файл, который вы загружаете. При ошибке моя страница пытается вывести имя исходного файла. Но я обнаружил, что это исходное имя файла, которое я сохранил в локальной переменной, на самом деле повреждается. Даже моя попытка вывести код ошибки в $_FILES['uploadedfiles']['error'] возвращает пустую строку/значение.

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

Это обновляет "adam at gotlinux dot us" выше и делает его с учетом версии, а также добавляет новые константы в массив.

Причина, по которой мы хотим проверить версию, заключается в том, что константы не определены в более ранних версиях и появляются в массиве позже. Они эффективно перезаписывают индекс "0" (без ошибок) с сообщением об ошибке, когда файл загружается нормально.

Также сбрасывается значение константы (0,1,2 и т. д.) для ошибок на тот случай, если они будут изменены позже (код все равно должен работать нормально).

= array(
0 => "Ошибки нет, файл успешно загружен"
, UPLOAD_ERR_INI_SIZE => "Загруженный файл превышает директиву upload_max_filesize в php.ini"
, UPLOAD_ERR_FORM_SIZE => "Загруженный файл превышает директиву MAX_FILE_SIZE, указанную в HTML-форме"
, UPLOAD_ERR_PARTIAL => "Загруженный файл загружен только частично"
, UPLOAD_ERR_NO_FILE => "Файл не загружен "
);

if ( version_compare ( PHP_VERSION , '5.0.3' ) >= 0 )
$upload_errors [ UPLOAD_ERR_NO_TMP_DIR ] = "Отсутствует временная папка" ;

if ( version_compare ( PHP_VERSION , '5.1.0' ) >= 0 )
$upload_errors [ UPLOAD_ERR_CANT_WRITE ] = "Не удалось записать на диск" ;

if ( version_compare ( PHP_VERSION , '5.2.0' ) >= 0 )
$upload_errors [ UPLOAD_ERR_EXTENSION ] = "Загрузка файла остановлена ​​расширением" ;
?>

[Ну, небольшое замечание. ]
Пример класса UploadException, опубликованный анонимным пользователем, великолепен. Это работает хорошо. Но есть определенная проблема.Вы знаете, что есть две стороны возникновения ошибок.
Первый -> для клиентской части.
Второй -> для разработчиков, которые будут использовать ваш скрипт

Но я вижу только одну сторону генерации исключений. т.е. для разработчиков.

Почему? Потому что, когда вы генерируете исключение, ваш скрипт останавливается и выполняет все, что вы определили в предложении catch.
Теперь вы не хотите, чтобы какой-либо клиент видел исключение, не так ли? Я не буду. Клиент захочет узнать, какая ошибка произошла, простыми словами, которые он может понять, вместо того, чтобы желать, чтобы его веб-приложение разбилось, если загрузка не удалась. Итак, не генерируйте исключения. Эти ошибки должны быть собраны и показаны клиенту в элегантной форме. Это небольшой совет.
Продолжайте развиваться эффективнее.

Только что обнаружил, что очень важно определить значение
input type="hidden" name="MAX_FILE_SIZE"=.
ПОСЛЕ определения input type="FILE" name=.
в вашем html/php.
Если вы поменяете их местами, размер файла будет превышен (ошибка 2)!
Надеюсь, это поможет.
Понял

enctype="multipart/form-data" работает нормально

Загрузка не работает, ошибки нет?

на самом деле оба $_FILES и $_REQUEST в отправленном скрипте пусты?

просто посмотрите, меньше ли "post_max_size" данных, которые вы хотите загрузить.

в журнале ошибок apache будет запись типа "Недопустимый метод в запросе". и в журнале доступа будет два запроса: один для POST, а другой начинается со всех "----" и возвращает 501.

Для тех, кто читает это руководство на немецком (и/или, возможно, на каком-то другом языке) и пропустил перечисленные здесь номера ошибок, взгляните на английскую версию этой страницы ;)

<р>1. А как насчет загрузки нескольких файлов? - Если есть ошибка UPLOAD_ERR_INI_SIZE с несколькими файлами - мы не можем ее нормально обнаружить? . потому что у нас есть массив, но эта ошибка возвращает null и не может использовать foreach. Таким образом, имея множественную загрузку, мы не можем обычно информировать пользователя об этом. Мы можем просто обнаружить, что sizeof($_FILES["file"]["error"]) == 0 , но на самом деле мы не можем вернуть код ошибки. max_file_size также не является выходом, потому что он относится к каждому файлу отдельно, а директива upload_max_filesize в php.ini относится ко всем файлам вместе. Так, например, если upload_max_filesize=8Mb , max_file_size = 7Mb и один из моих файлов 6,5Mb, а другой 5Mb, он превышает upload_max_filesize - не может вернуть ошибку, потому что мы не знаем, где взять эту ошибку.
К сожалению, мы не можем получить размеры файлов на стороне клиента, даже AJAX обычно не может этого сделать.

<р>2. Если в поле файла вставить что-нибудь, например, D:\whatever , то ошибки тоже не будет, несмотря на то, что такого файла вообще нет.

Поскольку move_uploaded_file обычно используется для загрузки файлов, здесь следует указать, как получить сообщения об ошибках (тем более, что это не указано нигде в руководстве).
Общий код выглядит следующим образом: < br />if (move_uploaded_file($_FILES["file1"]["tmp_name"], $target_file)) эхо "

Знаете ли вы, что Docker Desktop предлагает поддержку для разработчиков с платной подпиской Docker (Pro, Team или Business)? Обновите сейчас, чтобы воспользоваться поддержкой Docker. Нажмите здесь, чтобы узнать больше.

На этой странице содержится информация о том, как диагностировать и устранять проблемы с Docker Desktop, запрашивать поддержку Docker Desktop, отправлять журналы и общаться с командой Docker Desktop, использовать наши форумы и Центр успеха, просматривать и регистрировать проблемы на GitHub, а также находить обходные пути для известные проблемы.

Устранение неполадок

Выберите > Устранение неполадок в строке меню, чтобы просмотреть варианты устранения неполадок.

Страница устранения неполадок содержит следующие параметры:

Перезапустить Docker Desktop: выберите, чтобы перезапустить Docker Desktop.

Поддержка. Пользователи с платной подпиской Docker могут использовать этот параметр для отправки запроса в службу поддержки. Другие пользователи могут использовать этот параметр для диагностики любых проблем в Docker Desktop. Дополнительную информацию см. в разделе Диагностика, обратная связь и поддержка.

Сбросить кластер Kubernetes. Выберите этот параметр, чтобы удалить все стеки и ресурсы Kubernetes. Дополнительные сведения см. в разделе Kubernetes.

Очистить/очистить данные: этот параметр сбрасывает все данные Docker без сброса до заводских настроек по умолчанию. Выбор этого параметра приводит к потере существующих настроек.

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

Удалить: выберите этот вариант, чтобы удалить Docker Desktop из вашей системы.

Удалите Docker Desktop из командной строки

Чтобы удалить Docker Desktop из терминала, выполните: --uninstall .Если ваш экземпляр установлен в папку по умолчанию, эта команда обеспечивает полное удаление:

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

Диагностика и обратная связь

Диагностика в приложении

Если вы столкнетесь с проблемами, решения которых не найдете в этой документации, проблемах Docker Desktop на GitHub или на форуме Docker Desktop, мы можем помочь вам устранить неполадки с данными журнала. Прежде чем сообщать о проблеме, мы рекомендуем вам прочитать информацию, представленную на этой странице, чтобы исправить некоторые распространенные известные проблемы.

Примечание

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

Прежде чем приступить к работе, мы рекомендуем вам войти в приложение Docker Desktop и учетную запись Docker Hub.

  1. Выберите >Устранение неполадок.
  2. Войдите в Docker Desktop. Кроме того, убедитесь, что вы вошли в свою учетную запись Docker.
  3. Нажмите Получить поддержку. Откроется страница поддержки в приложении и начнется сбор диагностики.
  4. После завершения процесса сбора диагностических данных нажмите Загрузить, чтобы получить идентификатор диагностики.
  5. После загрузки диагностики Docker Desktop распечатывает идентификатор диагностики. Скопируйте этот идентификатор.
  6. Если у вас есть платная подписка на Docker, нажмите «Обратиться в службу поддержки». Откроется форма поддержки Docker Desktop. Заполните требуемую информацию и добавьте скопированный ранее идентификатор в поле Диагностический идентификатор. Нажмите «Отправить», чтобы запросить поддержку Docker Desktop.

Примечание

Чтобы получить доступ к форме поддержки, вы должны войти в Docker Desktop, используя учетные данные уровня Pro, Team или Business. Информацию о том, что входит в поддержку Docker Desktop, см. в разделе Поддержка.

Диагностика с терминала

В некоторых случаях полезно запустить диагностику самостоятельно, например, если не удается запустить Docker Desktop.

Сначала найдите инструмент com.docker.diagnose. Если вы установили Docker Desktop в каталог Applications, он находится в /Applications/Docker.app/Contents/MacOS/com.docker.diagnose .

Чтобы создать и загрузить диагностику, выполните:

После завершения диагностики вы должны получить следующий вывод, содержащий идентификатор диагностики:

Идентификатор диагностики (здесь BE9AFAAF-F68B-41D0-9D12-84760E6B8740/20190905152051) состоит из вашего идентификатора пользователя (BE9AFAAF-F68B-41D0-9D12-84760E6B8740) и отметки времени (20190905152051). Убедитесь, что вы указали полный диагностический идентификатор, а не только идентификатор пользователя.

Чтобы просмотреть содержимое диагностического файла, выполните:

Инструмент самодиагностики

Docker Desktop содержит инструмент самодиагностики, который помогает выявить некоторые распространенные проблемы. Перед запуском средства самодиагностики найдите com.docker.diagnose . Если вы установили Docker Desktop в каталог Applications, инструмент самодиагностики будет расположен в /Applications/Docker.app/Contents/MacOS/com.docker.diagnose .

Чтобы запустить инструмент самодиагностики, выполните:

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

Отзывы

Сообщите нам свои отзывы об инструменте самодиагностики, создав задачу в репозитории GitHub для Mac.

Проверьте журналы

Помимо использования функции диагностики и обратной связи для отправки журналов, вы можете просматривать журналы самостоятельно.

В терминале

Чтобы просмотреть поток журналов Docker Desktop в режиме реального времени в командной строке, запустите следующий скрипт из вашей любимой оболочки.

В качестве альтернативы, чтобы собрать журналы за последний день ( 1d ) в файл, запустите:

В консольном приложении

В компьютерах Mac имеется встроенное средство просмотра журналов под названием «Консоль», которое можно использовать для просмотра журналов Docker.

Консоль находится в /Applications/Utilities ; вы можете найти его с помощью поиска Spotlight.

Чтобы прочитать сообщения журнала приложения Docker, введите docker в строке поиска окна консоли и нажмите клавишу ВВОД. Затем выберите ЛЮБОЙ, чтобы развернуть раскрывающийся список рядом с записью поиска Docker, и выберите Обработать .

Запрос журнала консоли можно использовать для поиска в журналах, фильтрации результатов различными способами и создания отчетов.

Просмотр журналов демона Docker

Обратитесь к разделу чтения журналов, чтобы узнать, как просматривать журналы Docker Daemon.

Устранение неполадок

Убедитесь, что сертификаты настроены правильно

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

А также в реестре. Например:

Подробнее об использовании клиентских и серверных сертификатов см. в разделе Добавление сертификатов TLS в разделе Начало работы.

Монтирование тома требует общего доступа к файлам для любых каталогов проекта за пределами /Users

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

Для монтирования тома требуются общие диски для проектов, находящихся за пределами каталога /Users. Выберите > Настройки > Ресурсы > Общий доступ к файлам и предоставьте общий доступ к диску, содержащему Dockerfile и том.

Обнаружен несовместимый процессор

Как правило, поддерживаются компьютеры с набором функций Intel VT-x, включающим расширенные таблицы страниц (EPT) и неограниченный режим.

Чтобы проверить, поддерживает ли ваш Mac инфраструктуру гипервизора, выполните следующую команду в окне терминала.

Если ваш Mac поддерживает Hypervisor Framework, команда выводит kern.hv_support: 1 .

Если нет, команда выводит kern.hv_support: 0 .

См. также Справочник по Hypervisor Framework в документации Apple и Системные требования Docker Desktop Mac.

Временные решения распространенных проблем

Если Docker Desktop не устанавливается или не запускается должным образом на Mac:

Перед установкой новой версии приложения убедитесь, что вы закрыли Docker Desktop ( > Выйти из Docker Desktop). В противном случае вы получите сообщение об ошибке «приложение используется» при попытке скопировать новое приложение из .dmg в /Applications .

Перезагрузите компьютер Mac, чтобы остановить/удалить остатки демона, запущенного из ранее установленной версии.

Запустите команды удаления из меню.

Если команды Docker не работают должным образом или не так, как ожидалось, вам может потребоваться отключить некоторые переменные среды, чтобы убедиться, что вы не используете устаревшую среду Docker Machine в своей оболочке или командном окне. Отмените установку переменной среды DOCKER_HOST и связанных с ней переменных. Если вы используете bash, используйте следующую команду: unset $

Если вы видите такие ошибки, как Bind for 0.0.0.0:8080 failed: порт уже выделен или прослушивание tcp:0.0.0.0:8080: bind: адрес уже используется :

Эти ошибки часто вызваны другим программным обеспечением на Mac, использующим эти порты.

Запустите lsof -i tcp:8080, чтобы узнать имя и идентификатор процесса другого процесса и решить, закрыть ли другой процесс или использовать другой порт в вашем приложении Docker.

Известные проблемы

Это взаимодействие между vmnet.framework (используется virtualization.framework ) и VPN-клиентами.

Это артефакт новой виртуализации.framework .

Ядро Linux может время от времени давать сбой. Теперь Docker обнаруживает эту проблему и выводит диалоговое окно с ошибкой, предлагая пользователю возможность быстро перезапустить Linux.

Мы все еще собираем данные и тестируем альтернативные версии ядра.

IPv6 (пока) не поддерживается в Docker Desktop.

Вы можете столкнуться с ошибками при использовании docker-compose up с Docker Desktop ( ValueError: Extra Data ). Мы определили, что это, вероятно, связано с тем, что данные и/или события передаются все сразу, а не по одному, поэтому иногда данные возвращаются в виде объединенных двух и более объектов, что вызывает ошибку.

Принудительное извлечение .dmg после запуска из него Docker.app может привести к тому, что значок кита перестанет отвечать на запросы, задачи Docker будут отображаться как не отвечающие в мониторе активности, а некоторые процессы будут потреблять большое количество ресурсов ЦП. Перезагрузите и перезапустите Docker, чтобы решить эти проблемы.

Docker не запускается автоматически при входе в систему, даже если он включен в > «Настройки». Это связано с рядом проблем с помощником Docker, регистрацией и управлением версиями.

Если вы работаете с такими приложениями, как Apache Maven, которые ожидают настройки для переменных среды DOCKER_HOST и DOCKER_CERT_PATH, укажите их для подключения к экземплярам Docker через сокеты Unix. Например:

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

  • грабли
  • эмбер-сборка
  • Симфония
  • Мадженто
  • Зенд-фреймворк
  • Приложения PHP, использующие Composer для установки зависимостей в папке поставщика

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

Поддержка

Этот раздел содержит инструкции о том, как получить поддержку, и охватывает объем поддержки Docker Desktop.

Docker Desktop предлагает поддержку разработчикам, подписавшимся на уровень Pro, Team или Business. Обновите сейчас, чтобы воспользоваться поддержкой Docker.

Как получить поддержку Docker Desktop?

Если у вас есть платная подписка на Docker, подайте заявку в службу поддержки Docker Desktop.

Пользователи сообщества Docker могут получить поддержку через наши репозитории на Github for-win и for-mac, где мы отвечаем по мере возможности.

Какую поддержку я могу получить?

Если у вас есть платная подписка Docker, вы можете запросить поддержку по следующим типам проблем:

  • Проблемы с обновлением рабочего стола
  • Проблемы с установкой на рабочем столе
    • Сбои при установке
    • Не удается запустить Docker Desktop при первом запуске
    • Программное обеспечение для закрытия сбоев
    • Docker Desktop не работает должным образом

    Что не поддерживается?

    Docker Desktop не поддерживает следующие типы проблем:

    • Использовать на оборудовании или программном обеспечении, отличном от указанного в соответствующей документации, или в сочетании с ним.
    • Работа в неподдерживаемых операционных системах, включая бета-версии и предварительные версии операционных систем.
    • Запуск контейнеров другой архитектуры с помощью эмуляции
    • Поддержка ядра Docker, интерфейса командной строки Docker или других связанных компонентов Linux.
    • Поддержка Kubernetes
    • Функции, помеченные как экспериментальные
    • Администрирование системы/сервера
    • Поддержка рабочего стола в качестве рабочей среды выполнения
    • Масштабное развертывание/установка Desktop на нескольких компьютерах
    • Текущее обслуживание продукта (резервное копирование данных, очистка дискового пространства и настройка ротации журналов)
    • Сторонние приложения, не предоставляемые Docker
    • Измененное или модифицированное программное обеспечение Docker
    • Дефекты в программном обеспечении Docker из-за неисправности оборудования, злоупотребления или неправильного использования.
    • Любая версия программного обеспечения Docker, кроме последней версии
    • Возмещение расходов и расходов на сторонние услуги, не предоставляемые Docker
    • Поддержка Docker не включает обучение, настройку и интеграцию.

    Какие версии поддерживаются?

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

    На скольких компьютерах я могу получить поддержку Docker Desktop?

    Как пользователь Pro вы можете получить поддержку Docker Desktop на одном компьютере. Как команда, вы можете получить поддержку Docker Desktop для количества машин, равного количеству рабочих мест в рамках вашего плана.

    Какие ОС поддерживаются?

    Докер для рабочего стола доступен для Mac и Windows. Информацию о поддерживаемой версии можно найти на следующих страницах:

    Читайте также: