微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

docker的实战应用

​Linux的docker操作
腾讯视频地址:https://v.qq.com/x/page/e08955j8y7r.html
B站地址:https://www.bilibili.com/video/av58209938/
word文档地址:https://www.lanzous.com/i4vn9tg

安装docker
(1)yum 包更新到最新
sudo yum update
(2)安装需要的软件包,yum-util 提供yum-config-manager 功能,另外两个devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(3)设置yum 源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)安装docker
sudo yum install docker-ce
(5)安装后查看docker 版本
docker –v
(6)设置ustc 的镜像,编辑该文件(如果没有文件假先创建):
vi /etc/docker/daemon.json
(7)在该文件中输入如下内容::
{
“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”]
}
(8)启动docker:
systemctl start docker
安装registry私有仓库
(1)拉取私有仓库镜像
docker pull registry
(2)修改daemon.json,此步用于让docker 信任私有仓库地址
vi /etc/docker/daemon.json
修改添加
“insecure-registries”:[“机器ip:5000”]
修改成功后显示
{
“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”],
“insecure-registries”:[“机器ip:5000”]
}
(3)重启docker 服务
systemctl restart docker
(4)启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
(5)打开浏览器输入地址http://机器ip:5000/v2/_catalog 看到
{“repositories”:[]}表示私有仓库搭建成功并且内容为空
或者输入命令查看私仓容器名:
curl -XGET http://192.168.100.103:5000/v2/_catalog
或者输入命令查看私仓容器标签
curl -XGET http://192.168.100.103:5000/v2/[镜像名]/tags/list
(6)标记此镜像为私有仓库的镜像
docker tag Nginx:latest 119.23.181.9:5000/Nginx-go:bak
(7)重启私服容器
docker start registry
(8)上传标记的镜像
docker push 119.23.181.9:5000/Nginx-go:bak
(9)拉取下载的镜像
docker pull 119.23.181.9:5000/Nginx-go:bak
(10)删除私仓的镜像
docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/镜像名
(11)执行垃圾回收操作
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml

安装gogs的git服务
(1)下载镜像
docker pull gogs/gogs
(2)创建容器
docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data
gogs/gogs
(3)在地址栏输入http://ip:3000 会进入首次运行安装程序页面
(4)账号:[email protected] 密码:dengxiaocai888888
安装svn服务
garethflowers/svn-server版本,不支持http协议,需要配置才支持(推荐)
(1)下载Svn server
docker pull garethflowers/svn-server
(2)根据镜像生成容器
docker run --name svn-server-gf --detach --volume /usr/docker/svn/data:/var/opt/svn --publish 3690:3690 garethflowers/svn-server
(3)创建新项目仓库
docker exec -it svn-server-gf svnadmin create repo1
(4)SVN客户端测试连接,开放3690访问
svn://119.23.181.9:3690/repo1
(5)修改项目仓库的配置,svnserve.conf
cd /usr/docker/svn/data/repo1/conf
vi svnserve.conf
[general]
anon-access = none # 匿名用户不可读写,也可设置为只读 read
auth-access = write # 授权用户可写
password-db = passwd # 密码文件路径,相对于当前目录
authz-db = authz # 访问控制文件
realm = /var/opt/svn/repo1 # 认证命名空间,会在认证提示界面显示,并作为凭证缓存的关键字,可以写仓库名称
(6)配置账号与密码修改 passwd,格式为“账号 = 密码
vi passwd
[users]

harry = harryssecret

sally = sallyssecret

root = 123456
(7)配置权限,修改 authz
vi authz
[groups]
owner = root, user1
[/] # / 表示所有仓库
root = rw # 用户 eric 在所有仓库拥有读写权限
[repo1:/] # 表示以下用户在仓库 repo1 的所有目录有相应权限
user1 = rw
@owner = rw # 表示 owner 组下的用户拥有读写权限
说明,r 表示读,w 表示写。没有设置的用户认为无权限。
注意:更改svnserve.conf,authz和passwd文件时不需要重启。
docker exec -it svns /bin/sh #进入容器的命令
安装MysqL
(1)下载镜像
docker pull centos/MysqL-57-centos7
(2)创建容器
docker run -di --name=MysqL_love -p 3306:3306 -e MysqL_ROOT_PASSWORD=123456 centos/MysqL-57-centos7
p 代表端口映射,格式为宿主机映射端口:容器运行端口
-e 代表添加环境变量MysqL_ROOT_PASSWORD 是root 用户的登陆密码
(3)远程登录MysqL
连接宿主机的IP ,指定端口为33306
部署tomcat项目
方式一:用官方的tomcat镜像,镜像比较大463MB
(1)下载镜像
docker pull tomcat:8.5.38-jre8
(2)制化启动容器【定制化】,配置共享目录:Perferences→File Sharing,增加对应的映射目录(提前创建好文件夹),即可
docker run -d --name tomcat8 -p 8081:8080 -v /usr/local/dockerDir/tomcat8080/webapps:/usr/local/tomcat/webapps tomcat:8.5.38-jre8

方式一:用轻量级jdk8镜像构建tomcat镜像,镜像比较小
(1)下载小体积jdk8镜像
创建jdk8的Dockerfile文件
FROM frolvlad/alpine-java:jdk8-slim AS builder
RUN echo ‘public class Main { public static void main(String[] args) { System.out.println(“Hello World”); } }’ > Main.java
RUN javac Main.java
FROM frolvlad/alpine-java:jdk8-slim
copY --from=builder /Main.class /
CMD [“java”, “Main”]
进入Dockerfile文件的目录下,创建容器:
$ docker build -t my-app .
$ docker run --rm my-app
Hello World
查看所有镜像,并删除没有用的镜像,留下frolvlad/alpine-java:jdk8-slim镜像:
docker images
docker rmi 666b9799aa2a
(2)准备apache-tomcat-8.5.28.tar.gz,上传服务器,解压,删除压缩包,重命名
tar -xzvf apache-tomcat-8.5.28.tar.gz
rm -f apache-tomcat-8.5.28.tar.gz
mv apache-tomcat-8.5.28/ tomcat/
(3)新建Dockerfile文件(记得与tomcat8文件夹在同一个目录下)
FROM jdk8:slim
#把当前目录下的jdk文件添加到镜像
RUN mkdir /usr/local/tomcat
ADD tomcat /usr/local/tomcat
#添加环境变量
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH PATH:PATH:PATH:CATALINA_HOME/bin
ENV LANG en_AG.utf8
#暴露8080端口
EXPOSE 8080
#启动时运行tomcat
CMD ["/usr/local/tomcat/bin/catalina.sh",“run”]
(4)构建镜像
docker build -t tomcat:8.5.28-jdk8 .
(5)定制化启动容器【定制化】,配置共享目录:Perferences→File Sharing,增加对应的映射目录(提前创建好文件夹),即可
docker run -d --name tomcat8-slim -p 8082:8080 -v /usr/local/dockerDir/tomcat8082/webapps:/usr/local/tomcat/webapps tomcat8:jdk8-slim

反向代理nginx
(1)下载镜像
docker pull nginx
(2)创建Nginx容器
docker run -di --name=nginx -p 80:80 nginx
(3)测试Nginx
浏览器地址栏输入: Linux系统ip
(4)从容器拷贝配置文件到宿主机
docker cp nginx:/etc/nginx/nginx.conf nginx.conf
(5)配置文件增加反向代理内容
端口反向代理:
server {
listen 80;
server_name search.kang.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host;
location / {
proxy_pass http://127.0.0.1:9104;
proxy_connect_timeout 1200;
proxy_read_timeout 1200;
#root html;
#index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
静态资源反向代理:
server {
listen 80;
server_name item.shop.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host;
location / {
root C:\1;
proxy_connect_timeout 1200;
proxy_read_timeout 1200;
#root html;
#index index.html index.htm;
# 如果当前请求的文件路径不存在,
# 则跳转到tomcat服务器9104
if (!-e $request_filename){
proxy_pass http://127.0.0.1:9104;
}
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
(6)将修改后的配置文件拷贝到容器
docker cp Nginx.conf Nginx:/etc/Nginx/Nginx.conf
(7)重新启动容器
docker restart Nginx
安装Redis
(1)下载镜像
docker pull redis
(2)创建Redis容器
docker run -di --name=redis -p 6379:6379 redis
(3)在你的本地电脑命令提示符下,用window版本redis测试(RedisDesktopManager)
redis-cli -h docker所在Linux系统ip
部署springboot项目
(1)下载小体积jdk8镜像
创建jdk8的Dockerfile文件
FROM frolvlad/alpine-java:jdk8-slim AS builder
RUN echo ‘public class Main { public static void main(String[] args) { System.out.println(“Hello World”); } }’ > Main.java
RUN javac Main.java
FROM frolvlad/alpine-java:jdk8-slim
copY --from=builder /Main.class /
CMD [“java”, “Main”]
进入Dockerfile文件的目录下,创建容器:
$ docker build -t my-app .
$ docker run --rm my-app
Hello World
查看所有镜像,并删除没有用的镜像,留下frolvlad/alpine-java:jdk8-slim镜像:
docker images
docker rmi 666b9799aa2a

部署方式一:(通过Maven 插件自动部署。)
(1)修改宿主机的docker 配置,让其可以远程访问
vi /lib/systemd/system/docker.service
输入/Exe,往后搜索ExecStart
其中ExecStart=后添加配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
修改后,这一行完整的配置为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
(2)刷新配置,重启服务:
systemctl daemon-reload
systemctl restart docker
docker start registry
(3)3)在tensquare_eureka 工程pom.xml 增加配置

app


org.springframework.boot
spring-boot-maven-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>
                <!--  119.23.181.9:5000/ 开头是先打包到docker私有仓库然后再构建镜像-->
                <!-- 如果不写私有仓库地址 119.23.181.9:5000/ ,等会的编译的[WARNING] Failed to push , retrying in报错不影响构建镜像-->
                 <imageName>119.23.181.9:5000/${project.artifactId}:${project.version}</imageName>
                 <baseImage>jdk8:slim</baseImage>
                <!-- ENTRYPOINT  ["java","-jar","/app.jar"] -->
                <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>
                <!--  DockerMaven插件通过Docker开发的2375端来上传项目,并构建镜像  -->
                <dockerHost>http://119.23.181.9:2375</dockerHost>
            </configuration>
        </plugin>
    </plugins>
(4)在windows 的命令提示符下,进入tensquare_eureka 工程所在的目录,输入以下命令,进行打包和上传镜像(如果你没有安装docker私有仓库,报错[WARNING] Failed to push , retrying in提示不影响镜像的构建,docker私有仓库的安装参考上面)。 mvn clean package docker:build -DushImage (5)查看并启动容器: docker images docker run -di --name springbootconcen -p 9000:9000 119.23.181.9:5000/springboot-concentration:1.0-SNAPSHOT docker镜像本地打包备份与恢复 (1)容器列表 docker ps –a (2)容器快照 docker commit -p 2450d574252b springboot-bak:backup (3)使用docker images查看本机所有的镜像文件 docker images (4)将镜像保存为本地文件 docker save fc41cf2cc5a9 > /root/jdk8-slim.tar (5)使用load方法加载刚才上传的tar文件 docker load < /root/jre-slim.tar (6)修改为原来的镜像名称标签名称 docker tag fc41cf2cc5a9 jdk8:slim

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐