Docker容器

在docker中构建ubuntu开发环境

2018-08-16  本文已影响1人  6017e164c325

环境

  1. 宿主机环境windows,从官网下载docker的windows版本,安装完毕后切换到Linux Containers
  2. 镜像使用ubuntu 16.04

docker三大概念

  1. 容器Container:相当于虚拟机
  2. 镜像Image:相当于虚拟机的iso
  3. 仓库Repository:相当于github,官网仓库是hub.docker.com

构建一个镜像,镜像的脚本默认名字为Dockerfile

FROM ubuntu:16.04

ENV LANG=en_US.UTF-8

RUN apt-get update -y

RUN apt-get -y install gcc \
    g++ \
    gdb \
    automake \
    autoconf \
    libtool \
    make \
    cmake

RUN apt-get -y install ssh \
    ntp \
    vim \
    wget \
    curl \
    telnet

RUN apt-get -y install git \
    subversion \
    doxygen \
    lighttpd \
    net-tools \
    inetutils-ping

RUN apt-get -y install python \
    golang

RUN apt-get -y install libbz2-dev \
    libdb++-dev \
    libssl-dev \
    libdb-dev \
    libssl-dev \
    openssl \
    libreadline-dev \
    libcurl4-openssl-dev \
    libncurses-dev \
    autotools-dev \
    build-essential \
    libicu-dev \
    python-dev

RUN mkdir /var/run/sshd

# change sshd listen port
RUN sed -i 's/Port[ ]*22/Port 36000/' /etc/ssh/sshd_config
RUN echo "PasswordAuthentication yes" >> /etc/ssh/sshd_config

# add user
RUN mkdir /home/bingo
RUN useradd -s /bin/bash bingo
RUN echo "bingo:123456" | chpasswd
RUN echo "bingo:123456" | chpasswd
RUN chown -R bingo:bingo /home/bingo

# Container should expose ports.
EXPOSE 36000
CMD ["/usr/sbin/sshd", "-D"]

创建一个空目录,在其下建立一个名叫Dockerfile文件,输入以上内容

制作镜像

docker build -t ubuntu:dev.16.04 .

如果制作过程中出错,删除相关的命令,重新输入上面的命令继续制作

制作出来的镜像大小大概在960m左右,用"docker image ls"查看

启动容器

docker run -d --name dev-ubuntu -p 36000:36000 ubuntu:dev.16.04

-p 36000:36000 前面的36000为宿主机端口,后面为容器端口

docker启动的时候,需要把本容器也启动起来,带参数"--restart=always"

如果需要挂载本地磁盘,使用参数"-v /opt/projects:/home/bingo/"

docker端口映射等网络相关内容可以参考这篇文章

ssh登录到容器

ssh -p 36000 bingo@127.0.0.1

"127.0.0.1" 指宿主机的ip

-p 36000 指向宿主机的port

推到仓库,供以后重复使用

  1. https://hub.docker.com/ 上创建一个账号

  2. 登录仓库

docker login

按提示输入账号密码

  1. 编译,指向自己的用户名username
docker build -t username/ubuntu:dev.16.04 .
  1. 发布到hub
docker image push username/ubuntu:dev.16.04

发布后,就可以在 https://hub.docker.com/ 看到刚发布的镜像文件了

  1. 下次需要的时候,就可以用以下命令拉取
docker image pull username/ubuntu:dev.16.04
上一篇下一篇

猜你喜欢

热点阅读