本文共 5568 字,大约阅读时间需要 18 分钟。
什么是容器
• 容器技术已经成为应用程序封装和交付的核心技术
• 容器技术的核心有以下几个内核技术组成:– CGroups(Control Groups)-资源管理– NameSpace-进程隔离– SELinux安全• 由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速什么是Docker
• Docker是完整的一套容器管理系统
• Docker提供了一组命令,让用户更加方便直接地使用容器技术,而丌需要过多关心底层内核技术Docker特性
Docker优点• 相比于传统的虚拟化技术,容器更加简洁高效• 传统虚拟机需要给每个VM安装操作系统• 容器使用的共享公共库和程序Docker的缺点
• 容器的隔离性没有虚拟化强• 共用Linux内核,安全性有先天缺陷• SELinux难以驾驭• 监控容器和容器排错是挑战部署Docker
安装软件安装前准备• 需要64位操作系统• 至少RHEL6.5以上的版本,强烈推荐RHEL7• 关闭防火墙(不是必须)安装Docker
• 软件包列表:– docker-engine– docker-engine-selinux什么是镜像
• 在Docker中容器是基于镜像启动的• 镜像是启动容器的核心• 镜像采用分层设计• 使用快照的COW技术,确保底层数据不丢失Docker hub镜像仓库
• • Docker官方提供公共镜像的仓库(Registry)[root@jacob~]#docker search rhel7[root@jacob~]#docker search centos[root@jacob~]#docker search nginx[root@jacob~]#docker search mysql镜像操作
下载、上传镜像• 下载镜像(从镜像仓库中下载镜像)[root@server0 ~]# docker pull rhel7• 上传镜像(上传镜像到仓库)[root@server0 ~]# docker push rhel7导入、导出镜像
• 导入镜像(通过tar包文件导入镜像)[root@server0 ~]# docker load < xx.tar[root@server0 ~]# docker images• 导出镜像(将本地镜像导出为tar文件)[root@server0 ~]# docker images[root@server0 ~]# docker save image_name > xx.tar启动镜像
• 启动centos镜像生成一个容器[root@server0 ~]# docker images[root@server0 ~]# docker run -it centos bash• 开启另一个终端(查看容器信息)[root@server0 ~]# docker ps镜像常用命令
命令列表• 命令列表– docker images //查看镜像列表– docker history //查看镜像制作历叱– docker inspect //查看镜像底层信息– docker pull //下载镜像– docker push //上传镜像– docker rmi //删除本地镜像– docker save //镜像另存为tar包– docker load //使用tar包导入镜像– docker search //搜索镜像– docker tag //修改镜像名称和标签docker images
• 查看镜像列表– 镜像仓库名称– 镜像标签– 镜像ID– 创建时间– 大小[root@jacob ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 980e0e4c79ec 8 months ago 196.7 MBdocker history
• 查看镜像历叱– 了解镜像制作过程– 详绅参考后面的dockerfile内容[root@jacob ~]# docker history centosIMAGE CREATED CREATED BY SIZE COMMENT980e0e4c79ec 8 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B <missing> 8 months ago /bin/sh -c #(nop) LABEL name=CentOS Base Ima 0 B<missing> 8 months ago /bin/sh -c #(nop) ADD file:e336b45186086f7d9d 196.7 MB<missing> 8 months ago /bin/sh -c #(nop) MAINTAINER . 0 Bdocker inspect
• 查看镜像底层信息– 了解镜像环境变量、存储卷、标签等信息[root@jacob ~]# docker inspect centos... ...{ "Id": "sha256:980e0e4c79ec933406e467a296ce3b86685e6b42eed2f873745e6a91d718e37a","RepoTags": ["centos:latest"],"RepoDigests": [],"Parent": "","Comment": "","Created": "2016-09-06T21:10:20.397787682Z","Container": "37446a1771cbec3e85b76d9159fd6a5a92743655cb92a65661e8a174bad81c7e“... ...docker rmi
• 删除本地镜像– 注意:启动容器时删除镜像会提示错误[root@jacob ~]# docker rmi centosError response from daemon: conflict: unable to remove repository reference"centos" (must force) - container 3daba799135c is using its referenced image 980e0e4c79ecdocker save|load
• 保存本地镜像另存为tar文件– 方便其他人使用tar包导入镜像[root@jacob ~]# docker save centos > centos.tar[root@jacob ~]# ls centos.tarcentos.tar• 使用tar包文件导入镜像[root@jacob ~]# docker load < centos.tardocker tag
• 重命名镜像名称(复制)[root@jacob ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 980e0e4c79ec 8 months ago 196.7 MB[root@jacob ~]# docker tag centos:latest test:v1[root@jacob ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcentos latest 980e0e4c79ec 8 months ago 196.7 MBtest v1 980e0e4c79ec 8 months ago 196.7 MB容器常用命令
命令列表• 命令列表– docker run //运行容器– docker ps //查看容器列表– docker stop //关闭容器– docker start //启动容器– docker restart //重启容器– docker attach|exec //进入容器– docker inspect //查看容器底层信息– docker top //查看容器进程列表– docker rm //删除容器docker run
• 使用镜像启动容器[root@jacob ~]# docker run -it centos bash[root@bbb51ac87b08 /]#exit[root@jacob ~]# docker run -itd centos bashb8f218f2341c12655e6092d7d2e7fd5229824fdefce84075fb3a9569ebf82079[root@jacob ~]# docker psdocker ps
• 列出容器列表– docker ps 查看正在运行的容器– docker ps -a 查看所有容器列表– docker ps -aq 仅显示容器id[root@server0 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb8f218f2341c centos "bash" 9 minutes ago Up 8 minutes jovial_pasteurdocker stop|start|restart
• 管理容器– docker stop 关闭容器– docker start 开启容器– docker restart 重启容器[root@server0 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb8f218f2341c centos "bash" 9 minutes ago Up 8 minutes jovial_Pasteur[root@server0 ~]# docker stop b8fdocker attach|exec
• 进入容器– docker attach 进入容器,exit会导致容器关闭– docker exec 进入容器,退出时丌会关闭容器[root@server0 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb8f218f2341c centos "bash" 9 minutes ago Up 8 minutes7e4e51117c40 centos "bash" 5 seconds ago Up 2 seconds[root@server0 ~]# docker attach b8f[root@server0 ~]# docker exec -it 7e4e bashdocker inspect
• 查看容器底层信息[root@server0 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb8f218f2341c centos "bash" 9 minutes ago Up 8 minutes jovial_Pasteur7e4e51117c40 centos "bash" 5 seconds ago Up 2 seconds pedantic_bard[root@server0 ~]# docker inspect 7e4e"Id": "0cc385eb6f63373397e678347890914347dc8efa3cefd809c1ed8c157651a261","Gateway": "172.17.0.1","IPAddress": "172.17.0.2","MacAddress": "02:42:ac:11:00:02"docker top
• 查看容器进程列表[root@server0 ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESb8f218f2341c centos "bash" 9 minutes ago Up 8 minutes jovial_Pasteur7e4e51117c40 centos "bash" 5 seconds ago Up 2 seconds pedantic_bard[root@server0 ~]# docker top 7e4e
UID PID PPID C STIME STATUS TTY TIME CMDroot 3177 3163 0 21:25 Up 8 minutes pts/8 00:00:00 /bin/bashdocker rm
• 删除容器– 注意,删除正在运行的容器时会提示错误[root@server0 ~]# docker rm 7e4e[root@server0 ~]# docker rmdocker ps -aq
转载于:https://blog.51cto.com/13841846/2133674