文章来源:https://www.gulixueyuan.com/course/263/task/5244/show
一、docker是什么?
我们开发需要开发环境,线上需要线上环境,每一个环境都需要重复配置,如果开发环境和线上环境稍有不同,也会导致开发环境运行ok,线上运行有问题。那么docker就可以做到,将环境打包成镜像,其他地方都可以用,不用反复去做。也避免了很多问题。
二、docker安装(linux centos7)
1.按docker官网进行安装,https://docs.docker.com/engine/install/centos/
2.linux 要求centos7版本以上, 连接linux,命令: hostnamectl 查看系统版本
3.先安装gcc,执行如下命令
3.1 --- yum -y install gcc
3.2 --- yum -y install gcc++
3.3----gcc -v 查看gcc版本,确定是否安装成功
4.如果之前安装过docker那么就需要根据官网规定,执行卸载命令,没有安装过久掠过
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
5.安装docker工具包:
yum install -y yum-utils
6.此步骤需要注意,千万千万千万不要用docker官方镜像仓库拉镜像,
docker官方的命令是没错,但是国内网站要拉代码非常慢,影响使用体验,所以我们要用阿里云或者网易云提供的镜像站
命令: yum-config-manager --add-repo http://mirrors.aliyum.com/docker-ce/linux/centos/docker-ce.repo
命令:cat /etc/yum.repos.d/docker-ce.repo 可看到文件被配置为直接去aliyun上拉镜像。
7.更新软件包索引:yum makecache fast
8.安装docker-ce : yum -y install docker-ce
9.启动docker: systemctl start docker
10.查看版本号:docker version
11.执行docker hello-world 镜像测试docker:docker run hello-world #这里需要注意,因为第一次执行,我们还没有hello-world镜像,所以docker会去阿里云拉镜像,实例化
12.执行:docker images 查看本地镜像
13.docker安装成功后,我们需要配置镜像加速。阿里云和网易云都有提供加速,去阿里云注册账号,找到如下目录
13.1 创建文件夹:mkdir -p /etc/docker
13.2 创建文件并写入内容:vim /etc/docker/daemon.json
这里写入的内容就是如上阿里云centos配置镜像加速说明里,
13.3 重置daemon: systemctl daemon-reload
13.4 重启docker : systemctl restart docker
14 查看docker进程: ps -ef | grep docker 或查看版本号
三、docker使用前需要明白的概念
1.docker 的三要素: 镜像、容器、仓库
容器,就是一个系统环境,只是这个环境是docker简化了的,它可以通过镜像实例化得到
镜像,我们配置好的环境放在容器中,可以通过打包这个容器环境,也就是镜像保存下来
仓库,就是存储各种镜像的仓库
四、镜像操作命令(镜像查找,下载,删除)
1.镜像操作命令:docker images 查看本地镜像有哪些
2.镜像查看命令的参数
1) -a : 列出本地所有的镜像(包含中间映像层)
2) -q :只显示镜像id
3) --digests : 显示镜像的摘要信息
4) --no-trunc:显示完整的镜像信息
3.镜像查找,查找镜像(配置的阿里云仓库) :docker search
4.下载镜像:docker pull xxx 如 docker pull tomcat
注意,命令后没有加镜像的版本,那么默认的就是最新的版本
5.删除镜像:docker rmi 如: docker rmi hello-world
注意:正在运行的镜像不能直接删除,需要加参数 -f 强制删除
删除多个镜像:先下载几个,然后多个一起删
五、容器操作命令
容器操作命令:有镜像才能创建容器,这是根本前提
容器操作: 新建并启动容器、列出正在运行的所有容器、退出容器、启动容器、重启容器、停止容器、强制停止容器、删除已停止的容器.....
1)新建并启动容器:docker run -it 镜像id
2)列出正在运行的所有容器:docker ps
3)退出容器: exit-退出并关闭容器,CTRL+P+Q 退出容器不关闭容器
4)启动一个停止运行的容器:docker start 容器id
5)重启容器:docker restart 容器id
6)停止容器:docker stop 容器id
7)删除容器:删除已停止的容器-docker rm 容器id,强制删除正在运行的容器-docker rm -f 容器id
需要明白一点:linux系统上搭建docker,docker可以运行多个容器,一个容器就可以看做是一个简易版的linux环境,这个环境里也可以有nginx、redis,mysql等等,最后这个运行良好的环境包括开发的代码,都可以打包成一个镜像,直接放线上部署。
1.下载centos镜像:docker pull centos
可以看到,我们下载的镜像只有209M,我们之前在虚拟机或云服务器上装centos系统镜像有3-4个G。docker就是将容器环境简化了,去掉不需要的,需要的功能使用的是公用宿主机上的。所以前面我们说:容器就是一个简易版的linux环境
2.新建并启动容器 docker run [option] IMAGE [COMMAND] [ARG...]
参数如下;
启动一个镜像:
从如上示例可以看到, 创建了一个contos的容器,并进入到了这个容器里,它就是一个精简版的linux环境。其中 300e315abd2f是contos这个镜像的id ,(根据镜像id指向的镜像去实例化成一个容器)
3.退出容器(退出容器有两种方式:exit-停止容器并退出,ctrl+P+Q-容器不停止并退出)
1)停止容器并退出 exit
2)容器继续运行,退出容器到宿主机 ctrl+P+Q (PQ大写)
操作,我们先不关闭容器退出,并查看容器运行的容器
docker ps 查看宿主机中docker运行的容器,参数如下
进入到正在运行的容器: docker attach 容器id
示例:进入正在运行的容器,并关闭退出,然后重启
4.停止容器运行: 有两种方式 docker stop 容器id docker kill 容器id kill方式比较粗暴如同直接断电源。
5.删除已停止的容器:docker rm 容器id,
当然,还可以强制删除正在运行的容器 docker rm -f 容器id
一次删除多个容器
六、容器还有几个重要的操作
1)启动守护式容器:docker run -d 容器名称
2)查看容器日志:
3)查看容器内运行的进程:
4)查看容器内部细节:
5)进入正在运行的容器并以命令行交互:
6)从容器内拷贝文件到宿主机上:docker cp 容器id:容器内部路径 目的主机路径
1.启动守护式容器
如上执行后台运行容器,但是查看正在运行的容器却没有,其实docker run -d centos是有运行容器
在宿主机上后台运行一个容器,并让容器每两秒打印一句话。容器没有停止运行。
2.查看容器日志
3.查看容器内运行的进程
4.查看容器内部细节:容器内部像同心圆一样层层嵌套
5.进入正在运行的容器并以命令行交互
在宿主机命令行查看容器内某个目录下的文件
进入宿主机 用 docker attach 镜像id
6.从容器内拷贝文件到宿主机上