docker 中安装 ubuntu 系统

  • 拉取 ubuntu 镜像
    docker pull ubuntu:latest
  • 进入镜像并将其启动
    docker run -it ubuntu:latest /bin/bash
  • 在镜像内安装 ssh 服务
    ## 更新apt,这一步不可少
    apt update && apt upgrade -y

    ## 安装 openssh-server 服务
    apt install -y openssh-server
  • ssh 配置
    sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
    sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

    ## 设置ssh的账号密码,并启动 ssh
    echo 'root:your_password' | chpasswd
    service ssh start
  • 提交新的镜像,由于在前面改动了镜像的内容,因此,需要将这个镜像提交为新的镜像。
    docker commit my_ubuntu_container my_ubuntu_with_ssh
  • 提交完成后,images 会多出一个名为 my_ubuntu_with_ssh 的镜像,这个镜像就是我们刚才提交的镜像
    ## 查看镜像列表
    docker images

    ## 删除旧的container,及旧的镜像,
    docker stop old_container_id
    docker rm old_container_id
    docker rmi my_ubuntu_container:latest


    ## 启动新的镜像,静默运行,并将其端口映射为本机的 2222 端口,这样就可以通过 ssh 本机ip+端口访问这台 ubuntu 主机了
    docker run -d -p 2222:22 my_ubuntu_with_ssh:latest /usr/sbin/sshd -D

如何中间断开了 ubuntu 系统的 bash,再次进入时,如果 container 是启动的情况下可以使用 attach 启动,没启动的话,可以通过 exec 启动


    ## container 启动的时候,通过这个连接
    docker attach container_id

    ## 没启动是通过 exec 连接
    docker exec -it container_id /bin/bash

在系统中安装有用的工具

    apt install curl nano vim nginx -y

当启动镜像后,在镜像内进行了修改,此时,如果需要保存,要记得做如下操作,否则更改将会丢失

    ## 1. 停止容器
    docker stop <container_id>

    ## 2. 提交容器
    docker commit <container_id> my-nginx-temp

    ## 3. 删除旧容器
    docker rm <container_id>

    ## 4. 添加端口映射
    docker run -d -p 2222:22 -p 8000:80 --name ubantu_sh ubuntu_ssh:latest /usr/sbin/sshd -D