Docker使用笔记

基本设置

开机自启动

systemctl enable docker.service

关闭开机自启动

systemctl disable docker.service

设置

image-20210304094025623

image-20210304094645982

image-20210304095000878

image-20210304095306635

image-20210304095428656

镜像加速器

image-20210304100638724

image-20210304101547968

底层原理

image-20210304102239447

image-20210304103339985

docker常用命令

帮助命令

image-20210304104234583

镜像命令

image-20210304104731324

image-20210304105449197

image-20210304110032040

image-20210304110252702

image-20210304111836771

容器命令

设置容器自启动

docker update mysql --restart=always

image-20210304112111064

image-20210304112730969

image-20210304113101026

image-20210304113304979

image-20210304113652352

image-20210304113908162

常用其他命令

image-20210304124818478

image-20210304125346992

image-20210304130106389

image-20210304130910539

image-20210304131034223

image-20210304131558301

image-20210304131704009

小结

image-20210304132238179

作业

nginx

image-20210304192730972

image-20210304192752725

端口暴露

image-20210304192836666

image-20210304193057938

tomcat

image-20210304194618527

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

image-20210304194814219

es kibana

image-20210304200857800

查看cpu状态可以使用 docker stats

image-20210304201637208

image-20210304203101429

image-20210304203412029

可视化

image-20210304203711899

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

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

image-20210304204855670

docker镜像

image-20210304205114825

image-20210304205325220

image-20210304205340807

image-20210304205859000

image-20210304210543204

commit镜像

image-20210304211522969

image-20210304211722759

容器数据卷

文件挂载

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

什么是容器数据卷

image-20210305080354754

总结

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

使用数据卷

方式一

image-20210305081319522

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

image-20210305081717432

image-20210305082234105

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

安装MySQL

image-20210305084421558

image-20210305084901274

具名和匿名挂载

image-20210305090917242

image-20210305091125045

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

拓展

image-20210305091441485数据卷容器

image-20210305094925480

image-20210305095406684

image-20210305095439197

image-20210305095537241

image-20210305095707984

image-20210305095917609

image-20210305100056918

结论

image-20210305100240269

DockerFile

初识

image-20210305092258594

image-20210305092311290

image-20210305092430085

image-20210305092453288

image-20210305092617690

image-20210305092711780

介绍

image-20210305101155056

image-20210305101226567

image-20210305101246478

image-20210305101428160

DockerFile构建过程

基础知识

image-20210305101710897

image-20210305101950770

DockerFile指令

image-20210305102621492

实战测试

image-20210305102757903

创建自己的centos

image-20210305103710161

image-20210305104509233

image-20210305104825096

image-20210305104833879

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

image-20210305110026283

image-20210305110138767

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

image-20210305110336327

image-20210305110447500

实战:Tomcat镜像

image-20210305112521098

image-20210305114614473

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


image-20210305114906626

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

image-20210305140556348

image-20210305141140136

image-20210305141927008

image-20210305141954080

发布自己的镜像

DockerHub

image-20210305142629570

image-20210305142613615

image-20210305143125841

image-20210305143229501

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

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

docker push qingchengxiaoye/tomcat:6.2#推送

阿里云镜像服务

image-20210305144954850

image-20210305145002407

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

小结

image-20210305150143576

Docker网络

理解docker0

清空环境

image-20210305153826015

image-20210305154046500

image-20210305154155856

image-20210305155317274

image-20210305155326875

image-20210305155352966

image-20210305155404265

image-20210305155426667

–link

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

自定义网络不适用于docker0

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

自定义网络

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

image-20210305160729803

image-20210305161225844

image-20210305161438872

image-20210305161724665

image-20210305162434686

image-20210305162135490

image-20210305162230923

网络连通

连接一个网络到一个容器

image-20210305162801542

image-20210305162829137

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

image-20210305163058461

image-20210305163339548

部署redis集群

image-20210305164319231

image-20210305164625174

image-20210305164637388

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

创建集群

image-20210305170415758

image-20210305170435452

连接集群

image-20210305165935887

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

cluster就是集群的意思

springboot微服务

image-20210305170726057

image-20210305172759067image-20210309081110818

image-20210305172846659

查看容器日志

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

image-20210314163930383

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值