安装
- 我这里用的是CentOS7_1511 下载地址
http://linux.xitongxz.net:808/201603/CentOS-7-x86_64-DVD-1511.iso
cat /etc/redhat-release
查看Linux版本,确定版本是Linux 7 及以上版本- 确定可以上外网,如果不能上外网可以参考
https://www.cnblogs.com/taopanfeng/p/10978752.html
yum -y update
更新 yum 源,这个更新有点儿久,耐心等待...curl -fsSL https://get.docker.com -o get-docker.sh
获取安装 Docker 的脚本sh get-docker.sh
执行脚本进行安装 Dockersystemctl start docker
启动 Dockervim /etc/docker/daemon.json
设置加速器,进行下载加速,不然使用起来下载镜像太慢.
这个文件里面只添加下面内容,最好不要有别的东西
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
chkconfig iptables off
永久关闭防火墙systemctl enable docker
开机自动启动 Docker
防火墙
Linux防火墙
永久性生效,重启后不会复原
开启:chkconfig iptables on
关闭:chkconfig iptables off
即时生效,重启后复原
开启:service iptables start
关闭:service firewalld stop
Docker
启动 Docker
systemctl start docker
关闭 Docker
systemctl stop docker
重启 Docker
systemctl restart docker
开机启动Docker
systemctl enable docker
镜像
如果版本号为latest 可以直接指定镜像名称
查找镜像
docker search 镜像名称:版本号
拉取镜像
docker pull 镜像名称:版本号
删除镜像
docker rmi 镜像名称:版本号
容器
启动容器
docker run 运行容器 如果docker images中没有会自动pull拉取镜像
--name 指定容器名称
-d 后台运行
-p Linux端口:容器端口
--restart always 一直运行,重启也运行
-e 参数
-v Linux目录/文件:容器目录/文件
关于容器
docker容器会有一个 ip地址 和 端口
Linux可以访问docker容器的 ip:容器port
Windows可以访问Linux的 ip:映射port
docker容器 port : docker run -p 后面一个
Linux port: docker run -p 前面一个
docker 容器的ip: docker inspect 容器id/名称
停止容器
docker stop 容器id/名称
重启容器
docker restart 容器id/名称
删除容器
docker rm 容器id/名称
进入容器
docker exec -it 容器id/名称 bash
查看容器配置文件位置
例如:进入nginx容器之后
nginx -t
查看容器日志
docker logs 容器id/名称
查看容器信息
docker inspect 容器id/名称
数据共享
docker commit -m="提交描述" -a="作者" 容器id 要创建的镜像名:[标签名]
数据共享
docker run 的 -v Linux路径/文件:容器路径/文件
不论容器是否停止,只要一方修改,另外一方也修改
如果 -v Linux路径:容器路径:ro
这里的ro就是只读ReadOnly的意思,容器不能修改,Linux可以修改,他们依然同步
----------
docker build -f /everything/docker/Dockfile -t panfeng:1 .
-f 不加也可以 在Dockerfile文件目录执行docker build -t panfeng:1 .
-t 代表镜像名称 panfeng 镜像标签 1 如果直接写名称 标签为 latest
. 代表当前目录
---
docker inspect 容器id/名称
Volumes -> 容器目录 : Linux目录
VolumesRW -> 容器是否可读可写
---
docker run --name -v /a:/a x01 镜像名称 >>>这里容器和Linux都有a文件夹,并共享
docker run --name x02 --volumes-from x01 镜像名称
这里的x02继承x01容器,在x01容器内也会有一个/a目录,此时的x01,x02,Linux同步
如果修改01容器内容 02也会更改,
如果再执行一个03继承01,则03会有/a目录并有其内容,
删除01之后,x02,x03,Linux还会同步
Dockerfile
三步骤
1,编写Dockerfile
2,docker build -t diy .
3,docker run......
1,基于哪个镜像
FORM java:8
2,镜像的姓名+邮箱
MAINTAINER 镜像姓名
LABEL key=value key=value 可以指定多个
3,容器构建时需要运行的命令
RUN
4,容器向外暴露端口
EXPOSE
5,docker exec -it 进入容器时的目录
WORKDIR
6,构建过程中设置环境变量
ENV
7,拷贝进来并解压
ADD
8,拷贝一个目录到另外一个目录
COPY
9,容器卷,用户持久化,与Linux同步
VOLUME
10,可以有多个命令,只有最后一个生效,会被docker run 命令替换
CMD
11,和cmd差不多,但会执行多行,docker run命令会追加,
ENTRYPOINT
12,
ONBUILD
---
FROM nginx
MAINTAINER taopanfeng<[email protected]>
ENV my_env_path /tmp
WORKDIR $my_env_path
RUN yum -y install vim,ll
EXPOSE 80
启动的容器
Redis
docker run --name redis01 -d -p 6379:6379 redis
操作Redis客户端
docker exec -it redis01 redis-cli
MySQL
docker run --name mysql01 -d -p 3307:3306 mysql -e MYSQL_ROOT_PASSWORD=123456 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
Tomcat
docker run --name tomcat01 -d -p 8080:8080 tomcat
RabbitMQ
docker run --name rabbitmq01 -p 5673:5672 -p 15673:15672 -d rabbitmq:management
Elasticsearch
启动之前需要输入 vi /etc/sysctl.conf
在后面添加一行 vm.max_map_count=262144
再输入sysctl -p
让内核参数立即生效
docker run --name elasticsearch01 -d -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -p 9201:9200 -p 9301:9300 elasticsearch:6.5.0
安装分词器(elasticsearch01是docker已经运行的容器)
docker exec -it elasticsearch01 /bin/bash
安装分词器,因为我的镜像是elasticsearch:6.5.0 ,安装过程中输入y即可
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.0/elasticsearch-analysis-ik-6.5.0.zip
重启elasticsearch容器
docker restart elasticsearch01
如果要运行 7.4.0
https://www.cnblogs.com/taopanfeng/p/11684442.html
Zookeeper
docker run --name zookeeper01 -p 2181:2181 --restart always -d zookeeper
MongoDB
docker run --name mongo01 -d -p 27018:27017 mongo