核心概念
- docker主机
- docker客户端
- docker 仓库 保存打包好的软件镜像
- docker 镜像 就是创建docker容器的docker模板
- docker 容器 就是一个或者一组应用
使用步骤
安装
yum install docker
启动
systemctl start docker
查找
docker search mysql
在dockerhub 上找
下载
docker pull mysql
就是查看是否有安装包
docker images
就是安装软件
docker pull mysql:5.5
卸载
docker rmi 镜像id
用docker images 找
容器操作
搜索镜像
下载
创建容器
systemctl status docker
看服务的状态
docker --help
进入容器
docker exec -it mycentos2 /bin/bash
启动镜像
docker run --name -d image-name
docker run --name mytomcat -d tomcat:latest
查看运行中的容器
查看已经运行的程序
docker ps
-a
查看已安装的程序
停止
docker stop 容器id
id用docker ps -a 查看所有
docker start 容器id
删除
docker rm 容器id
docker run -d -p 8888:8080
前面是主机端口 后面 容器端口
linux
防火墙状态
service firewalld status
关闭防火墙
service firewalld stop
docker logs 容器id
mysql
$ docker run -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
在后面还可以加上服务器属性
启动容器
docker start mysql01
大数据
/bin/bash XXXX.sh
运行大数据安装平台脚本
- 进入容器名字为 spark-master
的平台
docker exec -it spark-master bash
- 列出大数据节点
yarn node --list
- 看当前节点的进程
jps
- 登陆到某个节点(slave1)
ssh hadoop-slave1
-------通过yarn node --list
看到的
docker之梦学谷
解决的问题
在我这台电脑上能跑起来 在别的电脑上也能跑起来 就是 可以将你的环境也打包
打包环境就是打包镜像
打包的东西成集装箱 只要操作系统安装了docker 就能运行哪个集装箱 就是已经配好的环境
- docker 运行在操作系统内核之上 是隔离离进程
- 虚拟机则是运行在虚拟出来的物理硬件之上 是隔离操作系统
centos版本要求
uname -r
3.1
镜像就是模板文件

改镜像
按照阿里云上的提示走
docker pull tomcat
docker rmi +id 名
容器操作
5.2.1 创建容器命令
创建容器 [OPTIONS] 常用的参数说明:
-i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与-t 同时使用 。
-t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入
-it 两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name 为创建的容器指定一个名称 。
-d 创建一个守护式容器在后台运行,并返回容器ID; 这样创建容器后不会自动登录容器,如果加-i参数,创建后就会运行容器。
-v 表示目录映射, 格式为:
-p 宿主机目录:容器目录 注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p 表示端口映射,格式为:-p 宿主机端口:容器端口
5.2.2 交互式容器
说明: 就是创建容器后,马上会启动容器,并进入容器
1. 创建一个交互式容器并取名为 mycentos, ( /bin/bash 是linux中的命令解析器,会进入到容器里面命令行)
上图显示,已经进入容器中(上面主机名变成了容器实例编号 )
2. 新开一个 shell 窗口,这时我们通过 docker ps 命令查看,发现可以看到启动的容器,状态为 Up 启动状态
3. 新开一个 shell 窗口,再创建一个 mycentos1 容器(注意:docker 命令是不能在容器里面使用)
docker pull centos:7
docker run [OPTIONS] 镜像名:标签名
docker run -it --name=mycentos centos:7 /bin/bash
docker run -it --name=mycentos1 centos:7 /bin/bash
1
1
启动或者停止多个容器
docker ps -a -q
查出来容器id
docker start ``docker ps -a -q``
docker kill +容器id
创建守护容器
docker run -id --name=mycentos2 centos:7 /bin/bash
进入守护式容器
docker exec -it mycentos2 /bin/bash
这里要用 /bin/bash 要用这个命令来启动
注意:交互式容器通过 docker exec 进入容器后,使用 exit 也一样的只退出但不停止容器
拷贝
往里往外
docker cp 要拷贝的宿主机文件或目录 容器名称:容器文件或目录
docker cp 容器名称:要拷贝的容器文件或目录 宿主机文件或目录
挂载
docker run -id -v /宿主机绝对路径目录:/容器内目录 --name=容器名 镜像名
容器细节
docker inspect mycentos2
实战
mysql5.7
拉取
docker pull mysql:5.7
运行:
docker run -id --name=mxg_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
登陆:
docker exec -it mxg_mysql /bin/bash
redis
docker pull redis
docker run -id --name=mxg_redis -p 6379:6379 redis

rabbitmq
docker pull rabbitmq:management
docker run -id --name=mxg_rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
http://192.168.10.11:15672

备份和迁移
打包没有目录映射
docker commit mxg_tomcat new_tomcat:1.1
就是 复制过去
打包镜像
docker save -o mycentos.tar mycentos_new:1
给别人用 还要把数据打包给别人 通过cp 的方式回复数据
恢复
docker load -i xxx.jar
dockerfile
层级打包
注意 他自己解压不出来 我是自己解压解决的

网友评论