简介
- Docker是一个开源的应用容器引擎, 一种轻量级容器技术.
- Docker可以让开发者打包他们的应用以及依赖包到一个轻量级, 可移植的容器中, 然后发布到任何流行的Linux机器上, 当然也可以实现虚拟化.
- Docker支持将软件编译成一个镜像, 然后在镜像中把各种软件配置好, 将镜像发布出去, 其他使用者可以直接使用这个镜像.
- 运行中的这个镜像称为容器, 容器是完全使用沙箱机制, 相互之间不会有任何接口, 更重要的是容器性能的开销极低.
核心概念
- Docker主机(host): 安装了Docker程序的机器, 用来用来执行容器和Docker守护进程.
- Docker客户端(Client): 连接Docker主机来进行操作.
- Docker镜像(Images): 创建Docker容器的模板(软件打好包就成镜像)
- Docker仓库(Registry): 用来保存各种打包好的软件镜像.
- Docker容器(Container): 镜像启动后的实例称为一个容器.容器是独立运行的一个或一组应用.
- 使用Docker的步骤
- 安装Docker
- 去DockerZ仓库找到这个软件对应的镜像.
- 使用Docker运行这个镜像, 这个镜像就会生成一个Docker容器.
- 对容器的启动停止, 就是对软件的启动停止.
Docker的安装
- 步骤
- 检查内核版本, 必须是3.10及以上
- uname -r
- 安装Docker
- yum install docker
- 启动Docker
- systemctl start docker
如果启动不了, 报错: Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details. 大概率是linux内核版本太低造成的. 1.卸载docker 2.更新内核: sudo yum update 3.重新安装docker即可
- systemctl start docker
- 检查版本
- docker -v
- 设置开机启动docker
- systemctl enable docker
- 停止docker
- systemctl stop docker
- 检查内核版本, 必须是3.10及以上
Docker修改源
- 不修改源的话, 超级慢的速度让人心态崩溃.
- 步骤
1. cd /etc/docker 进入配置目录. 2. 打开 daemon.json, 若没有就新建一个. 3. 配置以下内容 { "registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"] } 4.保存并退出 5.之后重启docker: service docker restart
Docker常用命令&操作
- 镜像操作
- 检索
- docker search 关键字.
- 拉取
- docker pull 镜像名:tag
- tag可选, 标识标签, 为软件版本, 默认是latest
- 查看本地镜像
- docker images
- 删除镜像
- docker rmi 镜像id
- 检索
- 容器操作
- 软件镜像 -> 运行镜像 -> 产生容器
- 运行镜像
- docker run --name 名字 -d 镜像名:tag
- --name 自定义容器名
- -d: 后台运行
docker run --name mytomcat -d tomcat:jdk8
- 查看运行的容器
- docker ps
- 停止运行中的容器
- docker stop 容器id/容器名
- 查看所有容器(运行的和停止的)
- docker ps -a
- 启动容器
- docker start 容器id
- 删除一个容器
- docker rm 容器id
- 启动一个做了端口映射的tomcat
- docker run -d -p 8888:8080 tomcat:jdk8
- -p: 把主机的端口映射到容器端口(主机端口:容器内端口)
这里访问tomcat首页出现404错误 原因是新版的tomcatwebapp目录为空
Mysql举例
- docker pull mysql
- 错误的启动
docker run --name mysql01 -d mysql 错误日志: error: database is uninitialized and password option is not specified You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;
- 正确的启动
docker run -p 3406:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=root -d mysql
- 高级操作
docker run --name mysql03 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag //把主机的/conf/mysql文件挂载到mysql docker容器的/etc/mysql/conf.d文件夹里. //这样启动mysql就会按照我们的配置文件(在/conf/mysql)启动.
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci //指定mysql的一些参数