什么是 Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器
Docker 与 虚拟机的区别
虚拟机的架构
每个虚拟机都包括应用程序、必要的二进制文件和库以及一个完整的客户操作系统(Guest OS),尽管它们被分离,它们共享并利用主机的硬件资源,将近需要十几个 GB 的大小。
容器的架构
容器包括应用程序及其所有的依赖,但与其他容器共享内核。它们以独立的用户空间进程形式运行在主机操作系统上。他们也不依赖于任何特定的基础设施,Docker 容器可以运行在任何计算机上,任何基础设施和任何云上。
Docker安装
环境
Redhat7或Centos7操作系统
操作系统须联网
内核大于等于3.10
[root@server1 yum.repos.d]# uname -r
3.10.0-957.27.2.el7.x86_64
添加yum源
[root@server1 yum.repos.d]# vim docker.repo
[dockerrepo]
name=Docker Repository
baseurl=http://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=0
安装
[root@server2 yum.repos.d]# yum install docker*
安装过程会有报错
Error: initscripts conflicts with redhat-release-server-7.1-1.el7.x86_64
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
因为依赖关系所以报错,我们将它卸载掉
[root@server2 yum.repos.d]# rpm -e redhat-release-server-7.1-1.el7.x86_64 --nodeps
[root@server2 yum.repos.d]# rpm -qa |grep redhat-release
再次安装成功
[root@server2 yum.repos.d]# yum install docker^C
[root@server2 yum.repos.d]# rpm -qa |grep docker
docker-client-1.13.1-103.git7f2769b.el7.centos.x86_64
docker-1.13.1-103.git7f2769b.el7.centos.x86_64
docker-common-1.13.1-103.git7f2769b.el7.centos.x86_64
启动docker
启动成功
[root@server2 yum.repos.d]# systemctl start docker.service
docker常用用法
查看docker版本
[root@server2 ~]# docker version
列出镜像
[root@server2 ~]# docker images
搜索镜像
[root@server2 ~]# docker search tomcat
拉取镜像
[root@server2 ~]# docker pull docker.io/tomcat
运行docker镜像
[root@server1 yum.repos.d]# docker run 8d5cfed63c2b
查看docker进程
[root@server1 yum.repos.d]# docker ps
使用bash进入docker镜像
[root@server1 yum.repos.d]# docker exec -it 29c4 bash
推送镜像
[root@server1 yum.repos.d]# docker push docker.io/pseudecoder/centos-nginx
开启、停止、重启docker容器
[root@server1 yum.repos.d]# docker start(stop/restart) 8d5c
删除镜像
[root@server1 yum.repos.d]# docker rmi 8d5c