Docker的安装,使用

1.安装Docker

/**
 * 1.安装yum-util、device-mapper-persistent-data、lvm2
 * 2.yum-util提供yum-config-manager功能; device-mapper-persistent-data、lvm2是device mapper驱动依赖
 * 3.设置yum源
 */
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo
/**
 * 1.查看可用版本
 * 2.选择版本安装
 * 3.启动docker, 自启动
 */
# yum list docker-ce --showduplicates | sort -r
> docker-ce.x86_64            3:20.10.9-3.el7                     docker-ce-stable
> docker-ce.x86_64            3:20.10.8-3.el7                     docker-ce-stable
> docker-ce.x86_64            3:20.10.7-3.el7                     docker-ce-stable
# yum install docker-ce-20.10.9-3.el7 -y
# systemctl start docker
# systemctl enable docker
# ps -ef | grep docker
> root      1724     1  4 09:29 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

2.通过插件(idea),实现自动部署

2.1.开启docker的远程访问

/**
 * 1.开启docker的远程访问, 编辑/usr/lib/systemd/system/docker.service
 * 2.将 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
 *   替换为 ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
 * 3.重新加载配置文件
 * 4.重启docker
 * 5.查看进程, 进程中带有 tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 则表示成功
 */
# vi /usr/lib/systemd/system/docker.service
# systemctl daemon-reload
# systemctl restart docker
# ps -ef | grep docker
> root      1910     1  0 01:33 ?        00:00:00 /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

2.2.配置Dockerfile文件

# 基础镜像, 使用centos操作系统
FROM centos:7
# 发布者
MAINTAINER zhanghf <f5psyche@163.com>

# 在docker容器构建时创建文件夹
RUN mkdir /usr/local/java

# 将宿主机的文件拷贝到容器中的具体目录
# ADD, 拷贝后自动解压; COPY, 只做拷贝
# 宿主机上的文件路径是Dockerfile的相对路径
# 如果按目前的配置, 则需要在Dockerfile文件所在路径下拥有jdk-8u301-linux-x64.tar.gz压缩包
ADD jdk-8u301-linux-x64.tar.gz /usr/local/java

# 在容器中创建/usr/local/java/jdk1.8.0_301与/usr/local/java/jdk的软连接
RUN ln -s /usr/local/java/jdk1.8.0_301 /usr/local/java/jdk

# 配置jdk环境
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH

# 系统编码
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8

#声明一个挂载点, 容器内此路径会对应宿主机的某个文件夹
VOLUME /tmp

#应用构建成功后的jar文件被复制到镜像内, 名字也改成了dockerdemo.jar
ADD target/dockerdemo-1.0-SNAPSHOT.jar dockerdemo.jar

#启动容器时的进程
ENTRYPOINT ["java","-jar","/dockerdemo.jar"]

#暴露8080端口
EXPOSE 8080

2.3.新建docker远程连接
在这里插入图片描述
2.4.新建运行配置(edit configuration)
请添加图片描述
2.5.执行运行配置,服务器上查看进程(第一次执行会比较慢)

/**
 * 查看进程, 看到如下内容, 表示部署成功了
 */
# ps -ef | grep docker
> root      2359  1910  0 01:54 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 18080 -container-ip 172.17.0.2 -container-port 8080
> root      2364  1910  0 01:54 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 18080 -container-ip 172.17.0.2 -container-port 8080
> root      2397  2378 22 01:54 pts/0    00:00:16 java -jar /dockerdemo.jar

3.docker私有仓库搭建,上传/下载/删除镜像

/**
 * 1.拉取仓库镜像
 * 2.创建私有仓库容器, https://www.runoob.com/docker/docker-run-command.html
 * 	-d: 后台运行容器, 并返回容器ID
 * 	-p: 指定端口映射, 格式为: 主机(宿主)端口:容器端口
 *  -e: 设置环境变量(REGISTRY_STORAGE_DELETE_ENABLED=true, 允许删除镜像)
 * 	--name: 为容器指定一个名称
 * 3.使用curl命令访问私有仓库地址
 * 4.配置私有仓库可视化, 注意: --link 的内容是私有仓库的容器名称; 34.80.201.81 替换成自己服务器的ip
 * 5.通过浏览器访问 34.80.201.81:28080 可以私有仓库里的镜像信息
 */
# docker pull registry
# docker run -d -v /edc/images/registry:/var/lib/registry -p 5000:5000 --restart=always --name xdp-registry -e REGISTRY_STORAGE_DELETE_ENABLED=true registry
# curl 127.0.0.1:5000/v2/_catalog
> {"repositories":[]}
# docker pull hyper/docker-registry-web
# docker run -d -p 28080:8080 --name registry-web --link xdp-registry -e REGISTRY_URL=http://34.80.201.81:5000/v2 hyper/docker-registry-web
/**
 * 将镜像上传到私有仓库
 * 1.因为docker registry交互默认使用的是https, 但是私有仓库是http, 所以我们需要在上传端进行启动配置
 * 	编辑 /etc/docker/daemon.json , 添加 {"insecure-registries": ["34.80.201.81:5000"]}, 重启docker
 * 1.通过docker images 查看镜像名称
 * 2.标记本地镜像, 将其归入某一仓库, docker tag 镜像名称 34.80.201.81:5000/name[:TAG]  默认latest
 * 3.将本地镜像上传到镜像仓库
 *
 */
# vi /etc/docker/daemon.json
# systemctl restart docker
# docker images
> REPOSITORY                  TAG       IMAGE ID       CREATED          SIZE
> dockerdemo                  latest    ea025b655710   19 minutes ago   630MB
> centos                      7         eeb6ee3f44bd   4 weeks ago      204MB
# docker tag dockerdemo 34.80.201.81:5000/zhanghf/dockerdemo
# docker push 34.80.201.81:5000/zhanghf/dockerdemo
/**
 * 1.从私有仓库拉取镜像
 * 2.创建容器并启动服务(当服务需要在不同环境下连接不同数据的时候, 可以通过环境变量和yml的方式进行处理)
 * 	有需要浏览 https://blog.csdn.net/weixin_45456679/article/details/120864778
 * 3.连接容器
 */
# docker pull 34.80.201.81:5000/zhanghf/dockerdemo
# docker images
> REPOSITORY                             TAG       IMAGE ID       CREATED          SIZE
> 34.80.201.81:5000/zhanghf/dockerdemo   latest    ea025b655710   52 minutes ago   630MB
# docker run -d -p 18080:8080 --name dockerdemo 34.80.201.81:5000/zhanghf/dockerdemo
# docker exec -it b8c74bbfc2c9 /bin/bash
/**
 * 查看私有仓库的镜像内容
 * 1.查看私有仓库镜像名
 * 2.查看具体镜像有哪些版本
 * 3.查看具体镜像某个版本的信息
 */
# curl 34.80.201.81:5000/v2/_catalog
> {"repositories":["zhanghf/dockerdemo"]}
# curl http://34.80.201.81:5000/v2/zhanghf/dockerdemo/tags/list
> {"name":"zhanghf/dockerdemo","tags":["latest"]}
# curl http://34.80.201.81:5000/v2/zhanghf/dockerdemo/manifests/latest
/**
 * 删除私库的镜像
 * 1.查看镜像 Docker-Content-Digest
 * 	curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET  <仓库地址>/v2/<镜像名>/manifests/<tag>
 * 2.删除镜像
 * 	curl -I -X DELETE "<仓库地址>/v2/<镜像名>/manifests/<镜像Docker-Content-Digest>"
 * 3.如果删除的时候报错, 是因为registry不允许删除镜像。
 * 	{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}
 *  只需要启动registry的时候增加环境变量 REGISTRY_STORAGE_DELETE_ENABLED=true
 */
# curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET 34.80.201.81:5000/v2/zhanghf/dockerdemo/manifests/1.0
> HTTP/1.1 200 OK
> Content-Length: 1368
> Content-Type: application/vnd.docker.distribution.manifest.v2+json
> Docker-Content-Digest: sha256:f51929e67efbacea4bebf0b11cd56af6f00a1d8c00d4606dbd3b3c09b5c454bf
> Docker-Distribution-Api-Version: registry/2.0
> Etag: "sha256:f51929e67efbacea4bebf0b11cd56af6f00a1d8c00d4606dbd3b3c09b5c454bf"
> X-Content-Type-Options: nosniff
> Date: Wed, 20 Oct 2021 03:35:45 GMT
# curl -I -X DELETE "34.80.201.81:5000/v2/zhanghf/dockerdemo/manifests/sha256:f51929e67efbacea4bebf0b11cd56af6f00a1d8c00d4606dbd3b3c09b5c454bf"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值