Docker的学习
docker的核心概念
docker主机:机器上安装了docker程序
docker客户端连接docker主机进行操作
docker支持将我们安装配置好的软件打包成一个镜像,镜像保存在docker仓库的
docker仓库保存好打包好的各种镜像
docker镜像:打包好的镜像
docker容器:镜像启动后的一个实例就是一个实例
从dockerhub下载镜像,使用docker命令安装配置镜像成容器
使用docker的步骤:
1)安装docker
2) 去docker仓库找到这个软件对应的镜像
3)使用docker运行这个镜像,这个镜像就会生成一个docker容器
4) 对容器的启动停止就是对软件的启动和停止
安装docker–linux环境准备
1)安装vmware
2)导入虚拟机
3)开启虚拟机
使用smarTY来连接服务器
ctr+H 打开浏览器历史记录
service network restart #重启虚拟机的网络
ip addr #查看linux的ip地址
ifconfig #查看linux的ip地址
省略。。。。。。。。。。。。。。。。
linux上docker安装,启动,停止
1 先查看centos内核版本,版本要在3.10以上
uname -r #1查看centos内核版本
2 安装docker
yum install docker #安装docker
但是在我安装的过程中出现一个问题:
Another app is currently holding the yum lock; waiting for it to exit...
解决办法:
因为已经有一个yum进程在运行了,使用kill干掉它:
# kill -s 9 25960
# ps aux|grep yum
root 6744 0.0 0.0 103260 900 pts/1 S+ 14:59 0:00 grep yum
root 25960 0.0 0.0 0 0 ? Z Sep19 0:01 [yumBackend.py] <defunct>
如果没有成功的话可以强制关掉yum进程
rm -f /var/run/yum.pid
解决后就可以再次使用yum install docker进行安装了
然后确认安装
安装完成以后启动docker
systemctl start docker #启动docker
查看docker的版本好看是否启动或者有docker
docker -v
虚拟机一开机就启动docker
systemctl enable docker
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210405165301155.png?x-oss-process=image/watermark,type_ZmFuZ3
停止docker
systemctl stop docker
// An highlighted block
docker update 容器名 --restart=always
#例如我想要Redis在docker启动时就启动
docker update Redis --restart=always
docker镜像的常用操作命令
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210405165605900.png?x-oss-process=image/watermark,type_
搜索镜像
docker search mysql #搜素与mysql有关的镜像
然后从docker hub仓库拉取镜像使用命令
docker pull 镜像名:tags
如果是docker pull 镜像名,默认是下载lastest的
镜像名可以是搜索出来的全名称也可以是如下图的io/后面那部分名称
tags:可以如docker hub上百度一下有啥版本的
此处我下载的是8.0版本的mysql
查看有多少镜像,使用命令
docker images #查看有多少镜像
删除指定镜像
docker rmi image_id(镜像id)
docker容器的常用操作命令
得到镜像(类似qq.exe)—》运行镜像—》产生一个容器(运行的QQ)
1 搜索镜像
docker search tomcat
2 安装镜像
下载慢的话可以使用阿里云的镜像加速器
3 启动容器
docker run --name container_name -d image_name:tags #启动镜像
docker run --name container_name -d image_name #启动镜像
--name 给容器起名字
-d 后台运行
image_name 镜像的名称
docker run --name mytomcat_jdk8 -d tomcat:jdk8 #启动容器
4 使用docker ps 命令查看有哪些容器在运行
docker ps
因为访问直接使用虚拟机ip和tomcat的端口是访问不到docker里面的tomcat容器,所以还需要进行一些配置
5 停掉容器mytomcat_jdk8
停止容器:
docker stop 容器id或者容器名称 #停止容器
然后可以使用docker ps 进行查看
docker ps -a #查看所有的容器
启动容器
docker start 容器id #启动容器
删除容器
docker rm 容器id #删除容器
注意删除容器使用rm,删除镜像使用rmi
现在做一个可以访问的tomcat容器,要配置映射关系
比如将虚拟机的8888端口映射到docker的tomcat的80端口
就需要在初始化一个容器的时候添加端口映射使用-p这个参数配置
启动一个配置端口映射的tomcat容器
[root@localhost ~]# docker run --name mytomcat_jdk8 -d -p 8888:8080 tomcat:jdk8
-d:后台运行
-p 虚拟机端口:配置的容器端口
tomcat:jdk8 镜像:tags嘛
然后访问ip:http://192.168.64.128:8888/
就可以访问到了,但前提是你得关闭防火墙或者开放8888端口,不然就是
查看防火墙的命令
service firewalld status
我的防火墙还是开着的
所以现在要开放8888端口
firewall-cmd --add-port=8888/tcp --permanent
查看开放的端口列表
firewall-cmd --list-port
[root@localhost ~]# firewall-cmd --list-port
如果你不选择开放端口这种方式可以使用关闭防火墙的方式
service firewalld stop #关闭防火墙
查看容器的日志
docker logs 容器id
其他的一些命令
docker ps -l 查看最后一次运行的容器
docker ps -f status=exited 查看停止的容器
docker run -it --name=mycentos centos:8 /bin/bash
创建交互式容器mycentos ,/bin/bash是linux中的命令解析器,会进入到容器里面命令行
exit 退出容器(注意是在容器内部执行的容器)或者按ctrl+p+q
docker kill 容器名称|容器id 强制停止正在运行的容器
docker stop 容器id 停止正在运行的容器
docker stop `docker ps -a -q` 停止所有在运行的容器
登录到已启动的容器:docker exec -it 容器名 /bin/bash
exit 只退出不停止容器
安装mysql redis elasticsearch
安装mysql
之前已经安装过mysql,所以直接mysql的容器化
如果出现异常可以将已经产生的容器数据删除掉
使用命令`docker rm 容器id
这样子的容器化的是不行的,没有端口映射`,所以使用-e参数进行端口映射配置
docker run -p 3306:3360 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
-e:设置参数
-v 把主机的/my/custom文件夹挂载到mysqldocker容器的/etc/mysql/conf.d文件夹里面
启动mysql容器化的时候要指定MYSQL_ROOT_PASSORD,MYSQL_ALLOW_EMPTY_PASSWORD,MYSQL_RANDOM_ROOT_PASSWORD三个参数中的一个,不然报错
启动带有端口映射的mysql容器
docker run -p 3306:3306 --name mysql8-1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
然后使用mysql客户端管理工具进行连接了
想要知道其他的命令可以查看docker的官网啥的
其他的命令操作
docker run --name mysql8-2 -v /conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=mypassword -d mysql:8.0
把主机下自创的/conf/mysql文件夹挂载到mysql的docker容器的/etc/mysql/conf.d文件夹里面,改mysql的配置文件就只需要把mysql配置文件放在我们自创的文件下就好了,它就会合并与原来的mysql配置文件
指定mysql的一些其他参数
docker run --name mysql8-1 -e MYSQL_ROOT_PASSWORD=mypassword -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
docker安装redis
搜索redis镜像
拉取镜像
启动redis容器
docker run -itd --name redis3.0.5 -p 6379:6379 redis:3.0.5
参数说明:-i :以交互模式运行容器通常与-t同时使用
-t 为容器重新分配一个伪终端,通常与i同时使用
-d 后台运行
-e 设置环境变量
-dns 8.8.8.8 指定容器使用呃dns服务,默认与宿主主机一样
测试
windows系统下打开redis目录–cmd–输入命令
安装elasticsearch
$ docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d elasticsearch:6.8.12
JAVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量。
-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:java heap最大值,使用的最大内存