准备

安装:wget -qO- https://get.docker.com | sh

启动: service docker start

查看信息: docker info

常用命令

  • docker search nginx 搜索nginx镜像
  • docker run -it nginx /bin/bash 进入并运行
  • docker run -p 80:8080 -d nginx 将容器的8080端口映射到宿主机的80端口
  • docker run -p 80:80 -d -v $PWD/data:usr/share/nginx/html nginx 将主机的data目录映射到容器nginx的usr/share/nginx/html目录
  • docker cp index.html 3b2ec3c0a034://usr/share/nginx/html 将主机index.html文件拷贝到容器
  • docker stop 停止运行容器
  • docker rm 删除已停止的容器
  • docker rmi 删除镜像
  • docker exec -it nginx /bin/bash 进去容器
  • docker tag docker/nginx temer/nginx 复制镜像
  • docker build -t temer/ubuntu-nginx ./在当前目录创建镜像image
  • docker commit -m 'fun' 3b2ec3c0a034 nginx_fun 保存镜像,产生一个新的image 为nginx_fun
  • docker create -v $PWD/data:var/mydata ubuntu 创建一个已ubuntu为基础镜像的容器

Dockerfile

常用语法

  • FROM 基础镜像-base iamge
  • RUN 执行命令
  • ADD 添加文件
  • COPY拷贝文件
  • CMD 执行命令
  • EXPOSE暴露端口
  • WORKDIR 执行路径
  • MAINTAINER 维护者
  • ENV 环境变量
  • ENTRYPOINT 容器入口
  • USER 指定用户
  • VOLUME 指定用户挂在的卷

一个dockerfile

FROM ubuntu
MAINTAINER temer
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
EXPOSE 80

其中 ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"] 容器的入点,数组的语法,会把数组展开以命令行的形式执行,作用是将nginx前台来执行,而不是守护进程执行

镜像分层:Dockerfile 中的每一行都产生一个新层 Dockerfile分层构建

Dockerfile分层构建

构建:

docker build -t temer/ubuntu-nginx .

运行:

docker run -d -p 80:80 temer/ubuntu-nginx

参考: https://blog.csdn.net/mozf881/article/details/55798811