![480a4512410cdd7a0f7c3a0ab180405e.png](https://i-blog.csdnimg.cn/blog_migrate/48ec03d28589a6f5369ae2128097de89.jpeg)
环境 :Ubuntu18 x86_64 GNU/Linux
准备Dockerfile:
Dockerfile是用来创建Docker镜像的配置文件。
操作步骤:
- 创建mydocker文件夹
mkdir mydocker
cd mydocer
2.新建文件Dockerfile(linux下用vim编辑)
vim Dockerfile
3.复制以下内容到该文件
# setting base image
FROM debian
RUN apt-get update
# Set the locale
RUN apt-get install -y locales
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
RUN dpkg-reconfigure --frontend=noninteractive locales
RUN update-locale LANG=en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
# new a directory for sshd to run
RUN mkdir -p /var/run/sshd
# installing ssh server
RUN apt-get install -y openssh-server
# installing sudo
RUN apt-get install -y sudo
# make ssh services use IPv4 to let X11 forwarding work correctly
RUN echo AddressFamily inet >> /etc/ssh/sshd_config
# defining user account imformation
ARG username=yanhui
ARG userpasswd=yanhui
# adding user
RUN useradd -ms /bin/bash $username && (echo $username:$userpasswd | chpasswd)
# adding user to sudo group
RUN adduser $username sudo
# setting running application
CMD /usr/sbin/sshd -D
注意:该文件中有ARG后面的用户名和密码,可以改成你想用的
创建docker:
在这个过程中始终保持联网状态;用下面命令创建镜像:(镜像名可以自己改)
docker build -t yanhui-image .
这条命令将会创建一个标签名为yanhui-image的镜像,并且用的是我们刚在该目录下写的Dokcerfile(如果该命令出错,可能是要用超级用户,在命令前加sudo),默认情况下,该命令执行后会在Docker Hub下载默认debian(我读作:德比安)镜像。
以上都操作完后,可以查看docker现在有哪些镜像:
docker images
以下是我执行后的情况:
![95950ceeadc87668ece7e903e13edb27.png](https://i-blog.csdnimg.cn/blog_migrate/85c5e681b3ce71c65aa4a8de7b1fc72e.png)
如果你看到了xx-image(你自己起的名字),就成功安装好了镜像。现在可以删掉刚刚那个文件夹了
cd .. # ..是父目录(linux的基础)
rm -r mydocker
创建一个debian的容器:
先认识一下“容器”这个概念,这相当于oop中的实例,是用刚刚创建的镜像生成的一个对象,而刚刚的镜像相当于oop概念中的类
用以下命令创建名为yanhui-vm(名字自己起):
docker create --name=yanhui-vm -p 20022:22 --tmpfs /dev/shm:exec --privileged=true yanhui-image
解释该命令:
- 参数-p后面的20022是docker主机的端口,22是ssh的默认端口(我们运行了docker的这个容器后,相当于运行的是服务器,只不过是在本地创建的一个服务器,我们要用ssh去连接)
- yanhui-image是我们刚刚创建的镜像,我们要用这个镜像来创建一个容器
- --privileged=true 是设定权限,为了可以在容器里用gdb做调试工作
- 以可执行的方式挂载 /dev/shm
用下面的命令来查看容器是否创建成功:
docker ps -a
这条命令会显示所有的docker容器,如果你看见刚刚创建的xx-vm,就说明创建成功了!
连接容器试试:
用以下命令启动容器:
docker start xx-vm
这个容器开启后是以“脱机”的模式,我们要用ssh连接(ssh的配置我们已经在Dockerfile的结尾部分写好了,用户名和密码都是你自己设置的)
登录:
ssh -p 20022 username@127.0.0.1
经过ssh登录后,你现在就已经在我们刚刚创建的容器的那个系统中了,其他操作就与在linux的操作一样了
关闭容器:
docker stop xx-vm