在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)。

广告
将在 10 秒后关闭
bannerAds