Docker01 - docker快速入门

Docker快速入门

文章目录

docker 使用的是 go 语言进行开发的

一:Docker概述

1:虚拟机技术和容器化技术

docker就是将程序和其需要的环境封装到了一起

虚拟机技术和Docker的不同

  • 传统的虚拟机技术,模拟出一个硬件,然后在上面安装一套完整的操作系统,然后在这个操作系统上运行和安装软件
  • 容器内的软件直接运行在宿主机上的内容,没有内核,也没有虚拟硬件
Docker容器 虚拟机
性能 等于物理机性能 大概有5% ~ 20%的损耗
隔离性 NS隔离
虚拟化类型 操作系统虚拟化 硬件虚拟化
安全性
GuestOS【子操作系统】 只支持Linux 全部

docker中每一个容器之间互相隔离,都有自己的文件系统,互相不影响

2:Docker名词解释

2.1:Docker镜像(images)
  • 好比是一个模板,可以通过这个模板来创建容器服务
  • tomcat的镜像 -> docker run -> tomcat1容器实例
  • 通过这个镜像可以创建多个实例,好比可以通过一个 java class 可以new多个这个类的实例一样
2.2:Docker容器(containers)
  • 容器技术独立运行一个或者一组应用, 通过镜像进行创建
  • 启动,停止,删除基本命令
  • 容器可以简单的理解为一个小型的linux系统



Docker 面向对象
容器 containers 对象
镜像 images
2.3:Docker仓库(registry)
  • 仓库就是存放镜像的地方
  • 分为共有仓库和私有仓库
  • 最大的docker镜像仓库 -> Docker hub(默认是国外的,可以配置镜像进行加速)

3:Docker下载安装

3.1:安装
  1. 安装底层工具
sh 复制代码
# 这里我们安装docker的底层工具,会自动提示我们下载,很快就会完成了
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 加入阿里云yum仓库提速docker的下载过程
sh 复制代码
# 增加阿里云的docker下载仓库,默认情况下,Docker的官方是从国外的服务器上下载的,下载速度是非常慢的,甚至失败
# 所以在这里我们是使用yum-config-manager组件来指定一个新的下载资源,指向的是阿里云的应用服务器,以此提高下载速度
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 更新一下仓库的源信息
sh 复制代码
sudo yum makecache fast # centos stream 9这个镜像没有fast参数,可以不要这个
  1. 安装docker客户端和docker引擎
sh 复制代码
sudo yum -y install docker-ce
  1. 启动和版本查看
sh 复制代码
# 启动docker
sudo service docker start

# 查看版本验证docker是否安装成功
docker version
  1. Aliyun镜像加速

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

至此,docker安装部分结束

3.2:卸载

1:移除安装的软件

shell 复制代码
yum remove docker-ce docker-ce-cli containerd.io

2:移除相关文件夹

shell 复制代码
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
3.3:ali云加速

注册一个属于自己的阿里云账户(可复用淘宝账号) -> 获得加速器地址连接 -> 登陆阿里云开发者平台 -> 进入控制台 -> 产品和服务 -> 弹性计算 -> 容器镜像服务


二:Docker基本命令

1:帮助命令

文档:https://docs.docker.com/engine/reference/commandline/docker/

shell 复制代码
systemctl start docker # 启动docker 
systemctl stop docker # 停止docker
systemctl restart docker # 重启docker
systemctl enable docker # 开机启动docker
systemctl status docker # 查看docker状态

docker info # 查看docker概要信息
docker --help # 查看docker总体帮助文档
docker 具体命令 --help # 查看docker命令帮助文档

2:镜像相关命令

2.1:docker images

列出所有的本地的镜像

shell 复制代码
docker images [OPTIONS] [REPOSITORY[:TAG]]
Name, shorthand Default Description
--all , -a 列出所有的镜像
--filter , -f 过滤
--quiet , -q 只显示镜像的id
  • REPOSITORY -> 表示镜像的仓库源;
  • TAG -> 镜像的标签版本号;
  • IMAGE ID -> 镜像ID;
  • CREATED -> 镜像创建时间;
  • SIZE -> 镜像大小

同一仓库源可以有多个 TAG版本,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。

如果你不指定一个镜像的版本标签,将默认使用最新版本 -> tag = lastest

搜索指定的镜像

shell 复制代码
docker search [OPTIONS] TERM
Name, shorthand Default Description
--filter , -f 过滤保留符合条件的
参数 说明
name 镜像的名称
description 镜像说明
stars 点赞数量
offical 是否官方
automated 是否是自动构建的
2.3:docker pull

下载(拉取)镜像

shell 复制代码
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
Name, shorthand Default Description
--all-tags , -a 在仓库中下载所有版本的镜像


2.4:docker rmi

删除指定的镜像

shell 复制代码
docker rmi [OPTIONS] IMAGE [IMAGE...]

docker rmi -f [image_id] # 可以通过指定image id进行删除
docker rmi [name: tag] # 可以通过指定name : tag进行删除
docker rmi -f $(docker images -aq) # 删除全部的镜像
Name, shorthand Description
--force , -f 强制删除
2.5:镜像提交

对自己的镜像进行提交操作

shell 复制代码
docker commit  # 提交容器成为一个新的版本

# -m -> message -> 可以忽略
# -a -> author -> 可以忽略
docker commit -m[信息] -a[作者] [容器id] target_image_name[tag]

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Name, shorthand Default Description
--author , -a Author (e.g., "John Hannibal Smith hannibal@a-team.com")
--change , -c Apply Dockerfile instruction to the created image
--message , -m Commit message
--pause , -p true Pause container during commit

3:容器相关命令

有了镜像才能创建容器,(就是有了类才能创建实例)

3.1:docker run【重中之重】

新建一个容器并启动

shell 复制代码
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

# 下面列出几个常用的[OPTIONS]参数
--name = "Name"  # 容器的名字,用来进行容器的区分
-d  # 后台方式进行运行
-e # 指定环境变量
-v # 挂载到宿主机指定的目录(宿主机目录:容器目录)
-it  # 通过交互的方式进行运行
-P  # 随机指定端口
-p  # 指定容器的端口,有下面四种使用方式
# 方式一 -> -p ip:主机端口:容器端口
# 方式二 -> -p 主机端口:容器端口 [最常用]
# 方式三 -> -p 容器端口
# 方式四 -> 容器端口




从容器中退出到服务器

exit() 退出后停止

ctrl + p + q 退出后不停止依然运行

🎉 创建容器有两种方式:

3.2:docker ps

列出当前正在运行的容器

shell 复制代码
docker ps [OPTIONS]
Name, shorthand Default Description
--all , -a 列出当前正在运行的容器,带出历史运行过的容器
--filter , -f 过滤列出
--last , -n -1 显示最近创建的容器
--quiet , -q 只显示容器的编号
--size , -s 展示总的文价的大小
3.3:docker rm

删除容器

shell 复制代码
docker rm [OPTIONS] CONTAINER [CONTAINER...]
Name, shorthand Description
--force , -f 强制删除
shell 复制代码
docker rm 容器的id  # 不能删除正在运行的容器
docker rm $(docker ps -aq) # 删除所有的容器

# 列出所有的容器编号后重定向作为docker rm的参数进行删除,和docker rm $(docker ps -aq)同理
docker ps -a -q | xargs docker rm  # 删除所有的容器
3.4:docker exec

进入正在运行的容器的命令

shell 复制代码
docker exec -it container_id /bin/bash

exec和attach的区别

当多个窗口同是attach到同一个容器的时候,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作

  • 使用 docker exec -it 容器id /bin/bash 进入容器并开启一个新的bash终端。 退出容器终端时,不会导致容器的停止

  • 使用 docker attach 容器id 进入正在执行容器,不会启动新的终端, 退出容器时,会导致容器的停止。

3.5:启动和停止容器
shell 复制代码
docker start [OPTIONS] CONTAINER [CONTAINER...]  # 启动容器
docker restart [OPTIONS] CONTAINER [CONTAINER...] # 重启容器
docker stop [OPTIONS] CONTAINER [CONTAINER...] # 停止容器
docker kill [OPTIONS] CONTAINER [CONTAINER...] # 杀掉容器
3.6:其他常用命令
3.6.1:docker logs

查看日志

shell 复制代码
docker logs -tf --tail [number] container_id
-tf  # 显示日志
--tail [number]  # 要显示的条数
3.6.2:docker top

查看容器中的进程

shell 复制代码
docker top container_id
3.6.3:docker inspect

查看镜像的元数据

shell 复制代码
docker inspect container_id
3.6.4:docker cp

在容器和本地文件系统之间复制文件/文件夹

shell 复制代码
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

4:总结

4.1:核心命令图
4.2:docker是怎么工作的

docker是C/S的系统结构,守护线程运行在主机上,通过Socket从客户端访问

server接收到client的指令,就会开始执行

三:基本安装部署演示

1:Nginx测试

bash 复制代码
# 1:搜索docker镜像
docker search nginx

# 2:拉取最新nginx镜像
docker pull nginx

# 3:查看当前的所有的镜像,方便检查nginx是不是已下载成功
docker images

# =====> 下面是容器操作 <=====
# 4:启动镜像,创建容器
docker run 
	-d # 后台运行
	--name nginx01 # 容器命名 
	-p 3344:80  # 端口映射 3344是宿主机端口,映射容器的80端口
	nginx # 使用的镜像名称

# 5:查看当前的容器
docker ps

内部映射图

shell 复制代码
# 以后台的方式进入到容器中
docker exec -it nginx01 /bin/bash

# 查看nginx01的相关的信息
whereis nginx
cd /etc/nginx

2:Tomcat测试

2.1:镜像拉取和容器启动
shell 复制代码
# 搜索docker镜像
docker search tomcat
# 拉取最新镜像
docker pull tomcat
# 查看当前的所有的镜像,方便检查tomcat是不是已下载成功
docker images

# 启动镜像,创建容器
# 起一个别名,通过公网端口号3355,访问内部的808端口(映射性)
docker run 
	-d 
	--name tomcat01 # 指定容器名称
	-p 3355:8080 # 端口映射 3355是宿主机端口,映射容器的8080端口
	tomcat # 指定使用的镜像

# 查看当前的容器
docker ps
# 进入容器
docker exec -it tomcat01 /bin/bash
2.2:阉割tomcat的处理

如果使用的是阿里云镜像加速,将会得到一个阉割版的Tomcat,很多内容都不支持

  • linux的命令少了,像什么ll都不支持
  • webapps中没有内容

如果发生这个问题可以将webapps.dist 文件夹下的所有的内容都拷贝到webapps

shell 复制代码
# 将webapps下的dist中的所有的内容拷贝给webapps
cp -r webapps/dist/* webapps

# 查看容器状态,可以看到还是123456
docker ps

# 进行提交
docker commit 
	-a='author01' # auth
	-m='add webapps' # message
	123456 # 容器id
	tomcat01:1.0 

# 查看镜像,可以发现此时有tomcat01了
docker images

四:镜像的仓库发布和获取

1:本地镜像发布到docker hub(了解即可)

中国大陆访问太慢了且准备被阿里云取代的趋势,不太主流

sh 复制代码
docker login # 登录docker

# 进行给镜像命名
docker tag 
	java-demo:v1.0
	cuihaida/java-demo:v1.0

# 当前宿主机推送镜像到docker hub
docker push cuihaida/java-demo:v1.0

# 这样其他服务器就可以使用docker pull命令进行拉取了
docker pull cuihaida/java-demo:v1.0

2:本地镜像发布到阿里云

2.1:打包容器为镜像

在Docker中,你可以使用docker commit命令将一个正在运行的容器转换为镜像,或者使用docker savedocker load来导出和导入镜像。下面是一些具体的步骤和示例:

使用docker commit

  1. 首先,启动一个容器(例如,使用docker run命令)。

    bash 复制代码
    docker run -d --name my_container ubuntu /bin/sleep infinity
  2. 然后,使用docker commit将该容器转换为镜像。

    bash 复制代码
    docker commit my_container my_new_image
  3. 此时,你可以使用docker images查看新的镜像。

    bash 复制代码
    docker images

使用docker savedocker load

  1. 首先,确保容器正在运行或已停止。

  2. 使用docker save导出容器。

    bash 复制代码
    docker save -o my_container.tar my_container
  3. 然后,可以使用docker load来加载这个镜像。

    bash 复制代码
    docker load -i my_container.tar
  4. 加载后,你可以使用docker images查看新加载的镜像。

    bash 复制代码
    docker images
2.2:进入阿里云开发者平台:

https://promotion.aliyun.com/ntms/act/kubernetes.html

创建仓库镜像

2.3:进入容器镜像服务

选择控制台,进入容器镜像服务

2.4:创建命名空间和仓库名称

个人版 -> 命名空间 -> 仓库名称

2.5:进入管理界面获得脚本
2.7:镜像推送
2.7.1:登录到阿里云registry
bash 复制代码
docker login 
	--username=[你的用户名] # 指定用户名
	registry.cn-hangzhou.aliyuncs.com # 阿里云registry
2.7.2:将镜像推送到registry
sh 复制代码
# 打上tag标签
docker tag 
	cea1bb40441c # 镜像id
	registry.cn-hangzhou.aliyuncs.com/atguiguwh/myubuntu:1.1 # 标签名称 & 版本

# 推送
docker push registry.cn-hangzhou.aliyuncs.com/atguiguwh/myubuntu:1.1
2.8:从阿里仓库下载别人的镜像
bash 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/atguiguwh/myubuntu:1.1

3:本地镜像发布到私有docker仓库

Docker Registry是官方提供的工具,可以用于构建私有镜像仓库

3.1:下载镜像Docker Registry
sh 复制代码
docker pull registry
3.2:运行私有库
sh 复制代码
docker run 
	-d # 后台启动
	-p 5000:5000  # 端口映射
	-v /zzyyuse/myregistry/:/tmp/registry  # 数据卷挂载,宿主机目录/zzyyuse/myregistry/,容器目录/tmp/registry
	--privileged=true # 私有化
	registry

默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调

3.3:将指定容器构建成为镜像
sh 复制代码
docker commit 
	-m="ifconfig cmd add" 
	-a="zzyy" 
	a69d7c825c4f  # 容器id
	zzyyubuntu:1.2 # 镜像名称:版本号
3.4:curl验证私服镜像
sh 复制代码
curl -XGET http://192.168.111.162:5000/v2/_catalog
3.5:推送到私服
3.5.1:打标签
sh 复制代码
docker tag  
	zzyyubuntu:1.2  
	192.168.111.162:5000/zzyyubuntu:1.2 # 换成自己的IP
3.5.2:http支持

修改守护线程的配置文件使之支持http

修改完之后注意重启docker

3.5.3:推送到私服
java 复制代码
docker push 192.168.111.162:5000/zzyyubuntu:1.2

推送完成可以使用curl验证私服库是否有这个

3.6:从私有仓库拉取到本地
sh 复制代码
docker pull 192.168.111.162:5000/zzyyubuntu:1.2

五:DockerFile

一种命令脚本,可以使用docker build通过dockerfile脚本创建镜像。

Dockerfile 是定义 Docker 容器镜像构建过程的文件,包括容器镜像使用的基础环境、容器内的依赖和文件、容器的配置、启动命令等。

有了 Dockerfile,我们就能很轻松地制作出自己的容器镜像。

虽然 Dockerfile 的写法并不复杂,但还是建议尽量不要自己写,直接去网上找个差不多的项目,复制粘贴别人的 Dockerfile 就足够了!

1:dockerFile指令集

官方文档:https://docs.docker.com/engine/reference/builder/#dockerfile-reference

1.1:FROM

指定基础镜像,指定这个镜像的母亲是谁

支持三种格式:

  • FROM <image>
  • FROM <image>:<tag>
  • FROM <image>@<digest>

FROM指令必须指定且需要在Dockerfile其他指令的前面。

指定的基础image可以是官方远程仓库中的,也可以位于本地仓库。

后续的指令都依赖于该指令指定的image。

当在同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令。

1.2:MAINTAINER

指定维护者的信息,告诉这个脚本谁在维护

格式为:

  • MAINTAINER <name>
1.3:RUN

镜像构建的时候需要运行的命令

支持两种格式:

  • RUN <command>
  • RUN ["executable", "param1", "param2"]

RUN <command> 在shell终端中运行命令

  • 在Linux中默认是/bin/sh -c
  • 在Windows中是 cmd /s /c

RUN ["executable", "param1", "param2"] 使用exec执行。

  • 指定其他终端可以通过该方式操作,例如:RUN ["/bin/bash", "-c", "echo hello"]
  • 该方式必须使用["]而不能使用['],因为该方式会被转换成一个JSON 数组。
1.4:CMD

指定容器时要运行的命令,为执行的容器提供默认值主要是

CMD支持三种格式:

  • CMD ["executable","param1","param2"] (推荐使用)
  • CMD ["param1","param2"] (为ENTRYPOINT指令提供预设参数)
  • CMD command param1 param2 (在shell中执行)

CMD指令的主要目的是为执行容器提供默认值。

每个Dockerfile只有一个CMD命令,如果指定了多个CMD命令,那么只有一条会被执行

如果启动容器的时候指定了运行的命令,则会覆盖掉CMD指定的命令。

1.5:LABEL

为镜像添加元数据

格式为:

  • LABEL <key>=<value> <key>=<value> <key>=<value> ...

使用 "和 \ 转换命令行,示例:

dockerfile 复制代码
LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."
1.6:EXPOSE

为Docker容器设置对外的端口号

格式为:

  • EXPOSE <port> [<port>...]

在启动时,可以使用-p选项或者-P选项。

shell 复制代码
# 映射一个端口示例
EXPOSE port1
# 相应的运行容器使用的命令
docker run -p port1 image
# 也可以使用-P选项启动
docker run -P image

# 映射多个端口示例
EXPOSE port1 port2 port3
# 相应的运行容器使用的命令
docker run -p port1 -p port2 -p port3 image
# 还可以指定需要映射到宿主机器上的某个端口号  
docker run -p host_port1:port1 -p host_port2:port2 -p host_port3:port3 image
1.7:ENV

指定环境变量

格式为:

  • ENV <key> <value>
  • ENV <key> = <value> ...

指定环境变量,会被后续RUN指令使用

在容器启动后:

  • 可以通过docker inspect查看这个环境变量
  • 也可以通过docker run --env <key> = <value> 来修改环境变量
dockerfile 复制代码
ENV JAVA_HOME /path/to/java # 设置环境变量JAVA_HOME
1.8:ADD

copy文件,会自动进行解压操作

格式为:

  • ADD <src>... <dest>
  • ADD ["<src>",... "<dest>"]

从src目录复制文件到容器的dest。

其中src可以是Dockerfile所在目录的相对路径,也可以是一个URL,还可以是一个压缩包

⚠️ 注意下面的事项:

  1. src必须在构建的上下文内,不能使用例如:ADD ../somethine /something ,因为docker build 命令首先会将上下文路径和其子目录发送到docker daemon
  2. 如果src是一个URL,同时dest不以斜杠结尾,dest将会被视为文件,src对应内容文件将会被下载到dest
  3. 如果src是一个URL,同时dest以斜杠结尾,dest将被视为目录,src对应内容将会被下载到dest目录
  4. 如果src是一个目录,那么整个目录其下的内容将会被拷贝,包括文件系统元数据
  5. 如果文件是可识别的压缩包格式,则docker会自动解压
1.9:COPY
  • COPY <src>... <dest>
  • COPY ["<src>",... "<dest>"] (shell中执行)

复制本地端的src到容器的dest。

和ADD指令类似,只是COPY不支持URL和压缩包。

1.10:ENTRYPOINT

指定Docker容器启动时执行的命令,可以多次设置,但是只有最后一个有效

格式为:

  • ENTRYPOINT ["executable", "param1", "param2"]
  • ENTRYPOINT command param1 param2
1.11:VOLUME

指定持久化的容器数据卷映射

格式为:

  • VOLUME ["/data"]

使容器中的一个目录具有持久化存储数据的功能,该目录可以被容器本身使用,也可以共享给其他容器。

当容器中的应用有持久化数据的需求时可以在Dockerfile中使用该指令。

1.12:USER

设置启动容器的用户,默认是root用户。

格式为:

  • USER 用户名
1.13:WORKDIR

切换目录指令

格式为:

  • WORKDIR /path/to/workdir

类似于cd命令,对RUN、CMD、ENTRYPOINT生效。

1.14:ARG

定义一个变量

格式为:

  • ARG <name>[=<default value>]
1.15:ONBUILD

指定当建立的镜像作为其他镜像的基础时,所执行的命令

格式为:

  • ONBUILD [INSTRUCTION]

2:dockerFile示例

上面命令比较多,比较常用的有下面这几个:

指令 说明 示例
FROM 指定基础镜像 FROM centos:6
ENV 设置环境变量,可在后面指令使用 ENV key value
COPY 拷贝本地文件到镜像的指定目录 COPY ./xx.jar /tmp/app.jar
RUN 执行Linux的shell命令,一般是安装过程的命令 RUN yum install gcc
EXPOSE 指定容器运行时监听的端口,是给镜像使用者看的 EXPOSE 8080
ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar

例如,要基于Ubuntu镜像来构建一个Java应用,其Dockerfile内容如下:

dockerfile 复制代码
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录、容器内时区
ENV JAVA_DIR=/usr/local
ENV TZ=Asia/Shanghai
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 设定时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 安装JDK
RUN cd $JAVA_DIR \
 && tar -xf ./jdk8.tar.gz \
 && mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 指定项目监听的端口
EXPOSE 8080
# 入口,java项目的启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]

有人提供了基础的系统加JDK环境,我们在此基础上制作java镜像,就可以省去JDK的配置了

dockerfile 复制代码
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

当Dockerfile文件写好以后,就可以利用命令来构建镜像了。

提前准备好一个demo项目及对应的Dockerfile:

首先,我们将docker-demo.jar包以及Dockerfile拷贝到虚拟机的/root/demo目录:

然后,执行命令,构建镜像:

bash 复制代码
# 进入镜像目录
cd /root/demo
# 开始构建
docker build -t docker-demo:1.0 .

命令说明:

  • docker build : 就是构建一个docker镜像
  • -t docker-demo:1.0-t参数是指定镜像的名称(repositorytag
  • . : 最后的点是指构建时Dockerfile所在路径,由于我们进入了demo目录,所以指定的是.代表当前目录,也可以直接指定Dockerfile目录:
bash 复制代码
# 直接指定Dockerfile目录
docker build -t docker-demo:1.0 /root/demo

结果:

查看镜像列表:

bash 复制代码
# 查看镜像列表:
docker images
# 结果
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
docker-demo   1.0       d6ab0b9e64b9   27 minutes ago   327MB
nginx         latest    605c77e624dd   16 months ago    141MB
mysql         latest    3218b38490ce   17 months ago    516MB

然后尝试运行该镜像:

bash 复制代码
# 1.创建并运行容器
docker run 
	-d 
	--name dd 
	-p 8080:8080 
	docker-demo:1.0
# 2.查看容器
dps
# 结果
CONTAINER ID   IMAGE             PORTS                                                  STATUS         NAMES
78a000447b49   docker-demo:1.0   0.0.0.0:8080->8080/tcp, :::8090->8090/tcp              Up 2 seconds   dd
f63cfead8502   mysql             0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   Up 2 hours     mysql

# 3.访问测试
curl localhost:8080/hello/count
相关推荐
CAFEBABE 3416 小时前
linux离线安装docker并启动
linux·docker·eureka
yuguo.im18 小时前
Docker 两大基石:Namespace 和 Cgroups
运维·docker·容器
会飞的土拨鼠呀18 小时前
docker部署 outline(栗子云笔记)
笔记·docker·容器
Jelly-小丑鱼19 小时前
Linux搭建syslog日志服务器
linux·服务器·docker·日志服务器·syslog服务器
没有bug.的程序员20 小时前
高频IO服务优化实战指南
java·jvm·spring·容器
lisanmengmeng21 小时前
docker 方式安装部署禅道zentao(五)
运维·docker·容器
程序员老赵21 小时前
AdguardHome Docker 容器化部署指南
docker·dns
露临霜1 天前
Docker安装nginx
nginx·docker·容器
CAFEBABE 341 天前
安装完docker之后怎么使用
运维·docker·容器
测试人社区—小叶子1 天前
测试开发面试高频“灵魂八问”深度解析与应答策略
网络·人工智能·测试工具·云原生·容器·面试·职场和发展