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

停止docker
systemctl stop docker

// An highlighted block
docker update 容器名 --restart=always
#例如我想要Redis在docker启动时就启动
docker update Redis --restart=always
docker镜像的常用操作命令

搜索镜像
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最大值,使用的最大内存

本文介绍了Docker的基础知识,包括Docker主机、客户端、镜像和容器的概念。详细讲解了Docker在Linux环境中的安装过程,解决yum锁问题的方法,以及启动、停止Docker服务的命令。还涵盖了从Docker仓库下载镜像,使用docker run命令启动容器,并演示了如何配置端口映射以实现外部访问。此外,文章还涉及了镜像的搜索、删除以及容器的启动、停止、日志查看等常用操作。
1185

被折叠的 条评论
为什么被折叠?



