最近换了新电脑,开始对新电脑进行了一些基础的配置。由于一些学习上的需求,我需要基于Linux环境写一些c++代码。但是常见的虚拟机软件都需要收费,因此我只能将目光转移到了Docker上。这篇博客主要记录了如何使用docker拉取ubuntu镜像并使用ssh连接容器进行简单的开发工作。
0x00. 在 Mac 上安装 Docker
在这里我主要使用Homebrew进行对Docker的安装。
1 | # 需要一个Docker daemon开启docker服务,因此这个是必备的 |
安装完成后启动台中应该会多了一个Docker的应用程序,点击它以启动Docker服务,正常的话会在菜单栏显示一个docker的图标。
在terminal中测试
1 | docker version |
如果正常打印输出,则Docker环境安装完成。
0x01. 拉取 Ubuntu 镜像
一些简单命令:
1 | # 查看本地所有镜像 |
由于是简单的测试,我们对ubuntu系统的版本并无严格要求,因此直接拉取标签为latest的ubuntu镜像即可。
1 | docker pull ubuntu |
0x02. 运行容器并安装sshd
通过运行下列命令,我们可以得到一个实例化的容器。
1 | docker run -it -exec ubuntu /bin/bash |
接下来便是常规操作了:
1 | # 备选:可以先修改一下root密码 |
我们可以简单配置一下sshd,使其开启公钥访问。
1 | # 编辑sshd配置文件,开启公钥访问 |
0x03. Commit 至新镜像
由以上两步我们基本上完成了对ubuntu的简单定制(即openssh的配置),至此我们可以提交一版用于后续的使用。
1 | docker commit -m "some description." container_ID yourImageName:TAG |
0x04. Run 新镜像
接着上一步,我们对新提交的镜像进行运行得到一个新的容器。
1 | docker run -d -p 10022:22 --name ubuntu_test yourImageName:TAG /usr/sbin/sshd -D |
上述命令我们将容器在后台执行,并映射了本机的10022端口至容器内部的22端口,并将容器运行开始通过/usr/sbin/sshd -D
命令开启sshd服务。
接下来,我们在本地机器上就可以通过ssh进行连接了
1 | ssh -p 10022 fan@localhost |