elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例

问题

es 暴漏的端口多
es 耗内存
es 数据一般要放入到安全目录-

下载启动镜像

docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

卡的朋友 docker stats 查看cpu状态

docker 安装可视化工具 portainer

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name prtainer portainer/portainer
````bash
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

docker commit :从容器创建一个新的镜像。

语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:

-a :提交的镜像作者;

-c :使用Dockerfile指令来创建镜像;

-m :提交时的说明文字;

-p :在commit时,将容器暂停。

实例

将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。

runoob@runoob:~$ docker commit -a “runoob.com” -m “my apache” a404c6c174a2 mymysql:v1
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057
runoob@runoob:~$ docker images mymysql:v1
REPOSITORY TAG IMAGE ID CREATED SIZE
mymysql v1 37af1236adef 15 seconds ago 329 MB

精髓

容器数据卷 dockerFile Docker网络
企业实战
docker Compose
docker Swarm
docker Jenkins

容器数据卷

数据?如果数据在容器中。容器删除,数据丢失:数据可以持久化!
容器之间可以有一个数据共享技术。
目录挂载,容器目录挂载在Linux上。
容器间可以共享

使用数据卷

方式一:直接使用命令挂载 -v
docker run -it -v /home/kaka/test:/home centos /bin/bash

dockerfile

构建镜像文件
编写一个dockerfile文件
docker build 构建镜像
docker run
docker push 发布镜像(阿里云仓库)

dockerFile 构建过程

1.每个保留关键字必须是大写字母
2.执行从上到下执行
3.#表示注释
4.每一个指令都会创建一个镜像,并提交。

dockerfile 面向开发的,发布dockerfile文件。
docker镜像成为企业交付的标准

dockerfile:构建文件,定义了一切的步骤。
Docker images:通过dockerfile构建成的镜像,最终发布和运行的产品。
docker 容器 容器:镜像运行起来提供服务。

dockerfile指令

FROM        ##基础镜像,一切从这里开始
MAINTAINER  ##告诉别人,谁写的
RUN         ##启动
ADD         ##
CMD         ##指定容器运行时候要运行的命令
ENTRYPOINT  ##指定容器启动时候要运行的命令,可以追加命令
ONBUILD     ##当构建一个被继承dockerfile 这个时候就会追加ONBULID命名
COPY        ##类似add,将文件拷贝到镜像
ENV         ##构建时候设置环境变量

实战

docker hub 中 基础镜像 FROM scratch 配置需要的软件进行构建

创建自己的centos

1.编写配置文件

FROM centos
MAINTAIER yangxizheng<1183293240@qq.com>ENV MYPATH /usr/local
WORKDIR $MYPATH RUN yun -y install vim
RUN yun -y install net-toolsEXPOSE 80CMD echo $MYPATH
CMD echo "----end----"
CMD /bin/bash

2.构建文件

docker build -f mydockerfile -t yangcentos:0.1 .

Successfully built 38457135457d
Successfully tagged yangcentos:0.1

3测试运行



dockers history 查看镜像历史。可以研究镜像这么做?

CMD ENTRYPOINT  命令

cmd测试

FROM centos
CMD ["ls ","-a"]

CMD 命名测试通过
root@ubuntu:/home/kaka/dockerfile# vim docker_file_cmd
root@ubuntu:/home/kaka/dockerfile# docker build -f docker_file_cmd -t cmd_test .
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM centos
—> 300e315adb2f
Step 2/2 : CMD [“ls”,"-a"]
—> Running in b4088b4991a0
Removing intermediate container b4088b4991a0
—> 828f8e41eefc
Successfully built 828f8e41eefc
Successfully tagged cmd_test:latest
root@ubuntu:/home/kaka/dockerfile# docker run 828f8e41eefc

#想追加一个命名 l ls all

ENTRYPOINT  追加命名,是直接追加在我们的ENTRYPOINT命名的后面的

root@ubuntu:/home/kaka/dockerfile# docker run 37aef73ee2da -l
total 56
drwxr-xr-x 1 root root 4096 Jan 15 08:27 .
drwxr-xr-x 1 root root 4096 Jan 15 08:27 …
-rwxr-xr-x 1 root root 0 Jan 15 08:27 .dockerenv
lrwxrwxrwx 1 root root 7 Nov 3 15:22 bin -> usr/bin
drwxr-xr-x 5 root root 340 Jan 15 08:27 dev
drwxr-xr-x 1 root root 4096 Jan 15 08:27 etc
drwxr-xr-x 2 root root 4096 Nov 3 15:22 home
lrwxrwxrwx 1 root root 7 Nov 3 15:22 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 3 15:22 lib64 -> usr/lib64
drwx------ 2 root root 4096 Dec 4 17:37 lost+found
drwxr-xr-x 2 root root 4096 Nov 3 15:22 media
drwxr-xr-x 2 root root 4096 Nov 3 15:22 mnt
drwxr-xr-x 2 root root 4096 Nov 3 15:22 opt
dr-xr-xr-x 416 root root 0 Jan 15 08:27 proc
dr-xr-x— 2 root root 4096 Dec 4 17:37 root
drwxr-xr-x 11 root root 4096 Dec 4 17:37 run
lrwxrwxrwx 1 root root 8 Nov 3 15:22 sbin -> usr/sbin
drwxr-xr-x 2 root root 4096 Nov 3 15:22 srv
dr-xr-xr-x 13 root root 0 Jan 15 08:27 sys
drwxrwxrwt 7 root root 4096 Dec 4 17:37 tmp
drwxr-xr-x 12 root root 4096 Dec 4 17:37 usr
drwxr-xr-x 20 root root 4096 Dec 4 17:37 var
root@ubuntu:/home/kaka/dockerfile#

dockerfile 多测试!!

dockerfile 实战Tomcat镜像

1.准备镜像文件 tomcat压缩包,jdk压缩包!
2.编写dockerfile文件

发布镜像

root@ubuntu:/home/kaka/dockerfile# docker login --helpUsage:  docker login [OPTIONS] [SERVER]Log in to a Docker registry.
If no server is specified, the default is defined by the daemon.Options:-p, --password string   Password--password-stdin    Take the password from stdin-u, --username string   Username
root@ubuntu:/home/kaka/dockerfile#

登录docker

root@ubuntu:/home/kaka/dockerfile# docker login -u yangxizheng
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded

发送到仓库

root@ubuntu:/home/kaka/dockerfile# docker push yangcentos:0.1
The push refers to repository [docker.io/library/yangcentos]

发布带版本

root@ubuntu:/home/kaka/dockerfile# docker tag 38457135457d yangxizheng/yangcentos:1.0
root@ubuntu:/home/kaka/dockerfile# docker images
REPOSITORY               TAG       IMAGE ID       CREATED        SIZE
yangcentos               0.1       38457135457d   6 hours ago    291MB
yangxizheng/yangcentos   1.0       38457135457d   6 hours ago    291MB
nginx                    latest    f6d0b4767a6c   3 days ago     133MB
mysql                    latest    d4c3cafb11d5   3 days ago     545MB
centos                   latest    300e315adb2f   5 weeks ago    209MB
portainer/portainer      latest    62771b0b9b09   5 months ago   79.1MB
root@ubuntu:/home/kaka/dockerfile# docker push yangxizheng/yangcentos:1.0
The push refers to repository [docker.io/yangxizheng/yangcentos]
7a9b78a4a18c: Preparing

发布到阿里云镜像服务


docker网络 (容器编排 集群部署)

清空所有容器

docker rm -f $(docker ps -aq) 清除正在运行的容器
docker rmi -f $(docker images -aq) 清除所有容器
docker stop $(docker ps -aq)

docker 网络测试

问题docker是如何处理容器网络访问?

root@ubuntu:/home/kaka# docker run -d -P --name tomcat01 tomcat

查看容器的内部网络地址 ip addr

docker exec -it tomcat01 ip addr

发现eth0@if262ip地址,docker分配的
linux能ping通吗?

linux能ping通docker容器

每启动一个docker容器都会分配给容器一个ip地址,安装了docker,就会有一个网卡docker0
桥接模式,使用技术evth-pair技术!

我们发现这些容器带来的网卡,都是一对一对的。
evth-pair 就是一对的虚拟设备接口,他们都是成对出现,一段挂着协议,一段彼此连接
技术充当桥梁。连接各种虚拟网络设备

结论 容器和容器之间可以通信的


结论: tomcat01和tomcat02是共用一个路由,docker0
所有的容器不指定网络的情况下,都是docker0路由,docker会给我们容器分配一个默认的可用的ip
255.255.0.1/16 255*255 -2
255.255.0.1/24 255 -2

小结 桥接技术

docker中的所有网络接口都是虚拟的,虚拟的转发效率高。
删除网桥都没有了

思考场景

编写一个微服务,database usl = ip;项目不重启,数据库ip换掉,我们希望可以处理这个名字进行访问容器?

–link技术

root@ubuntu:/home/kaka# docker exec -it tomcat03 ping tomcat04
ping: tomcat04: Temporary failure in name resolutionroot@ubuntu:/home/kaka# docker run -d -P --name tomcat06 --link tomcat03 tomcat
9d9d20c7bccd907a2cd63834378993959dfa3d8971e9051550e06eaf81b87ea8
root@ubuntu:/home/kaka# docker exec -it tomcat03 ping  tomcat06

通过–link 可以解决网络连通问题,反向不能ping通

 docker network inspect 0eeffa9de6e8

探究具体的网络
查看hosts配置

docker exec -it tomcat03 cat /etc/hosts


我们现在玩docker已经不建议使用 --link
自定义网络!不适应docker0!
docker0问题比较局限
不支持容器名连接访问

自定义网络

容器互联

root@ubuntu:/home/kaka# docker network --helpUsage:  docker network COMMANDManage networksCommands:connect     Connect a container to a networkcreate      Create a networkdisconnect  Disconnect a container from a networkinspect     Display detailed information on one or more networksls          List networksprune       Remove all unused networksrm          Remove one or more networksRun 'docker network COMMAND --help' for more information on a command.


网络模式
bridge :桥接 dockers搭桥 (自己也使用)
none: 不配置网络
host: 和宿主机共享网络
container: 容器网络连通!局限

测试

# 我们之前直接启动命令 --net bridge 这个就是我们的docker01
dcoker run -d -P --name tomcat01 --net bridge tomcat
dcoker run -d -P --name tomcat01  tomcat#更改网络docker0特点,默认不能访问  --link可以打通连接
## 我们自定义网络
root@ubuntu:/home/kaka# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
c9e1142e9ecde42f5525655e43ab4e7572972236ca72002f6d1b307744a4eaa0
root@ubuntu:/home/kaka# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
0eeffa9de6e8   bridge    bridge    local
c26985c7d4ec   host      host      local
c9e1142e9ecd   mynet     bridge    local
2cd470f8f4b3   none      null      local

我们的网络就创建好了


root@ubuntu:/home/kaka# docker run -d -P --name tomcat-net-01 --net mynet tomcat


现在不使用 --link 也可以ping名字啦
我们自定义的网络docker都已经帮我们维护好电对应的关系啦!
好处!!
redis-不同的集群使用不同的网络,保证集群是安全和健康的
mysql- 不同的集群使用不同的网络,保证集群是安全和健康的

网络连通



测试打通网络

root@ubuntu:/home/kaka# docker network connect mynet tomcat01

一个容器,两个ip
类似阿里云服务器,公网ip 私网ip

root@ubuntu:/home/kaka# docker exec -it tomcat01 ping tomcat-net-01

/home/kaka# docker exec -it tomcat02 ping tomcat-net-01

结论:假设要跨网咯操作别人,就需要使用 docker network connect连通!

实战:部署redis集群

ubuntu 18.04 docker学习相关推荐

  1. ubuntu 18.04 深度学习环境配置

    ubuntu 18.04 深度学习环境配置 系统环境配置 更新源,更新系统 安装一些工具软件 安装chromium浏览器,看CSDN学院视频必备 安装vim 开启sudo免密 安装ssh-server ...

  2. 为什么推荐使用Ubuntu 18.04 LTS学习机器人操作系统ROS 1和2

    因为: Canonical将Ubuntu 18.04 LTS Linux支持扩展到10年 这是第一次LTS的支持长达10年!!! 非常有助于解决版本过多,迭代过快等现象. 并且, Ubuntu 18. ...

  3. Ubuntu 18.04深度学习环境配置(CUDA9.0+CUDDN7.4+TensorFolw1.8)

    因为Ubuntu18.04刚发布不久,在安装CUDA和CUDNN中还没有匹配版本,最高也是17.04的版本,但实际上18.04的版本具有很强的兼容性.为避免读者踩坑,本文测试成功了Ubuntu18.0 ...

  4. ubuntu 18.04中编译安装使用 lapack 示例

    0.0 拉取 ubuntu:18.04 docker image:     sudo docker pull ubuntu:18.04 0.1 启动docker: sudo docker run -- ...

  5. [笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程

    这篇已经Out了,以[笔记] Ubuntu 18.04安装Docker CE及NVIDIA Container Toolkit流程为准. Docker的好处之一,就是在Container里面可以随意瞎 ...

  6. 基于Ubuntu 18.04机器人操作系统环境和深度学习环境配置

    基于Ubuntu 18.04机器人操作系统环境和深度学习环境配置详解 CUDA+Cudnn+ROS+anaconda+ubuntu装机必备 笔记本双系统安装 U盘启动项安装ubuntu18.04.1 ...

  7. 实战 | ​Docker ubuntu:18.04 镜像制作

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 ...

  8. ubuntu 18.04 LTS 国内源安装docker

    ubuntu 18.04 LTS 国内源安装docker 检查系统内核版本 $uname -r 4.15.0-42-generic 修改apt国内源为中科大源 sudo cp /etc/apt/sou ...

  9. Ubuntu 18.04下Couldn't connect to Docker daemon at http+docker://localunixsocket解决办法

    一台服务器系统为:Ubuntu 18.04 LTS,上面建了git裸仓库,用于开发吧代码push到这里.同时WEB测试环境通过docker也部署在这台.通过git钩子post-receive,当有新代 ...

最新文章

  1. UVa122-Trees on the level
  2. java List集合总结
  3. 服务器和云服务器的安全性哪个更好?—Vecloud
  4. 025_JDK的hashCode方法
  5. 如何成为一位牛逼的高手
  6. ZYNQ学习心得梳理(一)
  7. 马斯克如何通过生小孩统治世界?
  8. 开源 免费 java CMS - FreeCMS1.3-数据对象-report
  9. java链式存储_Java实现链式存储的二叉树
  10. js常用方法之Array对象方法扩展
  11. Assetbundle coustomerScripts
  12. Linux进阶之日志管理
  13. java生成base64图片条形码
  14. xp系统的计算机设置在哪里,请问在XP系统中怎样设置输入法
  15. 长大后的我们为何贪恋年少?
  16. 深度模型框架(持续更新)
  17. 桌面 计算机 网络连接怎么办,电脑显示本地网络连接但是宽带没连上。怎么办?...
  18. 利用MATLAB仿真实现交通红绿灯识别的目的
  19. 个人网络信息安全管理方法
  20. 32 非谓语动词做宾语 3 前置定语 非谓语动词 做定语

热门文章

  1. 【Python】安装模块失败? 一篇文章教你彻底掌握镜像安装
  2. 四,eNSP安装过程及美化
  3. 【超级无敌详细的韩顺平java笔记】从入门到精通---五种运算符
  4. 数据分析中的各种相关性检验方法
  5. mysql运行信息(SHOW STATUS)详情
  6. Linux下JDK1.7升级1.8版本
  7. 第九届蓝桥杯国赛总结
  8. win10+大恒相机驱动软件的问题
  9. WebShell是什么?如何抵御WebShell?
  10. 微型 CSDN 开发项目,手动创建导航组件的新增页面