常用命令

docker info        #查看docker信息
#容器相关
			 run         #运行容器
					  -it    #可以用来对操作系统等容器运行命令
									 #-i开启STDIN    -t分配一个伪tty终端
					  --name #为容器设置名字
						-d     #以守护式运行容器(作为服务后台运行detached)
						-p     #为容器和宿主机指定端口映射
								   #-p 80 将容器80端口映射到宿主机32768~61000之间的随机一个端口号上
									 #-p 8080:80 将容器的80端口绑定到宿主机的8080端口上
									 #-p 127.0.0.1:80:80 绑定到127.0.0.1这个ip地址
						-P     #用来对外公开在Dockerfile中通过EXPOSE指令公开的所有端口
						--entrypoint #覆盖ENTRYPOINT
						-w     #指定并覆盖工作目录
			 start       #启动容器
			 stop        #停止容器的运行
			 rm          #删除容器
			 rename      #为容器重命名 docker rename 旧名 新名
			 ps          #显示正在运行的容器
						-a     #显示全部
			 attach      #进入容器(退出时会停止容器)
			 exec        #在容器内部运行进程(退出时不会停止容器)
						-d     #以守护式运行进程
						-u     #为进程指定一个用户属主

			 stats       #显示容器的cpu、内存等统计信息
			 inspect     #获取更多容器信息
			 port        #查看容器端口映射情况
#镜像相关
			 images      #列出所有镜像
			 pull        #拉取镜像 后跟:tag用于指定拉取的版本号的tag,不写默认为:latest
			 push        #推送镜像
			 search      #查找镜像
			 rmi         #删除镜像 可以删除多个
			 commit      #提交镜像到Docker Hub *不推荐*
						-m     #指定提交信息
						-a     #列出镜像作者信息
#Dockerfile
			 build       #构建镜像 最后需要指定一个Dockerfile文件所在目录地址(github也可)
						-t     #指定仓库和名称 docker build -t="zhou/nginx:v1" .
						-f     #指定一个文件名可以不为Dockerfile的构建源
						--no-cache #不使用缓存
			 history     #查看构建该镜像的每层Dockerfile指令

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f2b57b95-77b9-4e32-aeb7-40e154d5f9c7/Untitled.png

Dockerfile

# Version 0.0.1
# Dockerfile基于DSL(Domain Specific Language)语法的指令来构建Docker镜像
# #号是注释 Dockerfile会从上到下执行

FROM Ubuntu 14.04
# 前面大写的是指令 FROM指令指定了Ubuntu 14.04作为新镜像的基础镜像

MAINTAINER zhou zhou "[email protected]"
# MAINTAINER 指定镜像的作者以及电子邮件

RUN echo 'Hi,I am docker ' > /var/www/index.html
# RUN指令会在当前镜像中运行指定的命令
# 默认情况下RUN指令会在shell里使用命令包装器/bin/sh -c来执行
# 若不希望在shell中运行 可以使用exec格式的RUN指令 如下:
RUN ["apt-get"," install","-y","nginx"]

# CMD指令用于指定一个容器启动时要运行的命令 docker run命令行可以覆盖CMD指令
CMD ["/bin/bash","-l"]

# 和CMD很相似 但不会被覆盖
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
# 如果需要覆盖掉文件中的ENTRYPOINT 可以通过docker run的--entrypoint标志
# ENTRYPOINT和CMD指令可以同时使用

# 用来在从镜像创建一个新容器时,在容器内部设置一个工作目录
WORKDIR /opt/webapp/db
RUN bundle install
WORKDIR /opt/webapp
ENTRYPOINT ["rackup"]

# 用来在镜像构建过程中设置环境变量
ENV RVM_PATH /home/rvm/

# 指定该镜像启动的容器会以什么用户的身份来运行
USER user:group

# 用来向基于镜像创建的容器添加卷 卷可以绕过联合文件系统,提供数据共享和数据持久化功能
VOLUME ["/opt/project"]

# 用来将构建环境下的文件和目录复制到镜像中
ADD content.txt /opt/webapp/software.txt
# ADD文件源也可以时URL资源
ADD <http://wordpress.org/latest.zip> /root/wordpress.zip
# 也可以直接将归档文件(gzip、bzip2、xz)解压
ADD latest.tar.gz /var/www/wordpress

# 非常类似于ADD,但COPY只关心在构建上下文中复制本地文件,而不会去做文件提取和解压的工作
COPY conf.d/ /etc/appache2/
# 注意文件源路径必须在当前构建环境目录下(即与Dockerfile同一目录下),不能复制该目录以外的任何文件

# LABEL用于为Docker镜像添加元素据,元素据以键值对形式展现
LABEL version="1.0"
LABEL location="DALIAN" name="zhou"
# 推荐将所有元数据都放到一条LABEL指令中,防止不同元数据指令创建过多镜像曾

# 用来定义可以在docker build命令运行时传递给构建运行时的变量 只需要在构建时使用--build-arg即可
ARG build
ARG webapp_user=user  #指定了默认值 如果不设置则会使用默认值
# docker build --build-arg build=123

# 为镜像添加触发器 构建器添加的新指令会紧跟在FROM之后执行
ONBUILD ADD . /app/src
ONBUILD RUN cd /app/src && make

# 用来设置停止容器时发送什么系统调用信号给容器 Docker1.9引入
STOPSIGNAL 9
STOPSIGNAL SIGKILL

运行Dockerfile

docker build -t="仓库名/镜像名:tag"

使用 docker build 命令来构建新镜像,使用 -t 选项为新疆想设置了仓库名称和标签

推送镜像

docker push zhou/nginx01

其它相关笔记

Docker搭建Nginx

Docker搭建iredmail邮件系统

在服务器上安装 Docker