环境
- 宿主机环境windows,从官网下载docker的windows版本,安装完毕后切换到Linux Containers
- 镜像使用ubuntu 16.04
docker三大概念
- 容器Container:相当于虚拟机
- 镜像Image:相当于虚拟机的iso
- 仓库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
推到仓库,供以后重复使用
-
在 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
网友评论