docker简介
Docker是一个新的容器化的技术,容器有效的将单个操作系统管理的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求。
Docker 容器本质上是宿主机上的一个进程。Docker 通过 namespace 实现了资源隔离,通过 cgroups 实现了资源的限制,通过写时复制机制(copy-on-write)实现了高效的文件操作。
Docker有五个命名空间:进程、网络、挂载、宿主和共享内存,为了隔离有问题的应用,Docker运用Namespace将进程隔离,为进程或进程组创建已隔离的运行空间,为进程提供不同的命名空间视图。这样,每一个隔离出来的进程组,对外就表现为一个container(容器)。
镜像和容器
Image: 镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
Container:容器是镜像的运行时实例 - 实际执行时镜像会在内存中变成什么。默认情况下,它完全独立于主机环境运行,仅在配置为访问主机文件和端口的情况下才执行此操作。
容器 = 镜像 + 读写层
容器可以获取本机访问,每个容器都在独立进程中运行,占用的内存不超过任何其他可执行文件。
Docker的使用 启动和放入启动项 1 2 3 4 5 6 7 #centos7.0版本 systemctl start docker systemctl enable docker #兼容老版本 service docker start chkconfig docker on
image相关操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 docker search [镜像] #搜索镜像 docker pull [镜像] #下载镜像 docker run -p 4000:80 username/repository:tag #从远程镜像仓库中拉取并运行镜像 sudo docker pull ubuntu:12.04 等同于 docker pull registry.hub.docker.com/ubuntu:12.04 docker push [镜像] #发布镜像 docker rmi [镜像] #删除镜像 docker images #查看本地镜像(列目录) docker images -q #只显示镜像ID docker history [镜像] #历史镜像 docker tag [镜像] username/repository:tag #标记镜像 docker rmi $(docker images -q) #删除所有停止的镜像 docker rmi -f $(docker images -q) #强制删除所有的镜像
容器相关操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #创建容器 docker run [镜像] /bin/echo hello world #输出hello world docker run -i -t [镜像] /bin/bash #交互式进入容器 #-i: 以交互模式运行容器 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; docker run [镜像] apt-get install -y app_name #在容器安装新的程序 docker exec -it kali /bin/bash #进入容器 docker run -it -d kali #启动容器,后台运行 #-d: 后台运行容器,并返回容器ID; docker run -it -p 53:53 kali #启动容器的时候可以映射端口 #-p: 端口映射,格式为:主机(宿主)端口:容器端口 #进入交互式界面 进入容器: sudo docker ps -a sudo docker exec -it [容器ID] /bin/bash #查看容器 docker ps #列出当前运行的容器 docker ps -a #列出所有的容器 docker ps -l #列出最近一次启动的容器 docker ps -a -q #查看所有的容器ID #容器操作 docker inspect [容器名字]/ID #显示容器信息 docker start [容器名字]/ID #启动容器 docker stop [容器名字]/ID #停止容器 docker kill [容器名字]/ID #杀死容器 docker restart [容器名字]/ID #重新启动容器 docker attach [容器名字]/ID #进入容器 docker logs [容器名字]/ID #查看容器日志 docker diff [容器名字]/ID #查看容器修改操作 docker top [容器名字]/ID #显示容器进程信息 docker cp ID:/path to_path #从容器中拷贝数据到本地 docker cp [容器名字]:/path to_path #从容器中拷贝数据到本地 #删除容器 docker rm [容器]/ID #删除容器 docker rm $(docker ps -a -q) #删除所有停止的容器 docker rm -f $(docker ps -a -q) #强制删除所有的容器
参考链接:
https://www.smi1e.top/docker-%e7%ac%94%e8%ae%b0/