docker

1、安装
先卸载
···yum remove docker
docker-client
docker-client-latest
docker-common
docker-latest
docker-latest-logrotate
docker-logrotate
docker-engine
再安装安装包
yum install -y yum-utils
设置镜像仓库(使用国内镜像)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecashe fast
安装最新的
yum install docker-ce docker-ce-cli containerd.io
启动
systemctl start docker
检查是否安装成功
docker version
hello word
docker run hello-world
查看镜像
docker images
卸载
a卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
b删除资源
rm -rf /var/lib/docker

默认工作路径/var/lib/docker

阿里云镜像加速

docker是怎么工作的
Docker是一个Client+Server结构的系统,Docker的守护进程运行再主机上,通过Socket从客户端访问!
DockerServer接收到Docker-Client的指令,就会执行这个命令

Docker的常用命令
帮助命令:
docker version
docker info
docker --help
镜像命令
docker images查看主机镜像
搜索
docker search mysql
可选项,通过收藏来过滤
--filter=stars=3000(docker search mysql --filter=stars=3000)
下载镜像
docker pull mysql [:tag] (例子:docker pull mysql:5.7)
删除镜像
docker rmi -f(全部删掉)
docker rmi -f image的id (删除指定容器)

容器命令

-说明:有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习
docker pull centos(新建容器)
docker run centos (启动容器)
-d 后台运行
-it使用交互方式运行,进入容器查看内容
-p指定容器的端口 -p 8080
1、主机端口:容器端口
2、主机端口:容器端口(常用)
3、容器端口
ip:主机端口:容器端口
启动并进入容器
docker run -it centos /bin/bash
ls查看容器内地centos
exit 退出容器
docker ps:正在运行的容器
docker ps -a 运行过得容器
容器删除命令
docker rm $(docker ps -a -q)
正在运行的容器不能删除
docker start 容器id 启动容器
docker restart 容器id 重启 容器
docker stop 停止当前正在运行的容器
docker kill 容器id 杀掉运行容器

常用的其他命令

docker run -d 镜像名 :后台运行
坑:容器启动后会发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs -f -t --tail(没学会)
查看容器元数据
docker inspect 容器id
进入当前正在运行的容器(通常都是后台运行的)
需进入修改配置
1、docker exec -it 容器id bashshell (进入容器后开启一个新的终端)
2、docker attach 容器id (进入的是正在运行的命令行而不是开启一个新的窗口相较于1)
从容器内拷贝文件到主机上
docker cp 容器id:容器内路径 目的的主机路径

官方下载

docker run -it --rm tomcat(用完即删,用于测试)

运行nginx
docker run d --name nginxlsl -p 3344:80 nginx
其中 --name是命名
-p 宿主机端口:容器内部端口

部署tomcat
docker run tomcat
docker run -d -p 3355:8080 --name tomcat01 tomcat

启动安装elasticsearch
docker run -d --name elasticsearch -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
特别耗内存,可在其中加入-e EX_JAVA_OPTS="-Mms64m -Xmx512m"
Kibana 连接es

可视化

portainer(先用这个,不是最佳选择)
Rancher(CI/CD再用)
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

commit镜像

docker commit 提交容器程为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[tag]
生成的新镜像可以以后正常使用

容器数据卷

什么是容器数据卷
docker理念,将应用和环境打包成一个镜像!如果容器删除,数据就会丢失。需求数据可持久化。
容器之间可以有数据共享的技术!
Docker容器中产生的数据可以同步到本地就是卷技术。
目录的挂载,将我们容器内的目录挂载到linux上面!

使用数据卷

方式一:使用命令挂载 -v 例子docker run -v 主机目录:容器内目录
部署mysql
docker run -d -p 3310:3306 --name mysql01 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
具名挂载 -v 名字:容器内路径
匿名挂载 -v 容器内路径
指定路径挂载 -v /卷路径:/容器内路径
在挂载后加上:ro或:rw 就是(只读和可读写的权限)针对的是在内部的权限

初识dockerfile

dockerfile就是可以用来构建镜像,之前用commit创建过。就是命令脚本,通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个一个的命令,每个命令都是一层。

创建一个dockerfile1
内容:
FROM centos
VOLUME ["volume01","volume"]
CMD echo "---end---"
CMD /bin/bash

用dockerfile构建镜像命令,记住加 .
docker build -f dockerfile1 -t lishuailing:1.0 .
多个容器同步卷 启动时 --volumes-from
结论:容器之间可以做一些配置信息之间的传递,通过数据卷可以实现。数据卷的声明周期可以一直持续的没有容器使用为止。一旦持续到了本地可以永久保存。
Dockerfile的使用
1、编写一个dockerfile文件
2、docker build构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库!)
docker构建过程
基础知识
1、每个保留关键字(指令)都必须是大写字母
2、执行从上到下顺序执行
3、#标识注释
4、每一个指令到会创建提交一个新的镜像层,并提交!
DockerFile指令
FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,一般是姓名+邮箱
RUN #镜像构建的时候需要运行的命令
ADD #步骤,tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOSE #保留端口配置
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD #当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令,触发指令
COPY #类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量
练习:编写dockerfile文件

FROM centos
MAINTAINER lishuailing<635032144@qq.com>
ENV MYPATH /use/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-toolsx
EXPOSE 80
CMD echo $MYPATH
CMD echo "----and----"
CMD /bin/bash

通过文件构建镜像
docker build -f mydockerfile-centos -t mycentos:1.0 .

实战tomcat镜像

1、准备镜像文件tomcat压缩包,jdk压缩包
2、编写dockerfile文件,官方命名为Dockerfile 此命名在build时候就会自动寻找文件,不需要-f指定了

From centos
MAINTAINER lishuail<635032144@qq.com>
COPY readme.txt /usr/local/readme.txt
ADD apache-tomcat-9.0.41.tar.gz /usr/local/
ADD jdk-8u271-linux-aarch64.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.22/bin/startup/sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out

启动容器

docker run -d -p 9090:8080 --name lishuailingTomcat -v /home/lishuailng/build/tomcat/test:/usr/local/apache-tomcat-9.0.22/webapps/test -v /home/lishuailing/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.o.22/logs diytomcat

Docker 网络

理接Docker0
清空所有环境
ip addr
docker 每启动一个容器,docker就会给容器分配一个ip,只要电脑上安装了一个dokcer,就会有一个docker网卡(桥接模式),使用的技术是evth-pair技术。
每启动一个容器主机就会多出一个网卡(成对出现)
思考一个场景,微服务下,database url=ip:,项目不重启,数据库ip换了,我们希望可以处理这个问题,可以名字来进行访问容器。
用--link技术可以实现但是比较笨(使用自定义网络更好)
自定义网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
把docker容器发布在自己的网络上就可以相互ping 通了,通过名字也可以直接ping通
自定义网络的好处:
mysql/readis-不同的集群使用不同的网络,保证集群是安全和健康的
测试大同别的网端的容器到本网端
docker net work mynet tomcat01
一个容器两个IP地址

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 01【熟悉】docker简介 1,什么是docker Docker是一个开源项目,诞生于2013年初,最初是d...
    北辰_6666阅读 327评论 0 0
  • 概述 是什么 解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。 一次封装,到处运...
    none_title阅读 619评论 0 0
  • 一、docker简介 1、为什么会出现docker?一般情况下是开发人员开发好代码,本地测试通过后,打成jar包或...
    贪挽懒月阅读 4,313评论 4 63
  • docker简介: 物理机(平常使用的电脑)是一栋楼,虚拟机(vmware)就是一个套间,docker是套间里面的...
    升龙无涯阅读 407评论 0 2
  • Docker Docker介绍 http://www.runoob.com/docker/docker-tutor...
    千锋陈老师阅读 943评论 0 0