docker安装各类软件以及创建私有仓库总结

十一看了十次方的视频,特地对docker的操作进行了总结
前提docker安装完毕,docker安装https://www.cnblogs.com/yufeng218/p/8370670.html

里面存放了Dockerfile文件和jdk压缩包以及我写的demo工程
链接:https://pan.baidu.com/s/1P93UeaYy4pTcxBUhAq0F_g
提取码:2b0m

docker操作基本命令
查看docker版本 docker --version
启动docker systemctl start docker
查看docker已经下载的镜像 docker images
查看docker上的容器 docker ps -a
查看docker上运行的容器 docker ps
重启docker上运行的容器 docker restart 容器id或者容器名称 (例:mysql)
停止运行的容器 docker stop 容器id或者容器名称 (例:mysql)
删除容器 docker rm 容器id或者容器名称 (例:mysql)
删除镜像 docker rmi 镜像id(注意:顺序需要先停止并删除容器)
查看日志 docker logs -f 容器id

1、docker 安装并运行mysql
docker search mysql 查询mysql列表

docker pull centos/mysql-57-centos7 拉取mysql镜像 (我用的是5.7,如果拉mysql会有拉mysql8.0版本,navicat连接时会报错2059 ,这个问题还是百度吧)

docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7 启动mysql容器
1、name=tensquare_mysql 取容器名字 2、-p3306:3306第一个是你想让它访问的端口号 第二个是默认端口号 3-e MYSQL_ROOT_PASSWORD=123456 初始化密码 4、centos/mysql-57-centos7 相应镜像名

最后可以docker ps -a 检查下有没有运行成功

2、docker 安装并运行redis
docker search redis 查询redis列表

docker pull redis 拉取redis镜像

docker run -di --name=tensquare_redis -p 6379:6379 redis 启动redis容器
1、name=tensquare_redis 取容器名字 2、-p 6379:6379 第一个是你想让它访问的端口号 第二个是默认端口号 3、redis 相应镜像名

3、docker 安装并运行MongoDB
docker search mongo 查询mongo列表

docker pull mongo 拉取mongo镜像

docker run -di --name=tensquare_mongo -p 27017:27017 mongo 启动mongo容器
1、name=tensquare_mongo 取容器名字 2、-p 27017:27017 第一个是你想让它访问的端口号 第二个是默认端口号 3、mongo 相应镜像名

4、docker 安装并运行 elasticsearch
docker search elasticsearch 查询elasticsearch列表

docker pull elasticsearch 拉取elasticsearch镜像

docker run -di --name=tensquare_elasticsearch -p 9200:9200 -p 9300:9300 elasticsearch 启动 elasticsearch容器

配置9200是通过HTTP连接的端口,9300是TCP连接的端口
9300是elasticsearch集群内的通信端口,9200是外部连接的端口

9200 可以通过访问 http://192.168.199.137:9200/ 192.168.199.137是我自己的虚拟机ip
获得类似的格式即可
{
“name” : “9WGmliF”,
“cluster_name” : “elasticsearch”,
“cluster_uuid” : “iExZGCZJRAaZC99BloHVWg”,
“version” : {
“number” : “5.6.12”,
“build_hash” : “cfe3d9f”,
“build_date” : “2018-09-10T20:12:43.732Z”,
“build_snapshot” : false,
“lucene_version” : “6.6.1”
},
“tagline” : “You Know, for Search”
}

用的我写的elasticsearch工程
但是项目调用9300却报错,这是因为elasticsearch从5版本以后默认不开启远程连接,需要修改配置文件

docker exec -it tensquare_elasticsearch /bin/bash 进入docker容器内部

cd config
在这里插入图片描述

由于容器内部不能用vi 来修改 elasticsearch.yml

但是可以把容器中的elasticsearch.yml 挂载到 虚拟机中,这样修改虚拟机中的配置就行了

exit 退出容器

docker cp tensquare_elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

将容器中elasticsearch.yml 复制到虚拟机的/usr/share/目录下(注:复制需要在tensquare_elasticsearch容器启动时操作)

停止和删除原来创建的容器
docker stop tensquare_elasticsearch
docker rm tensquare_elasticsearch

docker run -di --name=tensquare_elasticsearch -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch

1、-v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 前面是虚拟机的elasticsearch配置,后面是容器中的配置,后面挂载前面 用哪个就哪个写在前面

修改/usr/share/elasticsearch.yml 将 transport.host: 0.0.0.0 前的#去掉后保存文件退出。其作用是允许任何ip地址访问elasticsearch .
并添加上允许跨域配置
http.cors.enabled: true
http.cors.allow‐origin: “*”

docker restart tensquare_elasticsearch 重启容器

重启后发现重启启动失败了,这时什么原因呢?这与我们刚才修改的配置有关,因为elasticsearch在启动的时候会进行一些检查,比如最多打开的文件的个数以及虚拟内存区域数量等等,如果你放开了此配置,意味着需要打开更多的文件以及虚拟内存,所以我们还需要系统调优。

系统调优
修改/etc/security/limits.conf ,追加内容

  • soft nofile 65536
  • hard nofile 65536

nofile是单个进程允许打开的最大文件个数 soft nofile 是软限制 hard nofile是硬限制

修改/etc/sysctl.conf,追加内容
vm.max_map_count=655360
限制一个进程可以拥有的VMA(虚拟内存区域)的数量

最后reboot ,重启虚拟机即可
然后程序启动并运行成功

然后安装分词器ik
docker exec -it tensquare_elasticsearch /bin/bash
cd plugins
ls
发现没有ik,然后exit

xftp上传解压后的ik至虚拟机 (我上传到了root目录下)
docker cp ik tensquare_elasticsearch:/usr/share/elasticsearch/plugins 复制ik到容器中
docker restart tensquare_elasticsearch 重启容器

输入网址http://192.168.199.137:9200/_analyze?analyzer=ik_smart&pretty=true&text=我是程序员
出现

{
“tokens” : [
{
“token” : “我”,
“start_offset” : 0,
“end_offset” : 1,
“type” : “CN_CHAR”,
“position” : 0
},
{
“token” : “是”,
“start_offset” : 1,
“end_offset” : 2,
“type” : “CN_CHAR”,
“position” : 1
},
{
“token” : “程序员”,
“start_offset” : 2,
“end_offset” : 5,
“type” : “CN_WORD”,
“position” : 2
}
]
}
分词器安装成功

5、dockerfile 使用脚本创建镜像 (创建jdk1.8)
下载jdk-8u171-linux-x64.tar.gz并上传到服务器(虚拟机)中 的/usr/local/dockerjdk8目录
创建dockerfile文件

复制这段内容后打开百度网盘手机App,操作更方便哦
将dockerfile上传至/usr/local/dockerjdk8

docker build -t=‘jdk1.8’ . 执行命令构建镜像 (. 表示当前路径)

docker images
创建镜像成功
在这里插入图片描述
docker run -di --name=jdk1.8 192.168.199.137:5000/jdk1.8 创建运行容器

6、创建私有仓库
docker pull registry 拉取私有仓库

docker run -di --name=registry -p 5000:5000 registry 启动私有仓库容器

输入http://192.168.199.137:5000/v2/_catalog 检验

vi /etc/docker/daemon.json 修改daemon.json

添加以下内容,保存退出。
{“insecure-registries”:[“192.168.199.137:5000”]} 此步用于让 docker信任私有仓库地址

systemctl restart docker

重启docker 服务

镜像上传至私有仓库
docker tag jdk1.8 192.168.199.137:5000/jdk1.8 标记此镜像为私有仓库的镜像

docker restart registry 再次启动私服容器

在这里插入图片描述
docker push 192.168.199.137:5000/jdk1.8 上传标记的镜像
在这里插入图片描述
成功

7、创建DockerMaven插件

修改虚拟机的docker配置,让其可以远程访问
vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
1、 0.0.0.0 表示任意IP
在这里插入图片描述

刷新配置,重启服务

systemctl daemon-reload
systemctl restart docker
docker start registry

依然用的我写的elasticsearch工程
在需要打包的工程的pom文件中添加

<build>
        <finalName>app</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- docker的maven插件,官网: https://github.com/spotify/docker‐maven‐plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>192.168.199.137:5000/${project.artifactId}:${project.version}</imageName>
                    <baseImage>jdk1.8</baseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <dockerHost>http://192.168.199.137:2375</dockerHost>
                </configuration>
            </plugin>
        </plugins>
    </build>

以上配置会自动生成Dockerfile

在windows的命令提示符下,进入工程所在的目录,输入以下
命令,进行打包和上传镜像
mvn clean package docker:build -DpushImage

我遇到了端口连接超时,是因为防火墙端口没开(刚开始还以为都成了docker开放端口错了。。。。)

输入http://192.168.199.137:5000/v2/_catalog 检验

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值