Docker使用笔记

基本设置

开机自启动

systemctl enable docker.service

关闭开机自启动

systemctl disable docker.service

设置

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

镜像加速器

Docker使用笔记

Docker使用笔记

底层原理

Docker使用笔记

Docker使用笔记

docker常用命令

帮助命令

Docker使用笔记

镜像命令

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

容器命令

设置容器自启动

docker update mysql --restart=always

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

常用其他命令

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

小结

Docker使用笔记

作业

nginx

Docker使用笔记

Docker使用笔记

端口暴露

Docker使用笔记

Docker使用笔记

tomcat

Docker使用笔记

cp -r webapps.dist/* webapps   #这个就可以将文件复制

Docker使用笔记

es kibana

Docker使用笔记

查看cpu状态可以使用 docker stats

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

可视化

Docker使用笔记

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

curl localhost:端口号 这样就可以访问本机的页面

Docker使用笔记

docker镜像

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

commit镜像

Docker使用笔记

Docker使用笔记

容器数据卷

文件挂载

挂载,指的就是将设备文件中的*目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。

什么是容器数据卷

Docker使用笔记

总结

​ 是为了容器的持久化和同步操作!容器间也可以数据共享

使用数据卷

方式一

Docker使用笔记

文件同步有点类似于vue里面的数据绑定,但是容器删除了,容器中的目录还在

Docker使用笔记

Docker使用笔记

好处:我们只需要在本地修改就可以了,容器会自动同步

安装MySQL

Docker使用笔记

Docker使用笔记

具名和匿名挂载

Docker使用笔记

Docker使用笔记

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1X2edVY-1615872174297)(https://gitee.com/qingchengxiaoye//image/raw/master///image-20210305091238687.png)]

拓展

Docker使用笔记数据卷容器

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

结论

Docker使用笔记

DockerFile

初识

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

介绍

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

DockerFile构建过程

基础知识

Docker使用笔记

Docker使用笔记

DockerFile指令

Docker使用笔记

实战测试

Docker使用笔记

创建自己的centos

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZCKhB5W-1615872174313)(https://gitee.com/qingchengxiaoye//image/raw/master///image-20210305105212399.png)]

Docker使用笔记

Docker使用笔记

使用ENTRYPOINT时候,可以直接在后面追加命令,CMD是直接替换命令

Docker使用笔记

Docker使用笔记

实战:Tomcat镜像

Docker使用笔记

Docker使用笔记

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


Docker使用笔记

由于使用的是官方定义的名字,所以这里不需要使用-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

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

发布自己的镜像

DockerHub

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

此时kuangshen这个必须是自己的dockerhub账号的名字,否则就会无法push

docker tag 6ca2418ecbd1 qingchengxiaoye/tomcat:6.2#修改名字

docker push qingchengxiaoye/tomcat:6.2#推送

阿里云镜像服务

Docker使用笔记

Docker使用笔记

阿里云可以参考官方文档,文档很详细的

小结

Docker使用笔记

Docker网络

理解docker0

清空环境

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

–link

就是直接在配置里面映射网络地址,这种方式太笨重了了,不推荐使用,所以了解就可以了

自定义网络不适用于docker0

docker0的问题就是不支持直接使用容器名进行访问

自定义网络

和link一样,都是为了解决容器互连,自定义网络的优点就是不但可以直接通过ip联通,还可以通过名字连通

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

Docker使用笔记

网络连通

连接一个网络到一个容器

Docker使用笔记

Docker使用笔记

解决方式,就是直接将容器放到私网下面,,也就是一个容器有两个id

Docker使用笔记

Docker使用笔记

部署redis集群

Docker使用笔记

Docker使用笔记

Docker使用笔记

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 
    #启动脚本

创建集群

Docker使用笔记

Docker使用笔记

连接集群

Docker使用笔记

只有-c才是集群,如果没有的话就是单机

cluster就是集群的意思

springboot微服务

Docker使用笔记

Docker使用笔记Docker使用笔记

Docker使用笔记

查看容器日志

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

Docker使用笔记

上一篇:SSD + 机械硬盘装 CentOS 分区的问题


下一篇:docker安装elasticsearch