docker images
Заказ Управление изображениямиctr images
Заказ Управление изображениями,CLI для самого контейнераcrictl images
Заказ Управление изображениями,Специальный инструмент CLI для сообщества Kubernetes.Получить помощь по команде
# ctr --help
NAME:
ctr -
__
_____/ /______
/ ___/ __/ ___/
/ /__/ /_/ /
\___/\__/_/
......
Получить помощь по команде
# 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
# ctr images ls
REF TYPE DIGEST SIZE PLATFORMS LABELS
Containerd поддерживает стандартные изображения oci, поэтому вы можете напрямую использовать изображения, созданные официальным Docker или DockerFile.
# Имя образа нельзя сокращать --all-platforms: все платформы. Если не добавлено, загрузите текущую архитектуру платформы.
# ctr images pull --all-platforms docker.io/library/nginx:alpine
# ctr images pull docker.io/library/nginx:latest
# uname -a
проиллюстрировать:
При использовании команды ctr для извлечения изображения вы не можете напрямую написать имя образа как `nginx:alpine`
Посмотреть зеркало загруженного контейнера
#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 |
Загрузите изображение контейнера на указанную платформу.
# ctr images pull --platform linux/amd64 docker.io/library/nginx:alpine
Контейнеры невозможно запустить без образов.
Удобно просматривать содержимое, содержащееся в изображении.
Поставьте скачанный контейнер Крепление зеркала в текущую файловую систему
# 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
удалить
# размонтировать /mnt
Пучокконтейнер Экспорт изображений
# ctr i export --all-platforms nginx.img docker.io/library/nginx:alpine
иллюстрировать
--all-platforms, экспортировать образы всех платформ,Эта версия — версия 1.6.,Версия 1.4 не требует добавления этой опции.
Просмотр экспортированного изображения контейнера
# ls
nginx.img
# ls -lh
Общая дозировка 196M
-rw-r--r-- 1 root root 73M февраль 18 14:48 nginx.img
Удалить указанное изображение контейнера
# ctr image rm docker.io/library/nginx:alpine
docker.io/library/nginx:alpine
Посмотрите на зеркало контейнера еще раз
[root@192 ~]# ctr images ls
REF TYPE DIGEST SIZE PLATFORMS LABELS
Импортируйте изображение контейнера
# ctr изображения импортируют nginx.img
распаковка docker.io/library/nginx:alpine (sha256:da9c94bec1da829ebd52431a84502ec471c8e548ffb2cedbf36260fd9bd1d4d3)... готово
# ctr images tag docker.io/library/nginx:alpine nginx:alpine
nginx:alpine
# Рекомендуется изменить имя тега на: Адрес/каталог/имя образа зеркального склада.
проиллюстрировать:
Поместите docker.io/library/nginx:alpine. Изменить на nginx:alpine
Посмотреть измененное зеркало контейнера
# 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 -
Проверьте и сравните изображение контейнера после модификации.
#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
[root@localhost ~]# ctr --help
NAME:
ctr -
__
_____/ /______
/ ___/ __/ ___/
/ /__/ /_/ /
\___/\__/_/
containerd CLI
......
# 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
проиллюстрировать:
Используйте `ctr container create После того, как команда создает контейнер, контейнер не находится в рабочем состоянии, это просто статический контейнер. этот container Объект просто содержит ресурсы и структуру данных конфигурации, необходимую для запуска контейнера, например: namespaces、rootfs Конфигурации и контейнера успешно инициализированы.,Просто пользовательский процесс(Этот случайnginx)Еще не началось。нуждаться Используйте `ctr Команда задач может получить динамический контейнер.
# ctr run --help
NAME:
ctr run - run a container
......
проиллюстрировать:
Используйте `ctr Команда run` может создать статический контейнер и запустить его. Запустите его за один шаг.
container
Представляет статическийконтейнер,Доступныйc
Аббревиатура означаетcontainer
# ctr container ls
CONTAINER IMAGE RUNTIME
или
# ctr c ls
CONTAINER IMAGE RUNTIME
Приведенная выше команда не может проверить, является ли контейнер статическим или динамическим.
задача представляет собой процесс, выполняющийся в контейнере, Доступныйt
Аббревиатура означаетtask
# ctr task ls
TASK PID STATUS
или
# ctr t ls
TASK PID STATUS
# ctr c create docker.io/library/nginx:alpine nginx1
# ctr container ls
CONTAINER IMAGE RUNTIME
nginx1 docker.io/library/nginx:alpine io.containerd.runc.v2
Посмотреть детали контейнера
# ctr информация о контейнере nginx1
копироватьконтейнерд подключить инструмент для прокладки 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/
Запустить задачу,То есть процесс выполняется в контейнере,Это динамический контейнер.
# запуск задачи ctr -d nginx1
/docker-entrypoint.sh: /docker-entrypoint.d/ не пуст, попытается выполнить настройку.
/docker-entrypoint.sh: поиск сценариев оболочки в /docker-entrypoint.d/
проиллюстрировать:
-d означает, что демон работает в фоновом режиме, иначе терминал зависнет.
Просмотр хост-процесса, в котором находится контейнер,Он существует как хост-процесс.
#ctr задача лс
ПИД-СТАТУС ЗАДАЧИ
nginx1 3395 РАБОТАЕТ
Просмотр процессов контейнера (все процессы физической машины)
# задача ctr ps nginx1
ПИД-ИНФОРМАЦИЯ
3395 -
3434 -
Физическая машина видит соответствующий процесс
# пс -эф |
root 3395 3375 0 19:16 ? 00:00:00 nginx: главный процесс nginx -g демон отключен;
101 3434 3395 0 19:16 00:00:00 nginx: рабочий процесс
# ctr task exec --exec-id 1 nginx1 /bin/sh
# ifconfig Просмотр информации о сетевой карте
...
# curl 127.0.0.1 Доступ к локально предоставляемым веб-сервисам
...
проиллюстрировать:
дляexecпроцесс установилid,Вы можете ввести все, что захотите,Просто убедитесь, что это уникально,Вы также можете использовать переменную $RANDOM.
# 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/
проиллюстрировать:
* -d Представляет дамеона, работающего на заднем плане.
* --net-host IP-адрес, представляющий контейнер, — это IP-адрес хост-машины (эквивалент сети типа хоста в докере).
Просмотр работающего контейнера
#ctr контейнер ls
ВРЕМЯ ВЫПОЛНЕНИЯ ОБРАЗА КОНТЕЙНЕРА
nginx2 docker.io/library/nginx:alpine io.containerd.runc.v2
Просмотр работающего контейнерасерединазапущенный процесс,теперь этозадачи
# ctr задачи ls
ПИД-СТАТУС ЗАДАЧИ
nginx2 4061 РАБОТАЕТ
Введите контейнер
# ctr Task exec --exec-id 1 -t nginx2 /bin/sh
/ # 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)
Добавьте файлы веб-сайтов для веб-сайтов, работающих в контейнере.
/ # echo "nginx2" > /usr/share/nginx/html/index.html
/ # exit
Посетите веб-сайт на хост-компьютере
[root@localhost ~]# завиток 192.168.10.164
nginx2
Посмотреть статус контейнера
#ctr задачи лс
ПИД-СТАТУС ЗАДАЧИ
nginx2 4061 РАБОТАЕТ
Приостановить контейнер
# задачи ctr приостанавливают nginx2
снова Посмотреть статус контейнера,Посмотрите, его статус ПРИОСТАНОВЛЕНО.,Указывает на остановку.
#ctr задачи лс
ПИД-СТАТУС ЗАДАЧИ
nginx2 4061 ПРИОСТАНОВЛЕНО
[root@localhost ~]# curl http://192.168.10.164
При доступе на хост-компьютере обнаруживается, что доступ к веб-сайту невозможен.
Используйте команду возобновления для восстановления контейнера
# задачи ctr возобновляют работу nginx2
Просмотр статуса после восстановления
#ctr задачи лс
ПИД-СТАТУС ЗАДАЧИ
nginx2 4061 РАБОТАЕТ
Доступ к услугам, предоставляемым в контейнере на хост-компьютере
# локон http://192.168.10.164
nginx2
# ctr tasks --help
......
Используйте команду kill, чтобы остановить процессы, запущенные в контейнере.,оба для остановки контейнера
# задачи ctr убивают nginx2
Просмотр статуса после контейнерстопа,СТАТУС: ОСТАНОВЛЕНО
# ctr задачи ls
ПИД-СТАТУС ЗАДАЧИ
nginx1 3395 РАБОТАЕТ
nginx2 4061 ОСТАНОВЛЕНО
# ctr tasks delete nginx2
Сначала необходимо удалить задачу, а затем удалить контейнер.
Посмотреть статический контейнер,Убедитесь, что он все еще существует в системе.
#ctr контейнер ls
ВРЕМЯ ВЫПОЛНЕНИЯ ОБРАЗА КОНТЕЙНЕРА
nginx2 docker.io/library/nginx:alpine io.containerd.runc.v2
удалитьконтейнер
# ctr container delete nginx2
Добавьте эту информацию о конфигурации на все хосты, где установлен контейнер.
# 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
иллюстрировать
* 192.168.10.165 — IP порта.
* Harbor.kubemsb.com рекомендует использовать формат полного доменного имени. Если вы используете короткое имя, например Harbour, за которым следует Download. изображение будет неправильным
Этот файл конфигурации был заранее заменен. Просто измените адрес склада зеркала локального контейнера.
# 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"
Перезапустить контейнер,для облегчения перезагрузки файлов конфигурации.
# systemctl демон-перезагрузка
# systemctl перезапускаем контейнер
Скачать зеркало контейнера
# ctr images pull --platform linux/amd64 docker.io/library/nginx:latest
иллюстрировать:
* --platform linux/amd64 Укажите системную платформу. Вы также можете использовать --all-platforms, чтобы указать все образы платформ.
Посмотреть зеркало загруженного контейнера
#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 -
Загрузить в публичный проект библиотеки Харбора
Восстановить новый тег
# тег изображений ctr docker.io/library/nginx:latest Harbor.kubemsb.com/library/nginx:latest
Harbor.kubemsb.com/library/nginx:latest
Просмотр созданного изображения контейнера
# 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 -
Отправьте изображение контейнера в Харбор.
# ctr images push --platform linux/amd64 --plain-http -u администратор:пароль harbor.kubemsb.com/library/nginx:latest
иллюстрировать:
* Сначала отметьте, а затем нажмите
* Поскольку наша гавань использует протокол http, а не протокол https, нам нужно добавить --plain-http`
* `--user admin:Harbor12345`Укажите логин и пароль гавани
Источник:
манифест-sha256:0fd68ec4b64b8dbb2bef1f1a5de9d47b658afd3635dc9c45bf0cbeac46e72101: сделано |++++++++++++++++++++++++++++++++++++|
config-sha256:dd025cdfe837e1c6395365870a491cf16bae668218edb07d85c626928a60e478: сделано |++++++++++++++++++++++++++++++++++++|
Прошло: всего 0,5 с: 9,3 Ки (18,1 Ки Б/с)
Загрузите загруженное изображение контейнера
# получение изображений ctr --plain-http Harbor.kubemsb.com/library/nginx:latest