apt install openssh-server vim iputils-ping net-tools curl wget git htop tmux iproute2 supervisor -y
583
dockerfile文件
FROM osrf/ros:melodic-desktop-full
RUN apt-get update
RUN apt install openssh-server vim iputils-ping net-tools curl wget git htop tmux iproute2 supervisor -y
调试模式
docker run --rm -it --privileged --network host --name test -v [包含ccbs-cmd.sh和ccbs-env.sh脚本文件的目录]:/root/ccbs m986883511/ros:melodic-desktop-full-dev bash
后台模式
docker run --rm -it --privileged --network host --name test -v [包含ccbs-cmd.sh和ccbs-env.sh脚本文件的目录]:/root/ccbs m986883511/ros:melodic-desktop-full-dev bash /root/ccbs/ccbs-cmd.sh
准备的 ccbs-cmd.sh 文件
#! /bin/bash
WORK_DIR=$(cd $(dirname $0) && pwd)
cd $WORK_DIR
function log() {
local level=$1
local message=$2
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
case $level in
"INFO")
echo -e "[\033[32m${timestamp}\033[0m] [\033[32m${level}\033[0m] - ${message}"
;;
"WARN")
echo -e "[\033[33m${timestamp}\033[0m] [\033[33m${level}\033[0m] - ${message}"
;;
"ERROR")
echo -e "[\033[31m${timestamp}\033[0m] [\033[31m${level}\033[0m] - ${message}"
;;
*)
echo "[$timestamp] [$level] - $message"
;;
esac
}
function completed() {
if [[ $1 -eq 0 ]]; then
log "INFO" "$2 success"
else
log "ERROR" "$2 failed"
if [ $# -ge 3 ]; then
log "INFO" "$3"
fi
exit 1
fi
}
function modify_root_password() {
local password=$ROOT_PASSWORD
if [ -z "$password" ]; then
log "ERROR" "ROOT_PASSWORD 未设置"
exit 1
fi
log "INFO" "修改root密码"
echo "root:$password" | chpasswd
log "INFO" "已修改root密码为$password"
}
function modify_ssh_config() {
local port=$SSH_PORT
if [ -z "$port" ]; then
log "ERROR" "SSH_PORT 未设置"
exit 1
fi
log "INFO" "修改SSH配置"
# 修改SSH端口为10022
sed -i 's/^#\?Port .*/Port '$port'/' /etc/ssh/sshd_config
completed $? "修改SSH端口为$port"
# 允许root用户登录
sed -i 's/^#\?PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config
completed $? "允许root用户登录"
mkdir -p /run/sshd
completed $? "创建/run/sshd目录"
if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
log "INFO" "生成SSH密钥"
ssh-keygen -A
completed $? "生成SSH密钥"
else
log "INFO" "SSH密钥已存在, 跳过生成"
fi
}
function setup_ccbs_env() {
if [ ! -f "ccbs-env.sh" ]; then
log "ERROR" "ccbs-env.sh 不存在"
exit 1
fi
source ccbs-env.sh
completed $? "设置环境变量"
cp ccbs-env.sh /etc/profile.d/ccbs-env.sh
completed $? "复制环境变量到 /etc/profile.d/ccbs-env.sh"
}
function main() {
setup_ccbs_env
modify_root_password
modify_ssh_config
# 阻塞的命令
log "INFO" "启动SSH服务"
/usr/sbin/sshd -D
}
main
准备环境变量ccbs-env.sh 文件
# 需要自行修改
ROOT_PASSWORD=password
SSH_PORT=10023
ROS_DISTRO=melodic
export ROOT_PASSWORD
export SSH_PORT
export ROS_DISTRO
Content type
Image
Digest
sha256:6eb1b8eb3…
Size
1.7 GB
Last updated
almost 2 years ago
docker pull m986883511/ros:noetic-desktop-full-dev-moveit