Docker(一):Docker入门

简介

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

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也不大,性能损耗几乎可以不计,而且内存占用也不大,大大节约了设备成本。

常用命令

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

docker pull image_name

2、删除镜像

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

3、查看当前有哪些容器正在运行

docker ps

4、查看所有容器

docker ps -a

5、启动、停止、重启容器命令

docker start container_name/container_id

docker stop container_name/container_id

docker restart container_name/container_id

6、后台启动一个容器后,如果想进入到这个容器,可以使用attach命令

docker attach container_name/container_id

7、删除容器的命令:

docker rm container_name/container_id

8、查看当前系统Docker信息

docker info

9、执行docker pull centos会将Centos这个仓库下面的所有镜像下载到本地repository

docker pull centos:latest

10、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

 

posted on 2018-10-31 10:57  samuel1  阅读(180)  评论(0编辑  收藏  举报

导航