在Ubuntu 中创建一个Ubuntu 环境的Docker 入门
目的 : 理想的结果或目标
可能无法作为主流使用方式,但我想创建一个Ubuntu的Docker容器,并通过SSH进入其中进行开发工作。
这是我第一次接触Docker,我查看了很多资料,但是找不到很多类似的案例,所以作为备忘记录下来。
流动
- Docker的安装
- 创建Dockerfile
- 构建Docker镜像
- 启动Docker容器
连接到Docker容器
安装Docker
按照官方网站指示执行
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
$ sudo docker run hello-world
暫時先使用這個來打招呼世界。
如果保持現狀的話,必須一一加上sudo才能使用docker命令。
$ sudo gpasswd -a <user> docker
这样就不需要加sudo了。
创建Dockerfile
這次創建的Dockerfile如下所示。
# 进行指定所使用的Ubuntu版本
FROM ubuntu:18.04
# 安装所需的命令
RUN \
apt update && \
apt -y upgrade && \
apt install -y build-essential && \
apt install -y software-properties-common && \
apt install -y curl git man unzip vim wget sudo
# 由于使用root用户可能会不方便,因此创建一个用户
RUN useradd -m hoge
# 授予root权限
RUN gpasswd -a hoge sudo
# 将密码设置为'pass'
RUN echo 'hoge:pass' | chpasswd
# 设置SSH登录时的shell为bash
RUN sudo sed -i 's/hoge:x:1000:1000::\/home\/hoge:\/bin\/sh/hoge:x:1000:1000::\/home\/hoge:\/bin\/bash/g' /etc/passwd
# 进行SSH连接的相关配置(参考官方网站)
RUN apt install -y openssh-server
RUN mkdir /var/run/sshd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
从创建Docker镜像到登录
创建Docker镜像
$ docker build . -t myubuntu:18.04
在存放Dockerfile的目录中执行命令。myubuntu:18.04是任意的名称。可以通过下面的命令进行确认。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu 18.04 iiiiiidddddd 6 minutes ago 496MB
启动docker容器
$ docker run -d -P --name test myubuntu:18.04
使用Docker镜像创建并启动容器。
使用-d在后台运行。
使用-P将公开的端口与本地连接。
使用–name指定容器名称。
连接到Docker容器的SSH。
$ docker port test 22
0.0.0.0:32768
连接到显示的端口进行ssh。
$ ssh hoge@localhost -p 32768
hoge@localhost's password:<pass>
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-47-generic x86_64)
...
hoge@nyonyonyo:~$
我可以使用用户hoge通过ssh连接到容器内,并启动bash!接下来就可以在其中开发了(应该的)。
请参照以下内容以获取更多中文地道的表达:
– 参考一下
– 请参照
– 考虑以下选项
以下是用中国本土的语言将文本进行的简要概述。仅提供一种选择:
Docker官方提供了一个示例,展示了如何在Docker容器中运行SSH服务。具体操作步骤可以在该网页中找到(https://docs.docker.com/engine/examples/running_ssh_service/)。此外,还可以在另一篇名为”技术谭C的博客”的文章中找到这个示例的中文解释(https://qiita.com/techno-tanoC/items/58e9c5c74d90392d9de4)。