Управление образами контейнеров Containerd
Управление образами контейнеров Containerd

1. Управление образами контейнеров

1.1 Управление образами контейнеров ContainerdЗаказ

  • dockerиспользоватьdocker imagesЗаказ Управление изображениями
  • 单机containerdиспользоватьctr imagesЗаказ Управление изображениями,CLI для самого контейнера
  • k8sсерединаcontainerdиспользоватьcrictl imagesЗаказ Управление изображениями,Специальный инструмент CLI для сообщества Kubernetes.
Язык кода:text
копировать
Получить помощь по команде
# ctr --help
NAME:
   ctr -
        __
  _____/ /______
 / ___/ __/ ___/
/ /__/ /_/ /
\___/\__/_/

......
Язык кода:text
копировать
Получить помощь по команде
# ctr images
NAME:
   ctr images - manage images

USAGE:
   ctr images command [command options] [arguments...]

COMMANDS:
   check                    check existing images to ensure all content is available locally
   export                   export images
   import                   import images
   list, ls                 list images known to containerd
   mount                    mount an image to a target path
   unmount                  unmount the image from the target
   pull                     pull an image from a remote
   push                     push an image to a remote
   delete, del, remove, rm  remove one or more images by reference
   tag                      tag an image
   label                    set and clear labels for an image
   convert                  convert an image

OPTIONS:
   --help, -h  show help

1.2 Просмотр изображений

Язык кода:text
копировать
# ctr images ls
REF TYPE DIGEST SIZE PLATFORMS LABELS

1.3 Загрузите изображение

Containerd поддерживает стандартные изображения oci, поэтому вы можете напрямую использовать изображения, созданные официальным Docker или DockerFile.

Язык кода:text
копировать
# Имя образа нельзя сокращать --all-platforms: все платформы. Если не добавлено, загрузите текущую архитектуру платформы.
# ctr images pull --all-platforms docker.io/library/nginx:alpine
# ctr images pull docker.io/library/nginx:latest

# uname -a
Язык кода:text
копировать
проиллюстрировать:
При использовании команды ctr для извлечения изображения вы не можете напрямую написать имя образа как `nginx:alpine`
Язык кода:text
копировать
Посмотреть зеркало загруженного контейнера
#ctr изображения ls

REF

TYPE

DIGEST

docker.io/library/nginx:alpine

application/vnd.docker.distribution.manifest.list.v2+json

sha256:da9c94bec1da829ebd52431a84502ec471c8e548ffb2cedbf36260fd9bd1d4d3

SIZE

PLATFORMS

LABELS

9.7 MiB

linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/ppc64le,linux/s390x

Язык кода:text
копировать
Загрузите изображение контейнера на указанную платформу.
# ctr images pull --platform linux/amd64 docker.io/library/nginx:alpine

Контейнеры невозможно запустить без образов.

1.4 Установка зеркала

Удобно просматривать содержимое, содержащееся в изображении.

Язык кода:text
копировать
Поставьте скачанный контейнер Крепление зеркала в текущую файловую систему
# ctr images mount docker.io/library/nginx:alpine /mnt
sha256:af2fcce448e2e4451a5f4796a9bf9cb5c9b5f88e0d6d10029cada42fb9d268ac
/mnt
[root@localhost ~]# ls /mnt
bin  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
Язык кода:text
копировать
удалить
# размонтировать /mnt

1.5 Экспорт изображений

Язык кода:text
копировать
Пучокконтейнер Экспорт изображений
# ctr i export --all-platforms nginx.img docker.io/library/nginx:alpine
Язык кода:text
копировать
иллюстрировать
--all-platforms, экспортировать образы всех платформ,Эта версия — версия 1.6.,Версия 1.4 не требует добавления этой опции.
Язык кода:text
копировать
Просмотр экспортированного изображения контейнера
# ls
nginx.img

# ls -lh
Общая дозировка 196M

-rw-r--r--  1 root root  73M февраль  18 14:48 nginx.img

1.6 Удаление изображения

Язык кода:text
копировать
Удалить указанное изображение контейнера
# ctr image rm docker.io/library/nginx:alpine
docker.io/library/nginx:alpine

Посмотрите на зеркало контейнера еще раз
[root@192 ~]# ctr images ls
REF TYPE DIGEST SIZE PLATFORMS LABELS

1.7 Импорт изображений

Язык кода:text
копировать
Импортируйте изображение контейнера
# ctr изображения импортируют nginx.img
распаковка docker.io/library/nginx:alpine (sha256:da9c94bec1da829ebd52431a84502ec471c8e548ffb2cedbf36260fd9bd1d4d3)... готово

1.8 Изменить тег изображения

Язык кода:text
копировать
# ctr images tag docker.io/library/nginx:alpine nginx:alpine
nginx:alpine

# Рекомендуется изменить имя тега на: Адрес/каталог/имя образа зеркального склада.
Язык кода:text
копировать
проиллюстрировать:
Поместите docker.io/library/nginx:alpine. Изменить на nginx:alpine
Язык кода:text
копировать
Посмотреть измененное зеркало контейнера
# ctr изображения ls
НОМЕР ТИП ДАЙДЖЕСТ РАЗМЕР ПЛАТФОРМЫ ЭТИКЕТКИ
docker.io/library/nginx:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:da9c94bec1da829ebd52431a84502ec471c8e548ffb2cedbf36260fd9bd1d4d3 9,7 МБ Linux/386,Linux/amd64,Linux/arm/v6,Linux/arm/v7,Linux/arm64/v8,Linux/ppc64le,Linux/s390x -
nginx:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:da9c94bec1da829ebd52431a84502ec471c8e548ffb2cedbf36260fd9bd1d4d3 9,7 МБ Linux/386,Linux/amd64,Linux/arm/v6,Linux/arm/v7,Linux/arm64/v8,Linux/ppc64le,Linux/s390x -
Язык кода:text
копировать
Проверьте и сравните изображение контейнера после модификации.
#ctr проверка изображений
ССЫЛКА ТИП СБОРНИКА СТАТУС РАЗМЕР РАСПАКОВАН
docker.io/library/nginx:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:da9c94bec1da829ebd52431a84502ec471c8e548ffb2cedbf36260fd9bd1d4d3 Complete (7/7) 9,7 МБ/9,7 Ми Б правда

nginx:alpine application/vnd.docker.distribution.manifest.list.v2+json sha256:da9c94bec1da829ebd52431a84502ec471c8e548ffb2cedbf36260fd9bd1d4d3 Complete (7/7) 9,7 МБ/9,7 МБ true

2. Управление контейнерами и контейнерами

2.1 Получение справки по команде

2.1.1 Получение справки по команде ctr

Язык кода:text
копировать
[root@localhost ~]# ctr --help
NAME:
   ctr -
        __
  _____/ /______
 / ___/ __/ ___/
/ /__/ /_/ /
\___/\__/_/

containerd CLI


......

2.1.2 Получение справки по созданию команды статического контейнера

Язык кода:text
копировать
# ctr container --help
NAME:
   ctr containers - manage containers

USAGE:
   ctr containers command [command options] [arguments...]

COMMANDS:
   create                   create container
   delete, del, remove, rm  delete one or more existing containers
   info                     get info about a container
   list, ls                 list containers
   label                    set and clear labels for a container
   checkpoint               checkpoint a container
   restore                  restore a container from checkpoint

OPTIONS:
   --help, -h  show help
Язык кода:text
копировать
проиллюстрировать:

Используйте `ctr container create После того, как команда создает контейнер, контейнер не находится в рабочем состоянии, это просто статический контейнер. этот container Объект просто содержит ресурсы и структуру данных конфигурации, необходимую для запуска контейнера, например: namespaces、rootfs Конфигурации и контейнера успешно инициализированы.,Просто пользовательский процесс(Этот случайnginx)Еще не началось。нуждаться Используйте `ctr Команда задач может получить динамический контейнер.

2.1.3 Получение справки по командам динамического контейнера

Язык кода:text
копировать
# ctr run --help
NAME:
   ctr run - run a container

......
Язык кода:text
копировать
проиллюстрировать:
Используйте `ctr Команда run` может создать статический контейнер и запустить его. Запустите его за один шаг.

2.2 Просмотр контейнера

containerПредставляет статическийконтейнер,ДоступныйcАббревиатура означаетcontainer

Язык кода:text
копировать
# ctr container ls
CONTAINER    IMAGE    RUNTIME

или

Язык кода:text
копировать
# ctr c ls
CONTAINER    IMAGE    RUNTIME

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

2.3 Просмотр задач

задача представляет собой процесс, выполняющийся в контейнере, ДоступныйtАббревиатура означаетtask

Язык кода:text
копировать
# ctr task ls
TASK    PID    STATUS

или

Язык кода:text
копировать
# ctr t ls
TASK    PID    STATUS

2.4 Создайте статический контейнер

Язык кода:text
копировать
# ctr c create docker.io/library/nginx:alpine nginx1
Язык кода:text
копировать
# ctr container ls
CONTAINER    IMAGE                             RUNTIME
nginx1       docker.io/library/nginx:alpine    io.containerd.runc.v2
Язык кода:text
копировать
Посмотреть детали контейнера
# ctr информация о контейнере nginx1

2.5 Запуск статического контейнера как динамического

Язык кода:text
копировать
копироватьконтейнерд подключить инструмент для прокладки RunC к системе
# ls usr/local/bin/
ContainerdContainerd-ShimContainerd-Shim-runc-v1Containerd-Shim-runc-v2Containerd-stress crictl critest ctd-decoder ctr
[root@localhost ~]# cp usr/local/bin/containerd-shim-runc-v2 /usr/bin/
Язык кода:text
копировать
Запустить задачу,То есть процесс выполняется в контейнере,Это динамический контейнер.
# запуск задачи ctr -d nginx1
/docker-entrypoint.sh: /docker-entrypoint.d/ не пуст, попытается выполнить настройку.
/docker-entrypoint.sh: поиск сценариев оболочки в /docker-entrypoint.d/
Язык кода:text
копировать
проиллюстрировать:
-d означает, что демон работает в фоновом режиме, иначе терминал зависнет.
Язык кода:text
копировать
Просмотр хост-процесса, в котором находится контейнер,Он существует как хост-процесс.
#ctr задача лс
ПИД-СТАТУС ЗАДАЧИ
nginx1 3395 РАБОТАЕТ
Язык кода:text
копировать
Просмотр процессов контейнера (все процессы физической машины)
# задача ctr ps nginx1
ПИД-ИНФОРМАЦИЯ
3395 -
3434 -
Язык кода:text
копировать
Физическая машина видит соответствующий процесс
# пс -эф |
root 3395 3375 0 19:16 ? 00:00:00 nginx: главный процесс nginx -g демон отключен;
101 3434 3395 0 19:16 00:00:00 nginx: рабочий процесс

2.6 Введите операцию контейнера

Язык кода:text
копировать
# ctr task exec --exec-id 1 nginx1 /bin/sh

# ifconfig Просмотр информации о сетевой карте

...

# curl 127.0.0.1 Доступ к локально предоставляемым веб-сервисам
...
Язык кода:text
копировать
проиллюстрировать:
дляexecпроцесс установилid,Вы можете ввести все, что захотите,Просто убедитесь, что это уникально,Вы также можете использовать переменную $RANDOM.

2.7 Непосредственный запуск динамического контейнера

Язык кода:text
копировать
# ctr run -d --net-host docker.io/library/nginx:alpine nginx2
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
Язык кода:text
копировать
проиллюстрировать:
* -d Представляет дамеона, работающего на заднем плане.
* --net-host IP-адрес, представляющий контейнер, — это IP-адрес хост-машины (эквивалент сети типа хоста в докере).
Язык кода:text
копировать
Просмотр работающего контейнера
#ctr контейнер ls
ВРЕМЯ ВЫПОЛНЕНИЯ ОБРАЗА КОНТЕЙНЕРА
nginx2 docker.io/library/nginx:alpine io.containerd.runc.v2
Язык кода:text
копировать
Просмотр работающего контейнерасерединазапущенный процесс,теперь этозадачи
# ctr задачи ls
ПИД-СТАТУС ЗАДАЧИ
nginx2 4061 РАБОТАЕТ
Язык кода:text
копировать
Введите контейнер
# ctr Task exec --exec-id 1 -t nginx2 /bin/sh
Язык кода:text
копировать
/ # ifconfig 
ens33     Link encap:Ethernet  HWaddr 00:0C:29:B1:B6:1D
          inet addr:192.168.10.164  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::2b33:40ed:9311:8812/64 Scope:Link
          inet6 addr: fe80::adf4:a8bc:a1c:a9f7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:55360 errors:0 dropped:0 overruns:0 frame:0
          TX packets:30526 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:53511295 (51.0 MiB)  TX bytes:2735050 (2.6 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:68 errors:0 dropped:0 overruns:0 frame:0
          TX packets:68 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5916 (5.7 KiB)  TX bytes:5916 (5.7 KiB)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:E9:51:82
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
Язык кода:text
копировать
Добавьте файлы веб-сайтов для веб-сайтов, работающих в контейнере.
/ # echo "nginx2" > /usr/share/nginx/html/index.html
/ # exit
Язык кода:text
копировать
Посетите веб-сайт на хост-компьютере
[root@localhost ~]# завиток 192.168.10.164
nginx2

2.8 Приостановить контейнер

Язык кода:text
копировать
Посмотреть статус контейнера
#ctr задачи лс
ПИД-СТАТУС ЗАДАЧИ
nginx2 4061 РАБОТАЕТ
Язык кода:text
копировать
Приостановить контейнер
# задачи ctr приостанавливают nginx2
Язык кода:text
копировать
снова Посмотреть статус контейнера,Посмотрите, его статус ПРИОСТАНОВЛЕНО.,Указывает на остановку.
#ctr задачи лс
ПИД-СТАТУС ЗАДАЧИ
nginx2 4061 ПРИОСТАНОВЛЕНО
Язык кода:text
копировать
[root@localhost ~]# curl http://192.168.10.164
При доступе на хост-компьютере обнаруживается, что доступ к веб-сайту невозможен.

2.9 Восстановление контейнеров

Язык кода:text
копировать
Используйте команду возобновления для восстановления контейнера
# задачи ctr возобновляют работу nginx2
Язык кода:text
копировать
Просмотр статуса после восстановления
#ctr задачи лс
ПИД-СТАТУС ЗАДАЧИ
nginx2 4061 РАБОТАЕТ
Язык кода:text
копировать
Доступ к услугам, предоставляемым в контейнере на хост-компьютере
# локон http://192.168.10.164
nginx2

2.10 Остановить контейнер

Язык кода:text
копировать
# ctr tasks --help
......
Язык кода:text
копировать
Используйте команду kill, чтобы остановить процессы, запущенные в контейнере.,оба для остановки контейнера
# задачи ctr убивают nginx2
Язык кода:text
копировать
Просмотр статуса после контейнерстопа,СТАТУС: ОСТАНОВЛЕНО
# ctr задачи ls
ПИД-СТАТУС ЗАДАЧИ
nginx1 3395 РАБОТАЕТ
nginx2 4061 ОСТАНОВЛЕНО

2.11 Удалить контейнер

Язык кода:text
копировать
# ctr tasks delete nginx2
Сначала необходимо удалить задачу, а затем удалить контейнер.
Язык кода:text
копировать
Посмотреть статический контейнер,Убедитесь, что он все еще существует в системе.
#ctr контейнер ls
ВРЕМЯ ВЫПОЛНЕНИЯ ОБРАЗА КОНТЕЙНЕРА
nginx2 docker.io/library/nginx:alpine io.containerd.runc.v2
Язык кода:text
копировать
удалитьконтейнер
# ctr container delete nginx2

3. Containerd использует частное хранилище образов контейнеров Harbor.

3.1 Подготовка гавани

3.2 Настройте Containerd для использования склада в гавани

3.2.1 Разрешение имени хоста порта

Добавьте эту информацию о конфигурации на все хосты, где установлен контейнер.

Язык кода:text
копировать
# vim /etc/hosts
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.165 harbor.kubemsb.com
Язык кода:text
копировать
иллюстрировать
* 192.168.10.165 — IP порта.

* Harbor.kubemsb.com рекомендует использовать формат полного доменного имени. Если вы используете короткое имя, например Harbour, за которым следует Download. изображение будет неправильным

3.2.2 Изменение файла конфигурации Containerd

Язык кода:text
копировать
Этот файл конфигурации был заранее заменен. Просто измените адрес склада зеркала локального контейнера.
# vim /etc/containerd/config.toml
# cat /etc/containerd/config.toml
root = "/var/lib/containerd"
state = "/run/containerd"
oom_score = -999

[grpc]
  address = "/run/containerd/containerd.sock"
  uid = 0
  gid = 0
  max_recv_message_size = 16777216
  max_send_message_size = 16777216

[debug]
  address = ""
  uid = 0
  gid = 0
  level = ""

[metrics]
  address = ""
  grpc_histogram = false

[cgroup]
  path = ""

[plugins]
  [plugins.cgroups]
    no_prometheus = false
  [plugins.cri]
    stream_server_address = "127.0.0.1"
    stream_server_port = "0"
    enable_selinux = false
    sandbox_image = "easzlab/pause-amd64:3.2"
    stats_collect_period = 10
    systemd_cgroup = false
    enable_tls_streaming = false
    max_container_log_line_size = 16384
    [plugins.cri.containerd]
      snapshotter = "overlayfs"
      no_pivot = false
      [plugins.cri.containerd.default_runtime]
        runtime_type = "io.containerd.runtime.v1.linux"
        runtime_engine = ""
        runtime_root = ""
      [plugins.cri.containerd.untrusted_workload_runtime]
        runtime_type = ""
        runtime_engine = ""
        runtime_root = ""
    [plugins.cri.cni]
      bin_dir = "/opt/kube/bin"
      conf_dir = "/etc/cni/net.d"
      conf_template = "/etc/cni/net.d/10-default.conf"
    [plugins.cri.registry]
      [plugins.cri.registry.mirrors]
        [plugins.cri.registry.mirrors."docker.io"]
          endpoint = [
            "https://docker.mirrors.ustc.edu.cn",
            "http://hub-mirror.c.163.com"
          ]
        [plugins.cri.registry.mirrors."gcr.io"]
          endpoint = [
            "https://gcr.mirrors.ustc.edu.cn"
          ]
        [plugins.cri.registry.mirrors."k8s.gcr.io"]
          endpoint = [
            "https://gcr.mirrors.ustc.edu.cn/google-containers/"
          ]
        [plugins.cri.registry.mirrors."quay.io"]
          endpoint = [
            "https://quay.mirrors.ustc.edu.cn"
          ]
        [plugins.cri.registry.mirrors."harbor.kubemsb.com"]   Добавьте это сюда, добавьте этот абзац под ускорителем изображений.
          endpoint = [
            "http://harbor.kubemsb.com"
          ]
    [plugins.cri.x509_key_pair_streaming]
      tls_cert_file = ""
      tls_key_file = ""
  [plugins.diff-service]
    default = ["walking"]
  [plugins.linux]
    shim = "containerd-shim"
    runtime = "runc"
    runtime_root = ""
    no_shim = false
    shim_debug = false
  [plugins.opt]
    path = "/opt/containerd"
  [plugins.restart]
    interval = "10s"
  [plugins.scheduler]
    pause_threshold = 0.02
    deletion_threshold = 0
    mutation_threshold = 100
    schedule_delay = "0s"
    startup_delay = "100ms"
Язык кода:text
копировать
Перезапустить контейнер,для облегчения перезагрузки файлов конфигурации.
# systemctl демон-перезагрузка
# systemctl перезапускаем контейнер

3.2.3 ctr скачать изображение

Язык кода:text
копировать
Скачать зеркало контейнера
# ctr images pull --platform linux/amd64 docker.io/library/nginx:latest
Язык кода:text
копировать
иллюстрировать:
* --platform linux/amd64 Укажите системную платформу. Вы также можете использовать --all-platforms, чтобы указать все образы платформ.
Язык кода:text
копировать
Посмотреть зеркало загруженного контейнера
#ctr изображения ls
REF                              TYPE                                                      DIGEST                                                                  SIZE      PLATFORMS                                                                                                                          LABELS

docker.io/library/nginx:latest   application/vnd.docker.distribution.manifest.list.v2+json sha256:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767 54.1 MiB  linux/386,linux/amd64,linux/arm/v5,linux/arm/v7,linux/arm64/v8,linux/mips64le,linux/ppc64le,linux/s390x                            -

3.2.4 ctr загрузить изображение

Загрузить в публичный проект библиотеки Харбора

Язык кода:text
копировать
Восстановить новый тег
# тег изображений ctr docker.io/library/nginx:latest Harbor.kubemsb.com/library/nginx:latest
Harbor.kubemsb.com/library/nginx:latest
Язык кода:text
копировать
Просмотр созданного изображения контейнера
# ctr изображения ls
НОМЕР ТИП ДАЙДЖЕСТ РАЗМЕР ПЛАТФОРМЫ ЭТИКЕТКИ
docker.io/library/nginx:latest application/vnd.docker.distribution.manifest.list.v2+json sha256:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767 54,1 МБ Linux/386,Linux/amd64,Linux/arm/v5,Linux/arm/v7,Linux/arm64/v8,Linux/mips64le,Linux/ppc64le,Linux/s390x -
Harbor.kubemsb.com/library/nginx:latest application/vnd.docker.distribution.manifest.list.v2+json sha256:2834dc507516af02784808c5f48b7cbe38b8ed5d0f4837f16e78d00deb7e7767 54,1 МБ Linux/386,Linux/amd64,Linux/arm/v5,Linux/arm/v7,Linux/arm64/v8,Linux/mips64le,Linux/ppc64le,Linux/s390x -
Язык кода:text
копировать
Отправьте изображение контейнера в Харбор.
# ctr images push --platform linux/amd64 --plain-http -u администратор:пароль harbor.kubemsb.com/library/nginx:latest
Язык кода:text
копировать
иллюстрировать:

* Сначала отметьте, а затем нажмите
* Поскольку наша гавань использует протокол http, а не протокол https, нам нужно добавить --plain-http`
* `--user admin:Harbor12345`Укажите логин и пароль гавани
Язык кода:text
копировать
Источник:
манифест-sha256:0fd68ec4b64b8dbb2bef1f1a5de9d47b658afd3635dc9c45bf0cbeac46e72101: сделано |++++++++++++++++++++++++++++++++++++|
config-sha256:dd025cdfe837e1c6395365870a491cf16bae668218edb07d85c626928a60e478: сделано |++++++++++++++++++++++++++++++++++++|
Прошло: всего 0,5 с: 9,3 Ки (18,1 Ки Б/с)
Язык кода:text
копировать
Загрузите загруженное изображение контейнера
# получение изображений ctr --plain-http Harbor.kubemsb.com/library/nginx:latest
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода