飞道的博客

Docker基础入门学习笔记

339人阅读  评论(0)

是什么


解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。

虚拟机技术


缺点:

  • 资源占用多
  • 冗余步骤多
  • 启动慢

容器虚拟化技术


开发自运维(DevOps)

好处:
  • 更快速的应用交付和部署。
  • 更便捷的升级和扩缩容。
  • 更简单的系统运维。
  • 更高效的计算资源利用。

Docker

架构图:

Docker的基本组成

  • 镜像(image)

镜像如同java中的类。

镜像是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。

  • 容器(container)

容器如同java中的对象。

Docker利用容器独立运行的一个或一组应用。容器是用镜像创建的运行实例
它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

  • 仓库(repository)

仓库是中存放能像文件的场所。

仓库( Repository)和仓库注册服务器( Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库( Public)和私有仓库( Private)两种形式。

总结

Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生成 Docker容器。 Image文件可以看作是容器的模板。Docker根据 Image文件生成容器的实例。同一个 Image文件,可以生成多个同时运行的容器实例。

  • Image文件生成的容器实例,本身也是一个文件,称为镜像文件。
  • 一个容器运行一种服务,当我们需要的时候,就可以通过 docke客户端创建一个对应的运行实例,也就是我们的容器。
  • 至于仓库,就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库中拉下来就可以了。

Docker的安装

centos版本必须是6.5以上,学习时使用的是centos7.7。

centos版docker官方的安装步骤:https://docs.docker.com/engine/install/centos/

具体操作步骤:
yum install -y yum-utils 如果不是root用户,就在前面加上sudo。
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo docker仓库是国外的,所以这里我们用阿里云的,速度快。
yum makecache fast 然后更新一下yum软件包索引,下载速度会快一些。
sudo yum install docker-ce docker-ce-cli containerd.io 这是下载最新版,下载其他版本的点击上面的链接查看步骤。
cd /etc/docker
vim daemon.json 在/etc/docker下新建daemon.json文件。

{
  "registry-mirrors": ["xxxx"]	
}

xxxx为阿里云的镜像加速网站,登录阿里云免费获得。
https://account.aliyun.com/login/login.htm?oauth_callback=https%3A%2F%2Fcr.console.aliyun.com%2Fcn-hangzhou%2Finstances%2Fsource


然后保存退出
systemctl daemon-reload
systemctl restart docker 启动docker。
docker version 查看docker版本。

docker run hello-world 运行hello-world。

docker的卸载

yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
rm -rf /etc/docker

docker命令

1. 帮助命令
  • docker version 查看docker版本
  • docker info 查看docker的详细详细
  • docker --help 查看docker的命令
2. 镜像命令
  • docker images [OPTIONS] 列出本地主机上的镜像。
    OPTIONS:
    -a:列出本地所有镜像(含中间映像层)
    -q:只显示镜像ID
    –digests:显示镜像的摘要信息
    –no-trunc:显示完整的镜像信息
REPOSITORY 镜像的仓库源
TAG 镜像的标签(latest代表最新)
IMAGE ID 镜像的ID
CREATED 镜像创建的时间
SIZE 镜像的大小
  • docker tag 镜像名:当前版本号 镜像名:新的版本号 制作新的镜像版本,id相同。

  • docker search 镜像名字 列出从dockerhub上查到的镜像
    OPTIONS:
    –no-trunc:显示完整的镜像描述
    –filter=stars=xx:列出收藏数不小于指定值的镜像
    –filter=is-automated=true:只列出automated build类型的镜像

如果出现这个错误:

此出自己电脑的DNS。

然后vim /etc/resolv.conf写入DNS。

nameserver x.x.x.x
nameserver x.x.x.x

最后重启下systemctl restart network

  • docker pull 镜像名字[:TAG] 下载镜像。([:TAG]为选择下载的版本号,不写默认最新(:latest))

  • docker rmi 镜像名 删除镜像。
    删除单个:docker rmi -f 镜像名[:TAG](或镜像ID)(-f为强制删除)
    删除多个:docker rmi -f 镜像名1[:TAG] 镜像名2[:TAG]
    删除全部:docker rmi -f $(docker images -qa)

3. 容器命令

有镜像才能创建容器! 这里docker pull centos下载一个centos用于练习命令。

  • docker run [OPTIONS] image [COMMAND] [ARG...] 新建并启动容器
    run的执行步骤:
    先在本地找运行的镜像,如果没有,就下载镜像再运行。

    例:docker run -it 470671670cac(镜像ID,也可写镜像名) //新建并运行一个centos容器,一运行就进入新建的centos中。

    OPTIONS:
    –name=“容器新名字”:为容器指定一个名称
    -d:后台运行容器,并返回容器ID,即启动守护式容器
    -i:以交互模式运行容器,通常与-t同时使用
    -t:为容器重新分配一个伪输入终端,通常与-i同时使用
    -v:容器数据卷
    -P:随机端口映射
    -p:指定端口映射,有4种:
    ip:hostPort:containerPort
    ip::containerPort
    hostPort:containerPort
    containerPort

  • docker ps [OPTIONS] 列出当前所有正在运行的容器
    OPTIONS:
    -a:列出当前所有正在运行的容器+历史上运行过
    -l:显示最近创建的容器
    -n xx:显示最近n个创建的容器
    -q:静默模式,只显示容器编号
    –no-trunc:不截断输出

  • exit 容器停止退出(或ctrl+P+Q 容器不停止退出)

  • docker start 容器ID(或容器名) 启动容器

  • docker restart 容器ID(或容器名) 重启容器

  • docker stop 容器ID(或容器名) 停止容器

  • docker kill 容器ID(或容器名) 强制停止容器

  • docker rm 容器ID(或容器名) 删除已停止的容器
    删除所有已停止的容器:docker container prune
    删除全部容器:docker rm -f $(docker ps -qa)

重要

  • docker run -it 容器名 启动交互式容器(前台)

  • docker run -d 容器名 启动守护式容器(后台)

  • docker logs [OPTIONS] 容器ID 查看容器日志
    OPTIONS:
    -t:显示每条日志的时间
    -f:不停的追加
    –tail xx:只列出末尾n条的日志

  • docker top 容器ID 查看容器内运行的进程

  • docker inspect 容器ID 查看容器内部细节

  • 进入正在运行的容器并以命令行交互
    docker exec -it 容器ID bashShell 直接让容器运行命令,不进入容器
    docker exec -it 容器ID /bin/bash 可进入容器
    docker attach 容器ID 重新进入容器

  • docker cp 容器ID:容器内路径 目的主机路径 将容器内的文件拷贝到主机上

Docker的镜像

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容包括代码、运行时、库、环境变量和配置文件。

1. UnionFS(联合文件系统)


特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

2. Docker镜像加载原理

镜像的特点:Docker镜像都是只读的。当容器启动时,一个新的可写层被加载到镜像的顶部,这一层通常被称作“容器层”,容器层”之下的都叫“镜像层”。

镜像的commit操作

docker commit 提交容器副本,使其成为一个新的镜像。
docker commit -a "作者名" -m "镜像的描述信息" 容器ID 新建的镜像名:版本号 "

练习commit操作的小案例:
新建一个tomcat的容器,把容器的tomcat主页Documentation对应的网页删了,然后做成一个镜像。

  1. docker run -it -p 8888:8080 tomcat 运行tomcat。(-p是指定端口,8888是对外暴露的端口,对应docker里tomcat的8080端口,可以任意)(-P是随机端口,例docker run -it -P tomcat,然后需要docker ps查看随机生成的端口)

  2. 然后在虚拟机的centos中打开浏览器,输入localhost:8888。(或者在自己电脑输入虚拟机centos的ip加端口号)

  3. 如果出现404错误,ctrl+P+Q不停止退出tomcat,然后输入docker exec -it tomcat容器的ID /bin/bash进入tomcat。(容器ID用docker ps查)

  4. ls -l查看,发现有webapps和webapps.dist。

  5. 分别进入这两个目录,发现webapps是空的,而webapps.dist里面的东西本是webapps的。

  6. rmdir webapps删除webapps,mv webapps.dist webapps把webapps.dist改名为webapps。(先不退出tomcat,然后需要进tomcat)

  7. 然后重新输入网址就可以访问了。

  8. 在tomcat里面,我们要实现案例,把tomcat的文档页面删了,cd webapps进入webapps目录,然后rm -rf docs删除tomcat的文档目录。

  9. 然后刷新页面,点击tomcat主页的Documentation,显示404,实现了我们案例的要求。(如果之前已经点击了Documentation,不是显示404,请先清理缓存)

  10. 我们接下来要把这个tomcat做成一个镜像。打开一个新的终端,输入docker commit -a "angenin" -m "tomcat without docs" 容器ID angenin/mytomcat:1.1"。(angenin/tomcat为新建的镜像名,冒号后面:1.1为版本号,可任意,-a "xxx"是加作者,-m "xxx"是镜像介绍,)

  11. docker images本地就有了我们自己建的镜像。

  12. 先删除所有容器docker rm -f $(docker ps -qa),然后新建我们的tomcat镜像容器docker run -it -p 7777:8080 angenin/mytomcat:1.1。(因为版本号不是latest,所以需要加上版本号,端口改为7777和前面的做区别)

  13. 先清理缓存,然后在浏览器输入网站后,点击Documentation,显示404。

Docker容器的数据卷(如同共享文件夹)

容器的持久化、容器间继承+数据共享

数据卷在容器内添加的做法:

1. 命令添加:
  • docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名 数据卷,宿主机和容器都可读写。(-v如果没有此目录,此命令会新建目录,如果宿主机上有此目录,文件会和容器共同使用,而如果容器有此目录,会删掉原来的目录然后再新建,原本里面的内容会被清空,而宿主机不会)
    例:docker run -it -v /myDataVolume:/dataVoluContainer 镜像名
  • docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 数据卷,宿主机可读写,容器可读不可写。
    例:docker run -it -v /myDataVolume:/dataVoluContainer:ro 镜像名
2. DockerFile添加:

在宿主机根目录上新建一个mydocker目录,在目录里新建一个Dockerfile文件并写入:

# volume test
FROM centos
VOLUME ["dataVolumeContainer1","dataVolumeContainer2"]
CMD echo "finished, ==========success1"
CMD /bin/bash

然后build后生成镜像docker build -f /mydocker/Dockerfile -t angenin/centos .(最后的.表示当前目录下,如果此时所在目录的Dockerfile文件名为Dockerfile,-f /mydocker/Dockerfile 可省略不写)
新建新镜像容器后,容器根目录多出两个dataVolumeContainer目录的数据卷(可读写)。

docker inspect 容器ID查看宿主机对应的目录,直接复制然后cd进入。

数据卷容器

容器间的配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。
docker run -it --name dc01 angenin/centos 创建父容器dc01
docker run -it --name dc02 --volumes-from dc01 angenin/centos 创建子容器dc02和dc03挂载到父容器dc01上。

  • 宿主机的/var/lib/docker/volumes目录里,没有子容器的目录,只有父容器的目录,子容器共用父容器的目录,子容器继承父容器,同时父子数据共享。
  • 删除dc01,dc02修改后dc03可以访问。
  • 删除dc02后dc03可以访问。
  • 新建dc04继承dc03后再删除dc03,dc04可以访问。

Dockerfile

Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

Dockerfile内容基础知识
  1. 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
  2. 指令按照从上到下,顺序执行
  3. #表示注释
  4. 每条指令都会创建一个新的镜像层,并对镜像进行提交
Docker执行Dockerfile的大致流程
  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器作出修改
  3. 执行类似 docker commit的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个新容器
  5. 执行dockerfile中的下一条指令直到所有指令都执行完成
Dockerfile、Docker镜像和Docker容器之间的关系


保留字指令

  • FROM:基础镜像,当前镜像是基于哪个镜像的
  • MAINTAINER:镜像维护者的姓名和邮箱
  • RUN:容器构建时需要运行的命令
  • EXPOSE:当前容器对外暴露的端口号
  • WORKDIR:指定在创建容器后,终端默认登陆进来的工作目录,一个落脚点
  • ENV:用来在构建镜像过程中设置环境变量
  • ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
  • COPY:类似ADD,拷贝文件和目录到镜像中,将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
  • VOLUME:容器数据卷,用于数据的保存和持久化工作
  • CMD:指定一个容器启动时要运行的命令,Dockerfile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run之后的参数替换
  • ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数,不同的是CMD会被覆盖,而ENTRYPOINT是追加
  • ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
案例一:

自定义mycentos镜像,使其具备:
登陆后的默认路径为:/usr/local
支持vim编辑
支持ifconfig命令

  1. 在根目录下的mydocker目录里新建Dockerfile2文件并写入
FROM centos
MAINTAINER angenin<angenin@xxx.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "success------------ok"
CMD /bin/bash

2.build成镜像docker build -f /mydocker/Dockerfile -t mycentos:1.2 .
出现这东西不要慌,继续等。

build镜像成功

  1. 运行mycentos1.2docker run -it mycentos:1.2,需要的功能已实现。
  • docker history 镜像id 列出镜像的变更历史
案例二(综合案例):

制作自定义tomcat8,然后在宿主机上用数据卷将测试的web服务test发布。

  1. 创建目录mkdir -p /angenin/mydockerfile/tomcat8并在此目录下新建Dockerfile和c.txt文件。

  2. 将jdk和tomcat安装的压缩包拷贝进tomcat8目录(jdk-8u251-linux-x64.tar.gz和apache-tomcat-8.5.54.tar.gz)
    链接:https://pan.baidu.com/s/1T59z6BEecZRj004TIIi0Kg 密码:71sm

  3. 在Dockerfile中写入

FROM centos
MAINTAINER angenin<angenin@xxx.com>

#把宿主机当前上下文的c.txt拷贝到容器/usr/local路径下
COPY c.txt /usr/local/cincontainer.txt

#把java与tomcat添加到容器中
ADD jdk-8u251-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.54.tar.gz /usr/local/

#安装vim编辑器
RUN yum -y install vim

#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $SMYPATH

#配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_251
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.54
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.54
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#容器运行时监听的端口
EXPOSE 8080

#启动时运行 tomcat
#第一种写法
# ENTRYPOINT ["/usr/local/apache-tomcat-8.5.54/bin/startup.sh"]
#第二种写法
# CMD ["/usr/local/apache-tomcat-8.5.54/bin/catalina. sh","run"]
#第三种写法
CMD /usr/local/apache-tomcat-8.5.54/bin/startup.sh && tail -F /usr/local/apache-tomcat-8.5.54/bin/logs/catalina.out
  1. docker build -t angenintomcat8 .(所在目录下有Dockerfile文件,省略-f Dockerfile)
    中途出现这个错误:



    解决办法:
    CentOS7请输入:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  2. 然后输入:docker run -d -p 9080:8080 --name myt8 -v /angenin/mydockerfile/tomcat8/test:/usr/local/apache-tomcat-8.5.54/webapps/test -v /angenin/mydockerfile/tomcat8/tomcat8logs:/usr/local/apache-tomcat-8.5.54/logs --privileged=true angenintomcat8
    -d为后台运行,-p为指定端口,-v设置两个数据卷, --privileged=true赋予扩展权限

  3. 然后输入网站加端口号
    (tomcat8没两个webapps目录,所以不用像tomcat9一样要先删除一个才能运行)

  4. 进入宿主机的tomcat8/test目录,然后创建WEB-INF目录并在里面新建web.xml。

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">

  <display-name>Tomcat Manager Application</display-name>

</web-app><?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">

  <display-name>Tomcat Manager Application</display-name>

</web-app>
  1. 返回test目录,新建a.jsp文件。
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8">
    <title>Insert title here</title>
</head>
<body>
    -----------welcome-----------
    <%="i am in docker tomcat self"%>
    <br>
    <br>
    <%System.out.println("=========docker tomcat self");%>
</body>
</html>
  1. 重启容器docker restart 容器id,访问a.jsp页面。(重启是因为写了配置文件web.xml,如果只改页面不用重启,直接刷新页面即可)
  2. 在进入宿主机的tomcat8/tomcat8logs目录,cat catalina.out查看tomcat8容器的日志。

总结

在centos7里用docker安装mysql

  1. 安装mysql8:docker pull mysql:8.0.18
    安装mysql5.6:docker pull mysql:5.6

  2. 运行mysql5.6容器:docker run -p 12345:3306 --name mysql -v /angenin/mysql/conf:/etc/mysql/conf.d -v /angenin/mysql/logs:/logs -v /angenin/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
    -p为设置端口,–name为容器命名,-e MYSQL_ROOT_PASSWORD=123456为设置密码,-v设置数据卷,-d后台运行

  3. 进入mysql5.6容器:docker exec -it 容器id /bin/bash

  4. 进入mysql:mysql -uroot -p123456

  5. 插入数据,用于测试

show databases;

create database db01;

use db01;

create table t_book(
id int not null primary key,
bookName varchar(20));

show tables;

insert into t_book values(1, 'java');

select * from t_book;
  1. 让macOS连接centos7里的docker内的mysql容器。
    centos如果没开防火墙或开开启端口,需要先开启。(CentOS7 关闭和开启防火墙)
    打开Navicat Premium,点击连接,选MySQL。

    点击SSH,需要先连接到centos。

    不点确定,点回常规,写入数据库对应的信息。

  2. 在本地写入数据,然后在容器中查看。
  3. 在centos上备份mysql容器里的数据
    docker exec mysql容器id sh -c 'exec mysqldump --all-databases -uroot -p"123456"' > /angenin/all_databases.sql

在centos7里用docker安装redis

  1. 安装redis5.0.5:docker pull redis:5.0.5

  2. 因为我们想让redis-server运行我们的redis.conf文件,所以我们需要新建目录mkdir -p /angenin/myredis/conf,并在此目录下添加一个redis.conf文件。(链接:redis.conf下载 密码:wurx)

  3. 修改redis.conf文件
    把bind 127.0.0.1注释掉

  4. 运行redis容器:docker run -p 6379:6379 --name redis -v /angenin/myredis/data:/data -v /angenin/myredis/conf:/usr/local/redis/conf -d redis:5.0.5 redis-server /usr/local/redis/conf/redis.conf --appendonly yes
    redis-server启动redis,–appendonly yes 开启AOF

  5. 进入redis:docker exec -it 已运行的redis容器id redis-cli

  6. 查看宿主机下容器生成的持久化文件:cd /angenin/myredis/data

在centos7里用docker安装nginx

  1. 安装nginx1.16.1:docker pull nginx:1.16.1
  2. 在/angenin下新建mynginx目录,然后在下载链接里的conf和html目录,把下载好的两个目录放到mynginx目录下。(因为直接挂载容器本身就有的目录,容器的目录会被清空,所以需要在宿主机准备容器的配置文件和页面文件)
    (链接:https://pan.baidu.com/s/1V5cv6-lIz2SAzYpI2237Hw 密码:n2r0)
  3. 运行nginx:docker run -d -p 80:80 --name nginx -v /angenin/mynginx/conf:/etc/nginx -v /angenin/mynginx/logs:/var/log/nginx -v /angenin/mynginx/pid:/var/run -v /angenin/mynginx/html:/usr/share/nginx/html nginx:1.16.1
    宿主机mynginx目录里conf中的nginx.conf和conf.d目录下的default.conf是nginx的配置文件,logs是nginx的日志文件,pid是pid文件,html是nginx的页面文件
  4. 在浏览器输入centos的ip(可加上冒号80,不加也一样)。
  5. 在宿主机的html目录下修改nginx容器的主页面。
  6. nginx简单的实现反向代理到tomcat。运行一个tomcat容器docker run -d --name tomcat8 -p 8080:8080 -d tomcat:8.5.54
  7. 在浏览器上输入centos的ip加冒号8080
  8. 如果出现404错误,是因为tomcat容器里有两个webapps和webapps.dist目录,进入tomcat容器docker exec -it tomcat容器id /bin/bash,删除webapps目录,把webapps.dist目录改名为webapps。刷新页面。
  9. 进入mynginx/conf/conf.d, 修改default.conf文件。proxy_pass http://10.211.55.17:8080;(10.211.55.17为centos宿主机的ip)
  10. docker restart nginx重启nginx容器,然后在浏览器输入centos的ip。
  11. 查看nginx容器生成的日志和pid文件

docker本地镜像push发布到阿里云镜像仓库的步骤

镜像生成的两种办法:
  • 写完Dockerfile之后build生成镜像。
    docker build -f Dockerfile文件路径 -t 镜像id .
  • 从容器创建一个新的镜像
    docker commit -a "作者名" -m "镜像的描述信息" 容器ID 新建的镜像名:版本号 "

生成一个镜像用于上传,这里我们有上面练习的自定义tomcat8镜像来上传。

  1. 登陆阿里云的镜像仓库
    https://account.aliyun.com/login/qr_login.htm?spm=5176.12825654.amxosvpfn.21.54212c4aSPUGfd&oauth_callback=https%3A%2F%2Fcn.aliyun.com%2F



  2. 新建镜像仓库








搜索上传的镜像

学习视频:B站尚硅谷阳哥的Docker视频
https://www.bilibili.com/video/BV1Ls411n7mx


转载:https://blog.csdn.net/qq_36903261/article/details/105870268
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场