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