Docker是开源的应用容器引擎。可以理解为轻量级的虚拟机,又可以理解为开了挂的chroot。

官方解释为docker是一个开源的项目,可以用来将任何应用以轻量级容器的形式,打包,发布和运行。

docker架构:

docker run images_name 运行容器

docker images 查看所有本地的容器

docker pull 获取image

docker build -t image_name 路径名 创建image

docker rm 删除container

docker rmi 删除image

docker ps 查看正在运行的容器

docker

-p 端口映射

-d 直接返回

docker cp 文件 容器id://容器内的地址 cp文件到容器内的地址,但当重启后,文件不再容器内,这时就需要保存,保存的命令为:docker commit -m ‘message’ 容器id 新的容器名称,这时就产生了一个新的image

docker stop 容器id 停止当前容器

docker ps -a 历史容器

例:下载nginx镜像并运行:

[root@localhost ~]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx Digest: sha256:9688d0dae8812dd2437947b756393eb0779487e361aa2ffbc3a529dca61f102c Status: Image is up to date for nginx:latest docker.io/library/nginx:latest

运行nginx镜像:

[root@localhost ~]# docker run -p 8080:80 -d docker.io/nginx #

cad31276eaaa32efa41eb5355189b5c657a4bac22cc0da24f43fd889c8e2c883 

将本地的8080端口映射到80端口

[root@localhost ~]# netstat -anp |grep 8080 tcp6 0 0 :::8080 :::* LISTEN 1972/docker-proxy

开放8080端口

[root@localhost ~]# iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

  

通过编写简单的文件自创docker镜像

1、首先建立文件夹Docker

2、在Docker文件夹下建立Dockerfile文件,并编辑:

FROM alpine:latest ##是一个专门针对docker做的一个环境 MAINTAINER xbf CMD echo "Hello Docker"

3、利用docker build 命令构建新的image

[root@localhost dockertest]# docker build -t hello_docker .

# Sending build context to Docker daemon 2.048kB

Step 1/3 : FROM alpine:latest

latest: Pulling from library/alpine

9d48c3bd43c5: Pull complete

Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb

Status: Downloaded newer image for alpine:latest

---> 961769676411

Step 2/3 : MAINTAINER xbf

---> Running in c92d0fa7be5c

Removing intermediate container c92d0fa7be5c

---> 3f3ea64dc595

Step 3/3 : CMD echo "Hello Docker"

---> Running in 6568cd66097d Removing intermediate container 6568cd66097d

---> d7cc9ec010e5

Successfully built d7cc9ec010e5

Successfully tagged hello_docker:latest

[root@localhost dockertest]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

hello_docker latest d7cc9ec010e5 9 seconds ago 5.58MB

nginx latest ab56bba91343 20 hours ago 126MB

alpine latest 961769676411 3 weeks ago 5.58MB

hello-world latest fce289e99eb9 8 months ago 1.84kB

4、利用docker run来运行此image

[root@localhost dockertest]# docker run hello_docker Hello Docker

第二个dockerfile

1、首先建立文件夹Docker2

2、在Docker2文件夹下建立Dockerfile文件,并编辑:

FROM ubuntu

MAINTAINER root

RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

RUN apt-get update && apt-get install nginx -y

COPY index.html /var/www/html

ENTRYPOINT ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

EXPOSE 80

  

3、建立www/index.html文件

touch index.html
Hello nginx.ubuntu

4、构建新的image。

docker build -t whr/hello-nginx /dockertest/Docker2

[root@localhost Docker2]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

whr/hello-nginx latest f6efa129cd16 2 minutes ago 149MB

  

5、启动whr/hello-nginx

[root@localhost Docker2]# docker run -d -p 80:80 whr/hello-nginx 
ada48aa3a8fef5e1feb35e5c90ff176f584cd69b8ad1af403de96cd883247599

Dockerfile的语法

  FROM base image

  RUN 执行命令

  ADD 添加文件

  COPY 拷贝文件

  CMD 执行命令

  EXPOSE 暴露窗口

  WORKDIR 指定路径

  MAINTAINER 维护者

  ENV 设定环境变量

  ENTRYPOINT 容器入口

  USER 指定用户

  VOLUME mount point

镜像分层

Dockerfile中的每一行都会产生一个新层

Docker的学习1的更多相关文章

  1. 在Windows环境中开始Docker的学习和体验

    研究docker有一段时间了,当然我主要的使用环境还是在Linux中,确实很方便. 但也有不少朋友希望使用Windows来工作学习,这里介绍一下在Windows中如何快速开始Docker的学习和体验吧 ...

  2. Docker容器学习梳理 - 应用程序容器环境部署

    关于国内Docker镜像,可以参考:Docker容器学习梳理--基础知识(2) 的Docker镜像使用. 如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等 ...

  3. Docker容器学习梳理 - 日常操作总结

    使用Docker已有一段时间了,今天正好有空梳理下自己平时操作Docker时的一些命令和注意细节: Docker 命令帮助 $ sudo docker Commands: attach Attach ...

  4. docker深入学习

    docker深入学习 一.容器的介绍和容器的发展史 为什么要学习容器? 在openstack之后,目前互联网最火热的技术莫过于docker容器了,早在2015年,京东技术备战双11就是使用了10万+D ...

  5. 服务器搭建远程docker深度学习环境

    服务器搭建远程docker深度学习环境 本文大部分内容参考知乎文章 Docker+PyCharm快速搭建机器学习开发环境 搭建过程中出现ssh连接问题可以查看最后的注意事项 Docker Docker ...

  6. Docker命令学习

    今天更换腾讯云系统的时候发现了多了个CoreOS,据说是专门运行docker的轻量系统,顺便学习一下docker命令. 1. docker version 显示 Docker 版本信息. 2. doc ...

  7. 有关docker的学习链接

    本文是自己搜索的比较好的网上资源,便于有兴趣者查阅. 英文官网 https://docs.docker.com/engine/getstarted/ 中文入门手册 http://www.docker. ...

  8. Docker个人学习总结

    最近一段时间学习了下Docker,关于Docker的安装,运用什么的在这里我不会过多的说明,我只说我对于Docker的一些理解,附加我用于记录的少量代码. 刚开始学习Docker的时候,找资料在网上看 ...

  9. Docker技术学习

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1598249 貌似Doc ...

  10. Docker入门学习

    Python爬虫 最近断断续续的写了几篇Python的学习心得,由于有开发经验的同学来说上手还是比较容易,而且Python提供了强大的第三方库,做一个小的示例程序还是比较简单,这不我之前就是针对Pyt ...

随机推荐

  1. Mysql coalesce()函数认识和用法

    Mysql coalesce()函数认识和用法   coalesce()解释:返回参数中的第一个非空表达式(从左向右):    鉴于在mysql中没有nvl()函数, 我们用coalesce()来代替 ...

  2. 上交所跨市场ETF申购赎回实时回报

    申购赎回实时回报:1.二级市场过户记录(二级市场代码)2.沪市成分股过户记录(全部成分股)3.非沪市资金记录4.沪市资金记录5.ETF一级市场过户记录(一级市场代码)

  3. node.js写巨大的xlsx

    一般用node-xlsx写xlsx文件的话局要把数据全部放在内存里面再写到文件里,如果文件很大的话就会导致内存吃不消. 可以使用PySpreadsheet这个npm库,他支持写很大的文件. PySpr ...

  4. LINQ语法详解

    我会通过一些列的实例向大家讲解LINQ的语法. 先创建一个Person类,作为数据实体 public class Person { public string Name { get; set; } p ...

  5. react ant design TreeNode——树形菜单笔记

     2017-12-04补充说明——树形菜单版本号2.x 设置默认该树形组件展开(默认展开所有树节点) 参考文档的写法: defaultExpandAll={true} //经过测试并不生效, 另外注意 ...

  6. Jenkins加入systemctl管理

    Jenkins安装目录为 /usr/local/jenkins-tomcat/ 添加文档 /usr/lib/systemd/system/jenkins.service [Unit] Descript ...

  7. maven中央仓库的配置在哪里?superpom是什么?中央仓库查找三方包

    maven的superpom 每个项目都默认继承的pom 位置 $M2_HOME/lib/maven-model-builder.jar 使用tar -xvf解压后,grep -r central 搜 ...

  8. linux一行命令查杀进程

    https://blog.csdn.net/primeprime/article/details/52415273 ps -efww | grep -w 'helloworld' | grep -v ...

  9. laravel进程管理supervisor的简单说明

    原文地址:https://www.cnblogs.com/zhoujinyi/p/6073705.html 背景: 项目中遇到有些脚本需要通过后台进程运行,保证不被异常中断,之前都是通过nohup.& ...

  10. 【miscellaneous】基于gstreamer的实时转码

    目标是实现一个实时转码,可用于IPTV提供节目源.相关工作在ubuntu操作系统下进行.需要对源代码进行修改的时候,直接采用apt-get source命令获取源代码,根据需要进行修改,然后安装,这样 ...