docker学习:fedora基础容器

1.Fedora基础容器

1.Fedora容器常用包

使用前面介绍的容器启动,新建fedora基础容器,常用的包如下:

dnf install vim -y
dnf install iputils -y
dnf install net-tools -y
dnf install python3-pip -y
dnf install curl -y
dnf install wget -y

dnf install gcc -y
dnf install g++ -y
dnf install ruby -y
dnf install java-latest-openjdk.aarch64 -y

# 清除缓存
dnf clean all

2.Fedora容器安装ssh服务器

对于Fedora容器安装ssh服务器,默认就没有那么容易了。使用上述方式启动容器后,安装ssh服务器,但是无法启动,常见的问题如下:

  • 问题1:service sshd无法启动
service sshd
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, reload-or-restart, try-reload-or-restart, force-reload, status, condrestart). For other actions, please try to use systemctl.
  • 问题2:systemctl start sshd无法启动
systemctl start sshd
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
  • 问题3:/usr/sbin/init无法启动容器
    问题2的原因是启动容器使用的是"/bin/bash",导致1号进程无法使用systemctl命令。
sudo docker run -i -t -d -v /share:/share -p 12122:22 --privileged=true --name fdocker2 --hostname fdocker2 fedora:latest /usr/sbin/init
6b7aa89a4b8bc3e3fb6514e468c79a95697f02d89378280cfd8bd910ba36ce57
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/usr/sbin/init": stat /usr/sbin/init: no such file or directory: unknown.

解决的办法是我们自己制作镜像,先使用下面的命令启动容器:

sudo docker run -i -t -d -v /share:/share -p 12122:22 --privileged=true --name fdocker2 --hostname fdocker2 fedora:latest /bin/bash

然后安装initscripts包,并导出镜像。

# 安装包
dnf install initscripts -y

#导出镜像
docker export -o fedora0.tar fdocker2
docker import fedora0.tar
docker tag xxx local-fedora:v1.0

# 启动docker
sudo docker run -i -t -d -v /share:/share -p 13122:22 --privileged=true --name fdocker3 --hostname fdocker3 fedora:latest /usr/sbin/init

# 进入docker
sudo docker exec -it fdocker3 bash

# 安装ssh服务器
dnf install openssh-server
service start sshd

使用本地制作的镜像重新拉起新的容器,就可以使用systemctl启动服务了。

# service启动
service start sshd
# 或者
systemctl start sshd

你可能感兴趣的:(docker学习:fedora基础容器)