Sign inSign up

m986883511/ros

By m986883511

Updated almost 2 years ago

apt install openssh-server vim iputils-ping net-tools curl wget git htop tmux iproute2 supervisor -y

Image
0

583

m986883511/ros repository overview

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

Tag summary

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