docker概述
Docker:本意是码头工人,言外之意是集装箱
java号称“一次编译,到处运行”,是因为Java虚拟机解决平台的兼容性问题,所以有java虚拟机的地方就能跑java代码
docker“号称一次封装,到处运行”,因为docker决绝了应用环境的问题,安装了docker的平台就能跑docker包,这样就决绝了“开发环境能跑,一上线就崩的尴尬局面”
先说几个docker中的概念,一:镜像,docker镜像就和系统中的iso镜像类似,包含了应用程序信息,
二:容器,容器就相当于一个可以运行起来的虚拟机,应用程序运行在容器中,docker运行在“docker”上,
三:仓库,仓库就是存放镜像的地方,类似钰git,svn这种版本控制,也是分为公有仓库和私有仓库两种形式。
下面来介绍一下docker的安装
docker支持大部分的linux版本,
第一种安装办法
准备vmware虚拟机,并下载安装linux系统(要保证安装的Linux系统可以联网)
直接使用yum安装docker(不了解yum命令的请自行百度)
yum install -y docker
第二种安装办法
准备号vmware虚拟机后,并下载安装linux系统(但是连接不上网络,只能通过下载rpm包来安装docker)
rpm镜像下载地址用的阿里的
https://mirrors.aliyun.com/docker-ce/linux/centos/7/
下载三个包
docker-ce-selinux-17.03.1.ce-0.1.rc1.el7.centos.noarch.rpm
docker-ce-17.03.1.ce-0.1.rc1.el7.centos.x86_64.rpm
containerd.io-1.2.0-1.0.beta.0.el7.x86_64.rpm
将这三个包按照顺序分别安装
rpm -ivh containerd.io-1.2.0-1.0.beta.0.el7.x86_64.rpm
rpm -ivh docker-ce-selinux-17.03.1.ce-0.1.rc1.el7.centos.noarch.rpm
rpm -ivh docker-ce-17.03.1.ce-0.1.rc1.el7.centos.x86_64.rpm
好了,现在我们安装完成了,然后我们讲一下docker服务的启停
启动docker
sudo service docker start 或者 sudo systemctl start docker
停止docker
systemctl stop docker.service
我们先启动docker服务,我们进入docker命令的使用,来感受一波docker
先用docker -v 来查看一波docker版本,看我们docker是不是正确安装了
然后我们在使用docker info 查看一下docker系统的信息
现在我们在用个镜像来实际使用一波
我们可以从公网上拉取一个已有的镜像或者使用自己已经有的镜像来操作
docker pull images_name(镜像名字)
这里只是介绍拉取镜像的命令,如果不明白可以看另外一篇docker拉取镜像详解
也可以使用我们本地镜像
docker load –i images_name
我们查看一下我们本地的已有镜像
docker images
附带讲一下,镜像的删除命令
docker rmi images_name
删除镜像时要先删除由镜像生成的容器
下面我们来查看一下docker的容器
docker ps
可以看到我这是没有容器的
那我们通过镜像运行生成一个容器
docker run -dti --name container_example --net=host image_name:v1
在启动容器时开放指定端口
docker run -dti --name container_example --net=host –p 8080:80 image_name:v1
我们查看docker容器的日志
docker logs -f container_name
启动指定容器
docker start container_id
关闭指定容器
docker stop container_id
删除指定容器
docker rm –f container_id
进入容器内部
docker exec –it container_id bash
在容器内的操作命令就和在Linux中的命令类似
docker 查看容器内容
docker inspect container_name
Docker向宿主机传文件
docker cp container_id:<docker容器内的路径> <本地保存文件的路径>
宿主机向docker传文件
docker cp 本地文件的路径 container_id:<docker容器内的路径>