环境
宿主机环境windows,从官网下载docker的windows版本,安装完毕后切换到Linux Containers
镜像使用ubuntu 16.04
docker三大概念
容器Container:相当于虚拟机
镜像Image:相当于虚拟机的iso
仓库Repository:相当于github,官网仓库是hub.docker.com
构建一个镜像,镜像的脚本默认名字为Dockerfile
FROM ubuntu:16.04 ENV.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
推到仓库,供以后重复使用
在 https://hub.docker.com/ 上创建一个账号
登录仓库
docker login
按提示输入账号密码
编译,指向自己的用户名username
docker build -t username/ubuntu:dev.16.04 .
发布到hub
docker image push username/ubuntu:dev.16.04
发布后,就可以在 https://hub.docker.com/ 看到刚发布的镜像文件了
下次需要的时候,就可以用以下命令拉取
docker image pull username/ubuntu:dev.16.04
作者:mybestcool
链接:https://www.jianshu.com/p/c03a2f606db2