基本设置
开机自启动
systemctl enable docker.service
关闭开机自启动
systemctl disable docker.service
设置
镜像加速器
底层原理
docker常用命令
帮助命令
镜像命令
容器命令
设置容器自启动
docker update mysql --restart=always
常用其他命令
小结
作业
nginx
端口暴露
tomcat
cp -r webapps.dist/* webapps #这个就可以将文件复制
es kibana
查看cpu状态可以使用 docker stats
可视化
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
curl localhost:端口号 这样就可以访问本机的页面
docker镜像
commit镜像
容器数据卷
文件挂载
挂载,指的就是将设备文件中的*目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。
什么是容器数据卷
总结
是为了容器的持久化和同步操作!容器间也可以数据共享
使用数据卷
方式一
文件同步有点类似于vue里面的数据绑定,但是容器删除了,容器中的目录还在
好处:我们只需要在本地修改就可以了,容器会自动同步
安装MySQL
具名和匿名挂载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1X2edVY-1615872174297)(https://gitee.com/qingchengxiaoye//image/raw/master///image-20210305091238687.png)]
拓展
数据卷容器
结论
DockerFile
初识
介绍
DockerFile构建过程
基础知识
DockerFile指令
实战测试
创建自己的centos
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZCKhB5W-1615872174313)(https://gitee.com/qingchengxiaoye//image/raw/master///image-20210305105212399.png)]
使用ENTRYPOINT时候,可以直接在后面追加命令,CMD是直接替换命令
实战:Tomcat镜像
FROM centos
MAINTAINER dingqi<1543767844@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u161-linux-x64.tar.gz /usr/local
ADD apache-tomcat-9.0.43.tar.gz /usr/local
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.43
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.43
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.43/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.43/bin/logs/catalina.out
由于使用的是官方定义的名字,所以这里不需要使用-f用来指定文件,可以直接通过名字来进行运行
运行
docker run -d -p 9090:8080 --name dingqi -v /home/dingqi/build/tomcat/test:/usr/local/apache-tomcat-9.0.43/webapps/test -v /home/dingqi/build/tomcat/log:/usr/local/apache-tomcat-9.0.43/logs diytomcat
发布自己的镜像
DockerHub
此时kuangshen这个必须是自己的dockerhub账号的名字,否则就会无法push
docker tag 6ca2418ecbd1 qingchengxiaoye/tomcat:6.2#修改名字
docker push qingchengxiaoye/tomcat:6.2#推送
阿里云镜像服务
阿里云可以参考官方文档,文档很详细的
小结
Docker网络
理解docker0
清空环境
–link
就是直接在配置里面映射网络地址,这种方式太笨重了了,不推荐使用,所以了解就可以了
自定义网络不适用于docker0
docker0的问题就是不支持直接使用容器名进行访问
自定义网络
和link一样,都是为了解决容器互连,自定义网络的优点就是不但可以直接通过ip联通,还可以通过名字连通
网络连通
连接一个网络到一个容器
解决方式,就是直接将容器放到私网下面,,也就是一个容器有两个id
部署redis集群
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done ##创建redis的脚本
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
#启动脚本
创建集群
连接集群
只有-c才是集群,如果没有的话就是单机
cluster就是集群的意思
springboot微服务
查看容器日志
docker logs 容器名字
这样就可以查看容器日志输出了
linux常见命令
改变权限
可读、可写、可执行 |||| r w x ||||| 4 2 1 |||| 用户权限 用户所在组的权限 其他人的权限
chmod -R 777 /文件夹或者文件 # -R代表递归
安装elastic search
(1) 下载ealastic search(存储和检索)和kibana(可视化检索)
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
版本要统一
(2) 配置
# 将docker里的目录挂载到linux的/mydata目录中
# 修改/mydata就可以改掉docker里的
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
# es可以被远程任何机器访问
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
# 递归更改权限,es需要访问
chmod -R 777 /mydata/elasticsearch/
(3)启动
# 9200是用户交互端口 9300是集群心跳端口
# -e指定是单阶段运行
# -e指定占用的内存大小,生产时可以设置32G
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2
因为容器里的文件映射到了外面,所以删除容器和新建容器数据还在
第一次查docker ps启动了,第二次查的时候发现关闭了,docker logs elasticsearch
http://192.168.56.10:9200
数据挂载到外面,但是访问权限不足
把/mydata/elasticsearch下文件夹的权限设置好,上面已经设置过了
设置开机启动elasticsearch
docker update elasticsearch --restart=always
(4)启动kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 -p 5601:5601 -d kibana:7.4.2
docker update kibana --restart=always
安装并且配置nginx
#随便启动一个nginx实例,只是为了复制出配置
docker run -p80:80 --name nginx -d nginx:1.10
#将容器内的配置文件拷贝到/mydata/nginx/conf/ 下
mkdir -p /mydata/nginx/
docker container cp nginx:/etc/nginx/ .
#由于拷贝完成后会在config中存在一个nginx文件夹,所以需要将它的内容移动到conf中
mv /mydata/nginx/conf/nginx/* /mydata/nginx/conf/
rm -rf /mydata/nginx/conf/nginx
#终止原容器
docker stop nginx
#执行命令删除原容器
docker rm nginx
#创建新的Nginx,执行以下命令
docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf/:/etc/nginx \
-d nginx:1.10
#设置开机启动nginx
docker update nginx --restart=always
docker update elasticsearch --restart=alway
#创建“/mydata/nginx/html/index.html”文件,测试是否能够正常访问
echo '<h2>hello nginx!</h2>' >index.html
#测试使用
http://qingchengxiaoye.icu/
#由于nginx默认访问html目录,所以直接加后缀就可以了
http://qingchengxiaoye.icu/es/fenci.txt