Docker
1、Docker三要素
镜像(相当于Java的类模板)
容器(相当于new出来的Java类实例对象)
仓库(存放镜像的地方)
2、在linux上安装Docker
1、确认你是CentOS7及以上版本:cat /etc/redhat-release
2、卸载旧版本: yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3、yum安装gcc相关:
① yum -y install gcc
② yum -y install gcc-c++
4、安装需要的软件包:yum install -y yum-utils
5、设置stable镜像仓库:yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
6、更新yum软件包索引:yum makecache fast
7、安装Docker CE:yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
8、启动Docker:systemctl start docker
9、测试Docker:① docker version
② docker run hello-world
3、镜像加速器配置
打开阿里云,点击控制台
在左边列表中选择 “容器镜像服务”
接下来点击镜像加速器
选择对应的操作系统,并把底下的代码copy到对应的操作系统中即可
4、卸载Docker
systemctl stop docker
yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
rm -rf /var/lib/docker
rm -rf /var/lib/containerd
5、Docker常用命令
帮助启动类命令
启动docker:systemctl start docker
停止docker:systemctl stop docker
重启docker:systemctl restart docker
查看docker状态:systemctl status docker
开机启动:systemctl enable docker
查看docker概要信息:docker info
查看docker总体帮助文档:docker --help
查看docker命令帮助文档:docker 具体命令 --help
镜像命令
列出本地主机上的镜像:docker images
查找镜像:docker search 镜像名字
下载镜像:docker pull 镜像名字[:tag]
查看 镜像/容器/数据卷 所占的空间:docker system df
删除镜像:docker rmi 镜像ID
容器命令
新建容器:docker run 容器名
列出当前所有正在运行的容器:docker ps
退出容器: ① exit 容器退出也停止
② ctrl+p+q 容器退出但不停止
启动已经停止运行的容器:docker start 容器ID或者容器名
重启容器:docker restart 容器ID或者容器名
停止容器:docker stop 容器ID或者容器名
强制停止容器:docker kill 容器ID或者容器名
删除已停止的容器:docker rm 容器ID
查看容器日志:docker logs 容器ID
查看容器内运行的进程:docker top 容器ID
查看容器内部细节:docker inspect 容器ID
从容器内拷贝文件到主机上:docker cp 容器ID:容器内路径 目的主机路径
6、自己怎么创建新的镜像
这里,我打算在一个已有的镜像上加 vim指令并形成一个新镜像。
开始时,centos镜像没有vim命令
接着,我们开始安装vim命令
安装完成之后,我们发现可以使用vim命令了
随后,退出容器,查看刚刚容器的ID
然后,输入命令使刚刚的容器变成镜像
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
查看本机上的镜像,发现创建了一个新的带有vim指令的镜像
7、Docker容器数据卷的使用
数据卷的含义:通过目录的挂载,使Docker容器中产生的数据可以同步到本地,让数据共享
如何使用数据卷?
docker run -it --privileged=true -v /主机目录:/容器内目录 镜像名
① 当本地数据改变时,容器内的数据也会改变
② 当容器内的数据改变时,本地数据也会改变
③ 当容器停止时,改变本地数据,再开启容器,容器内的数据依然会改变
8、Docker常规安装软件
总体步骤
① 搜索镜像
② 拉取镜像
③ 查看镜像
④ 启动镜像:服务端口映射
⑤ 停止容器
⑥ 移除容器
比如:
安装tomcat
①
拉取tomcat镜像
②
使用tomcat镜像创建容器实例
容器已启动
③
如果安装的是最新版本的tomcat,直接访问会访问不到
需要进入到容器内,可以发现 “webapps” 文件夹为空,我们需要把 “webapps” 文件夹删除,并把 “webapps.dist” 文件夹改名为 “webapps”
此时,我们就可以访问了
安装mysql
①
拉取mysql8.0.22镜像
②
创建容器
docker run -d -p 3306:3306 --privileged=true -v /usr/local/docker/mysql/log:/var/log/mysql -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mymysql mysql:8.0.22
宿主机对应挂载路径就会出现三个文件夹
③
为了解决乱码问题,在宿主机对应路径的 conf 文件夹下新建 my.cnf ,并输入以下代码
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
在docker容器内登录mysql并查看字符编码,成功改成UTF-8
show variables like 'character%'
安装redis
①
拉取镜像
docker pull redis:7.0.0
②
创建挂载目录,并拷贝 redis.conf 文件在挂载目录下(可以从redis官网上拉取。也可以拷贝以前linux服务器上的 redis.conf 文件,这里 redis 的版本要与 redis.conf 版本对应。具体命令如下:)
scp命令的实际应用
本地复制远程文件:(把远程的文件复制到本地)
scp root@192.168.30.100:/val/test/test.tar.gz /val/test/test.tar.gz
远程复制本地文件:(把本地的文件复制到远程主机上)
scp /val/test.tar.gz root@192.168.30.100:/val/test.tar.gz
本地复制远程目录:(把远程的目录复制到本地)
scp -r root@192.168.30.100:/val/test/ /val/test/
远程复制本地目录:(把本地的目录复制到远程主机上)
scp -r /val/ root@192.168.30.100:/val/
注:复制的是目录的话就要加-r参数
③
修改redis.conf文件,把69、70、71行注释掉(允许redis外地连接)
把112行设置为no
把310行设置为no(否则,会和docker run中-d参数冲突,导致容器一直启动失败)
④
启动redis容器
docker run -p 6379:6379 --privileged=true -v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/redis/data:/data -d --name myredis redis:7.0.0 redis-server /etc/redis/redis.conf
安装rabbitmq
①
docker run -d -p 15672:15672 -p 5672:5672 \
-e RABBITMQ_DEFAULT_VHOST=rabbitmp_test \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin \
--name mq \
rabbitmq:management
参数说明:
-d:表示在后台运行容器;
-p:将容器的端口 5672(应用访问端口)和 15672 (控制台Web端口号)映射到主机中;
-e:指定环境变量:
RABBITMQ_DEFAULT_VHOST:默认虚拟机名;
RABBITMQ_DEFAULT_USER:默认的用户名;
RABBITMQ_DEFAULT_PASS:默认的用户密码;
–name rabbitmq:设置容器名称;
rabbitmq:容器使用的镜像名称;
②
//进入容器内部 我这里使用容器名字进入 也可以使用容器id
docker exec -it mq /bin/bash
----------------------------------
//开启web后台管理界面
rabbitmq-plugins enable rabbitmq_management
③
输入网址,即可访问
默认的用户名和密码都是guest,但由于我们启动的时候设置了默认的用户名和密码,所以我们可以使用设置的用户名和密码登录。
安装elasticsearch
①
docker pull elasticsearch:7.4.2
②
mkdir /usr/local/docker/elasticsearch/data
mkdir /usr/local/docker/elasticsearch/config
echo "http.host:0.0.0.0">>/usr/local/docker/elasticsearch/config/elasticsearch.yml
③
docker run --name myelasticserch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 -v /usr/local/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/local/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /usr/local/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.4.2
如果报错则需要把权限改一下
chmod -R 777 /usr/local/docker/elasticsearch/
④
安装可视化界面
docker pull kibana:7.4.2
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.219.146:9200 -p 5601:5601 -d kibana:7.4.2
⑤
安装ik分词器
进入已经启动成功的elasticsearch容器。
docker exec -it myelasticsearch /bin/bash
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
下载完成之后,退出去,重新启动elasticsearch容器
docker restart myelasticsearch
⑥
验证elasticsearch是否安装成功:访问http://ip:9200,如果出现以下东西,说明安装成功
验证kibana是否安装成功:访问http://ip:5601,出现以下界面说明安装成功