Невозможно запустить ssh-сервис по изображению Centos Docker

Вот один способ:

$ paste index.txt data.txt | 
    awk '{for(i=2;i<=NF;i++){printf "%d\t", $1*$(i)}; print "";}' 
1   2   3   4   5   
4   6   8   10  12  
9   12  15  18  21  
16  20  24  28  32  
25  30  35  40  45  
36  42  48  54  60  
49  56  62  70  77  
64  72  80  88  96  

paste соединит соответствующие строки файла, поэтому индекс будет $ 1 в скриптлете awk , который просто просматривает каждое поле и умножает его на текущее значение индекса.

Аналогичный, но немного более идиоматичный подход в Perl:

$ paste index.txt data.txt | perl -lane 'print join "\t",map{$_*$F[0]}@F[1..$#F]'
0
24.12.2018, 08:12
1 ответ

Текущий официальный образ Docker для CentOS содержит systemd, но по умолчанию он неактивен. Это задокументировано на странице Docker Hub для образа CentOS .

Systemd is now included in both the centos:7 and centos:latest base containers, but it is not active by default. In order to use systemd, you will need to include text similar to the example Dockerfile below:

Предоставленный образец Dockerfile выглядит следующим образом:

FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

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

Для запуска контейнера из этого образа также требуется специальный параметр для подключения тома cgroup:

$ docker run -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro systemd-app

Опция -vbind монтирует каталог /sys/fs/cgroupс хоста в контейнер в режиме -только для чтения.

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

$ docker run -it -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /tmp/$(mktemp -d):/run systemd-app

Примечание. :Большая часть этого материала, включая сам файл Docker, по-видимому, взята из этой записи в блоге Дэниела Уолша:Запуск systemd в контейнере Docker .

2
28.01.2020, 04:06

Теги

Похожие вопросы