本文将简单介绍docker的基本使用方法。本文以使用nginx的镜像为例说明如何快速上手使用docker。
docker 安装
拉取镜像
docker pull nginx
启动容器
1# 启动一个nginx容器,主机的8000转发至容器的80端口
2 docker run -d --name my-nginx -p 8000:80 nginx
# 启动一个nginx容器,主机的8000转发至容器的80端口
docker run -d --name my-nginx -p 8000:80 nginx
测试访问nginx
浏览器访问http://{主机ip}:8000,可以看到Welcome to nginx!页面
停止容器
1# 查询已经启动的容器
2 docker ps
# 查询已经启动的容器
docker ps
例如查到类似如下信息:
1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2 b8eca8f07f68 nginx "nginx -g 'daemon ..." 24 seconds ago Up 23 seconds
# 使用my-nginx对应的ContainerID停止容器
docker stop {container_id}
删除容器
# 使用my-nginx对应的ContainerID删除容器
docker rm {container_id}
注意
如果容器已经停止,可以使用命令docker ps -a查询所有包含已停止的容器;
使用dockerfile构建docker镜像
简介
在了解了docker的基本使用方法后,我们可以通过容器快速准备环境并部署服务。
有些重复性的工作,例如:手动配置一些配置项,安装特定的软件包,使用命令或脚本启动特定服务等等。为了解决这些通用或者重复性的事情,我们可以通过构建一个自己个性化的镜像来固化下来这些环境信息。
本文将简单介绍使用dockerfile构建docker镜像的基本使用方法。
本文以使用ubuntu的镜像为例说明如何根据已有的镜像为基础构建自己需要的镜像。
本例中将演示以Ubuntu 16.04为基础,安装ssh, jdk, vim等软件。
安装包准备
jdk-8u77-linux-x64.tar.gz
目录结构及Dockerfile
假如工作目录在:~/dockerfiles/my-ubuntu
此目录中的结构如下:
|-- Dockerfile
`-- files
`-- jdk-8u77-linux-x64.tar.gz
其中Dockerfile中的内容如下:
FROMubuntu:16.04
LABELmaintainer="[email protected]"
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
ENV TZ Asia/Shanghai
# 设置apt-get源
RUN sed -i"s/archive.ubuntu.com/mirrors.aliyun.com/g"/etc/apt/sources.list \
&& sed -i"s/security.ubuntu.com/mirrors.aliyun.com/g"/etc/apt/sources.list \
&& apt-get update
# 安装常用工具 设置SSH
RUN apt-get install -y openssh-server vim telnet sudo \
&& rm /etc/ssh/ssh_host_dsa_key -rf \
&& rm /etc/ssh/ssh_host_rsa_key -rf \
&& ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key \
&& ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key \
&& useradd guest \
&&echo"guest:guest!@#"| chpasswd \
&&echo"guest ALL=(ALL) ALL">> /etc/sudoers \
&&echo"root:123456"| chpasswd \
&& sed -i"s/PermitRootLogin\ without-password/PermitRootLogin\ yes/g"/etc/ssh/sshd_config
# 修改vim配置
RUN sed -i'1s/^/set encoding=utf-8\n/'/etc/vim/vimrc \
&&echo"set hls">> /etc/vim/vimrc \
&&echo"set expandtab">> /etc/vim/vimrc \
&&echo"set sw=4">> /etc/vim/vimrc \
&&echo"set tabstop=4">> /etc/vim/vimrc
RUN mkdir /usr/java
# 安装jdk
ADD files/jdk-8u77-linux-x64.tar.gz /usr/java
RUNecho"export JAVA_HOME=/usr/java/jdk1.8.0_77">> /etc/profile \
&&echo"export PATH=\$JAVA_HOME/bin:\$PATH">> /etc/profile \
&&echo"export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar">> /etc/profile
RUN mkdir /var/run/sshd
EXPOSE 22 8080
ENTRYPOINT /usr/sbin/sshd -D
构建镜像
cd~/dockerfiles/my-ubuntu
# build镜像,注意最后有一个英文半角点号
docker build --tag="my-ubuntu:1.0".
稍等片刻后构建完成
查询镜像
使用如下命令可以看到已经构建好的镜像
docker images
例如:
REPOSITORY TAG IMAGE ID CREATED SIZE
my-ubuntu 1.0 1979d1447f6d 2 minutes ago