Docker简介
Docker是一个虚拟化平台( 官网Empowering App Development for Developers | DockerEmpowering App Development for Developers | Docker),诞生于 2013 年初,基于 Google 公司的 Go 语言进行实现。可以通过虚拟化方式,为应用提供可运行的容器。基于这种方式,可更快地打包、测试以及部署应用程序。
现阶段,很多应用软件的安装都在向基于docker方式的安装进行实现。例如mysql,那么为什么不直接在操作系统中安装一个mysql,而是用容器呢?因为,安装MySql过程并不简单,要配置安装源,安装依赖包,对mysql进行配置…如果要在多台主机上安装,每台主机都要进行这些繁琐的操作,万一服务器挂了,这一系列操作还要再重来一遍,但有了docker,一个安装配置好的mysql容器,可以直接拿到另一台主机上启动,而不必重新安装mysql。另外,docker还有一重要的用处,就是可以保证开发,测试和生产环境的一致.
版本说明
Docker分成了两个版本:Docker EE (企业版)和Docker CE(社区版本),其中,Docker EE由公司支持,可在经过认证的操作系统和云提供商中使用。Docker CE是免费的Docker产品的新名称,Docker CE包含了完整的Docker平台,非常适合开发人员和运维团队构建容器APP。
参考手册
docker中文免费手册 [Docker — 从入门到实践]
Docker — 从入门到实践 | Docker 从入门到实践
docker 从入门到实践,离线版
docker pull dockerpracticecn/docker_practice
docker run -it --rm -p 4000:80 dockerpracticecn/docker_practice
Docker应用分析
参考docker 官网( Docker overview | Docker Documentation),了解其docker运行机制,例如:
其中:
Docker Host是我们的docker宿主机(就是安装了docker的操作系统)
Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images中
Docker Daemon是docker的服务线程,处理Docker客户端命令。
Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。
以docker pull 命令为例,了解docker执行过程:
1)客户端将指令发送给docker daemon
2)docker daemon 先检查本地images中有没有相关的镜像
3)如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地
Docker安装
初始化环境
准备CentOS,本次以CentOS7为例进行安装,官方安装手册为:
Install Docker Engine on CentOS | Docker Documentation
Yum 在线安装
若安装过Docker,卸载旧版本
sudo yum remove docker-ce \
docker-ce-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
第一步:设置存储库
sudo yum install -y yum-utils
第二步:设置yum仓库位置
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第三步:更新yum缓存
sudo yum makecache fast
第四步:安装新版docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
Docker入门
基本操作
第一步:启动docker
sudo systemctl start docker
设置docker开机启动(注意:在root用户下)
sudo systemctl enable docker
取消docker开机自启
sudo systemctl disable docker
第二步:镜像加速
由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json
下面命令直接生成文件 daemon.json
cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
说明:在执行如上指令时,保证你的登录用户为root管理员用户。
第三步:重新启动服务
重新加载docker配置
sudo systemctl daemon-reload
重启docker服务
sudo systemctl restart docker
第四步:查看镜像配置
docker info
第五步:下载镜像
docker pull centos:7
第六步:检查docker镜像
docker images
第七步:运行docker镜像
docker run centos7 bash
若镜像不存在时,直接下载镜像
sudo docker run centos7
若要删除镜像
docker image rm centos7
第八步:检查已启动docker容器,id和名字
docker ps
假如镜像被占用着是不可以直接被删除的,需要先删除应用此镜像的容器,例如:
docker container rm 容器名或容器id
启动或停止容器
启动容器:docker container start 容器名/容器id
关闭容器:docker container stop 容器名/容器id
重启容器:docker container restart 容器名/容器id
进入指定容器
docker exec -it 容器名/id bash
退出容器用exit
删除容器
未开启:docker container rm 容器名/id
已开启:docker container rm -f 容器名/id
挂载主机目录
docker run -it -v /usr/app:/opt/app centos:7 bash
其中:
1)/usr/app:为宿主机目录
2)/opt/app: 为启动容器的一个目录
3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
查看挂载目录信息
docker inspect 容器名/id