Docker(一):Docker入门

简介

Docker是一个开源的容器引擎,能够帮助咱们更快的交付应用。Docker可将应用程序和基础设施层隔离,而且能将基础设施看成程序进行管理。可更快的打包、测试以及部署应用程序,并可减小从编写到部署代码的周期linux

Docker架构

  •  Docker Daemon咱们称之为Docker守护进程,也就是Server端,Server端能够部署在远程,也能够部署在本地,由于Server端与客户端(Docker Client)是经过Rest API进行通讯。
  • Docker CLI 实现容器和镜像的管理,为用户提供统一的操做界面,这个 客户端提供一个只读的镜像,而后经过镜像能够建立一个或者多个容器(container),这些容器能够只是一个RFS(Root File System),也能够是一个包含了用户应用的RFS。容器在docker Client中只是一个进程,两个进程是互不可见的。
  • Image: 一个只读的镜像模板。能够本身建立一个镜像也能够从网站上下载镜像供本身使用。镜像包含了一个RFS.一个镜像能够建立不少容器。
  • Container:由docker client经过镜像建立的实例,用户在容器中运行应用,一旦建立后就能够看作是一个简单的RFS,每一个应用运行在隔离的容器中,享用独自的权限,用户,网络。确保安全与互相干扰;
  • repository:仓库,不重要,大概就是一个镜像库,最大的是docker hub,相似于google 的aosp,也能够本地搭。

Docker与虚拟机

Docker属于OS级别的虚拟化,kernel经过建立多个镜像来隔离不一样的app进程,因为kernel是是共享,并且自己linux image也不大,性能损耗几乎能够不计,并且内存占用也不大,大大节约了设备成本。nginx

经常使用命令

一、拉取镜像,Docker镜像保存在/var/lib/docker目录下docker

docker pull image_nameubuntu

二、删除镜像centos

docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30tomcat

三、查看当前有哪些容器正在运行安全

docker psbash

四、查看全部容器服务器

docker ps -a网络

五、启动、中止、重启容器命令

docker start container_name/container_id

docker stop container_name/container_id

docker restart container_name/container_id

六、后台启动一个容器后,若是想进入到这个容器,可使用attach命令

docker attach container_name/container_id

七、删除容器的命令:

docker rm container_name/container_id

八、查看当前系统Docker信息

docker info

九、执行docker pull centos会将Centos这个仓库下面的全部镜像下载到本地repository

docker pull centos:latest

十、docker run

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

  • -d: 后台运行容器,并返回容器ID;

  • -i: 以交互模式运行容器,一般与 -t 同时使用;

  • -p: 端口映射,格式为:主机(宿主)端口:容器端口

  • -t: 为容器从新分配一个伪输入终端,一般与 -i 同时使用;

  • --name="nginx-lb": 为容器指定一个名称;

  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

  • --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

  • -h "mars": 指定容器的hostname;

  • -e username="ritchie": 设置环境变量;

  • --env-file=[]: 从指定文件读入环境变量;

  • --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

  • -m :设置容器使用内存最大值;

  • --net="bridge": 指定容器的网络链接类型,支持 bridge/host/none/container:<name|id> 四种类型;

  • --link=[]: 添加连接到另外一个容器;

  • --expose=[]: 开放一个端口或一组端口;

使用镜像 nginx:latest,之后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。

docker run -p 80:80 -v /data:/data -d nginx:latest

绑定容器的 8080 端口,并将其映射到本地主机 127.0.0.1 的 80 端口上。

$ docker run -p 127.0.0.1:80:8080/tcp ubuntu bash