如果您想了解docker安装镜像的相关知识,那么本文是一篇不可错过的文章,我们将对docker安装镜像进行全面详尽的解释,并且为您提供关于Docker-Docker安装+阿里云镜像加速、Docker|
如果您想了解docker 安装镜像的相关知识,那么本文是一篇不可错过的文章,我们将对docker安装镜像进行全面详尽的解释,并且为您提供关于Docker - Docker安装 + 阿里云镜像加速、Docker | docker实战(三):使用Docker镜像(读书笔记)、Docker | Docker技术基础梳理(八) - Dockerfile定制镜像浅析、Docker | 使用dockerfile生成镜像,清理docker空间的有价值的信息。
本文目录一览:- docker 安装镜像(docker安装镜像)
- Docker - Docker安装 + 阿里云镜像加速
- Docker | docker实战(三):使用Docker镜像(读书笔记)
- Docker | Docker技术基础梳理(八) - Dockerfile定制镜像浅析
- Docker | 使用dockerfile生成镜像,清理docker空间
docker 安装镜像(docker安装镜像)
CMD 容器启动命令
CMD 指令用于为执行容器提供默认值。每个 Dockerfile 只有一个 CMD 命令,如果指定了多个 CMD 命令,那么只有最后一条会被执行,如果启动容器的时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
支持三种格式: CMD ["executable","param1","param2"] (推荐使用) CMD ["param1","param2"] (为 ENTRYPOINT 指令提供预设参数) CMD command param1 param2 (在 shell 中执行)
ENTRYPOINT 入口点
ENTRYPOINT 和 CMD 指令的目的一样,都是指定 Docker 容器启动时执行的命令,可多次设置,但只有最后一个有效。ENTRYPOINT 不可被重写覆盖。 ENTRYPOINT、CMD 区别:http://blog.csdn.net/newjueqi/article/details/51355510 https://segmentfault.com/q/1010000000417103
RUN 是在 Build 时运行的,先于 CMD 和 ENTRYPOINT。Build 完成了,RUN 也运行完成后,再运行 CMD 或者 ENTRYPOINT。 ENTRYPOINT 和 CMD 的不同点在于执行 docker run 时参数传递方式,CMD 指定的命令可以被 docker run 传递的命令覆盖 ENTRYPOINT 指定的参数比运行 docker run 时指定的参数更靠前
docker exec -it 容器id /bin/bash
java
#docker run
docker run java /bin/echo ''Hello World''
# dockerfile
# 基于哪个镜像
FROM java:8
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 拷贝文件到容器,也可以直接写成ADD xxxxx.jar /app.jar
ADD app.jar /app.jar
# 声明需要暴露的端口
EXPOSE 8761
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#以下在同一目录
#Dockerfile
FROM java:8
VOLUME /tmp
ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar app.jar
# RUN bash -c ''touch /app.jar''
EXPOSE 9000
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# docker-compose.yml
version: ''2'' # 表示该docker-compose.yml文件使用的是Version 2 file format
services:
eureka: # 指定服务名称
build: ./ # 指定Dockerfile所在路径
ports:
- "8761:8761" # 指定端口映射,类似docker run的-p选项,注意使用字符串形式
# 执行运行
docker-compose up -d
# --no-deps 标志可防止Compose重新创建任何web 依赖的服务
docker-compose up --no-deps -d web
#docker-compose
version: ''2''
services:
mysql:
image: mysql:5.7
expose:
- "3306"
environment:
- MYSQL_ROOT_PASSWORD=123456
wordpress:
image: wordpress
ports:
- "80:80"
environment:
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_USER=root
- WORDPRESS_DB_PASSWORD=123456
nginx
docker run -d -p 91:91 nginx
docker exec -it nginx容器ID /bin/bash # 进入容器
#Nginx默认首页目录在:/usr/share/nginx/html/index.html
tee /usr/share/nginx/html/index.html <<-''EOF''
Welcome to docker
EOF
FROM nginx
RUN echo ''<h1>Spring Cloud与Docker微服务实战</h1>'' > /usr/share/nginx/html/index.html
FROM centos:7
RUN rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum -y install nginx
RUN sed -i ''1i\daemon off;'' /etc/nginx/nginx.conf
ENTRYPOINT nginx
tomcat
https://my.oschina.net/u/3489495/blog/1825335
docker run --name tomcat8080 -d -p 8080:8080 tomcat
docker inspect -f ''{{.Id}}'' tomcat8080
docker exec -it a3d4f36dca98 /bin/bash
### mysql
docker run -p 3309:3306 --name mysql3309 -e MYSQL_ROOT_PASSWORD=root -d mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
#Docker-mysql8.0客户端无法连接
进入容器bash并进入mysql命令行
docker exec -it mysql3306 bash
root@eb3dbfb0958f:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
…
mysql>
//使用mysql数据库
mysql>use mysql
-- update user set authentication_string = password(''root'') where user = ''root'';
ALTER USER ''root''@''%'' IDENTIFIED WITH mysql_native_password BY ''pass''; #更新一下用户的密码 root用户密码为newpassword
GRANT ALL PRIVILEGES ON *.* TO ''root''@''%'' IDENTIFIED BY ''root'' WITH GRANT OPTION;
flush privileges;
CREATE USER ''liaozesong''@''%'' IDENTIFIED WITH mysql_native_password BY ''Lzslov123!'';
GRANT ALL PRIVILEGES ON *.* TO ''liaozesong''@''%'';
//修改数据库
mysql> ALTER USER ''root''@''%'' IDENTIFIED WITH mysql_native_password BY ''root'';
//刷新数据库
mysql> flush privileges;
dockerfile
FROM nginx_dockerfile:centos
RUN yum -y install gcc gcc-c++ make automake cmake
RUN groupadd mysql; useradd -r -M -u 39 -s /sbin/nologin -g mysql mysql
RUN mkdir /usr/local/mysql; mkdir /data/mysql/db -p
RUN yum install gcc gcc-c++ ncurses-devel bison bison-devel -y
RUN wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.29.tar.gz
RUN tar zxf mysql-5.6.29.tar.gz -C /usr/src/
WORKDIR /usr/src/mysql-5.6.29
RUN cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/db -DSYSCONFDIR=/etc -DMYSQL_TCP_PORT=3306 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DEXTRA_CHARSETS=all -DDEFAULT_COLLATION=utf8_general_ci -DWITH-MYSQLD-LDFLAGS=-all-static -DWITH-CLIENT-LD-FLAGS=-all-static -DWITH_DEBUG=0 && gmake && gmake install
RUN chown -R root:mysql /usr/local/mysql/ && chown -R mysql:mysql /data/mysql/db/
RUN chmod 775 /usr/src/mysql-5.6.29/scripts/mysql_install_db.sh
RUN /usr/src/mysql-5.6.29/scripts/mysql_install_db.sh --basedir=/usr/local/mysql --datadir=/data/mysql/db --no-defaults --user=mysql
RUN cp /usr/src/mysql-5.6.29/support-files/my-default.cnf /etc/my.cnf
RUN cp /usr/src/mysql-5.6.29/support-files/mysql.server /etc/init.d/mysqld
RUN chmod -R 775 /etc/init.d/mysqld && /etc/init.d/mysqld start
RUN echo -e ''#!/bin/bash\nexport PATH=$PATH:/usr/local/mysql/bin'' >/etc/profile.d/mysql.sh
RUN source /etc/profile
docker build -t mysql_dockerfile:nginx_dockerfile .
https://www.cnblogs.com/ivictor/p/4832832.html
https://github.com/mysql/mysql-docker/blob/mysql-server/5.7/Dockerfile
FROM mysql:5.6.34
MAINTAINER fengzp <fengzp@gzyitop.com>
RUN apt-get update
RUN apt-get -y install vim
RUN usermod -u 1000 mysql
RUN mkdir -p /var/run/mysqld
RUN chmod -R 777 /var/run/mysqld
VOLUME /etc/mysql
VOLUME /script
https://www.cnblogs.com/andyfengzp/p/6424150.html
Docker - Docker安装 + 阿里云镜像加速
1. 环境准备
2. 环境查看
3. 安装
通过XShell,对远程阿里云服务器执行下面的命令:
4. 卸载Docker
5. 阿里云镜像加速
Docker | docker实战(三):使用Docker镜像(读书笔记)
第三章 使用Docker镜像
3.1 获取镜像
镜像是运行容器的前提, 官方的 Docker Hub 网站已经提供了数十万个镜像供大家开放下载。 本节主要介绍 pecker镜像的pull子命令。
可以使用 docker [image] pull 命令直接从 Docker Hub 镜像源来下载镜像。 该命令的格式为
docker [image] pull NAME [ :TAG] 。
其中,NAME是镜像仓库名称(用来区分镜像),TAG是镜像的标签(往往用来表示版本信息)。 通常情况下,描述一个镜像需要包括 “名称+标签“ 信息。
例如, 获取一个Ubuntu 18.04 系统的基础镜像可以使用如下的命令:
docker pull ubuntu: 18.04.18.04: Pulling from library/ubuntu Digest:sha256:e27e9d7f7f28d67aa9e2d7540bdc2b33254b452ee8e60f388875e5b7d9b2b696
Status: Downloaded newer image for ubuntu:18.04
对于Docker镜像来说, 如果不显式指定TAG, 则默认会选择la迳釭标签,这会下载 仓库中最新版本的镜像。
下面的例子将从DcoekrHub 的Ubuntu仓库 下载一个最新版本的Ubuntu操作系统的镜像:
该命令实际上下载的就是 ubuntu:latest镜像。
下载过程中可以看出 ,镜像文件一般由若干层(layer)组成 ,6c953ac5d795这样的 串是层的唯一id(实际上完整的id包括256比特,64个十六进制字符组成)。使用docker pull命令下载中会获取并输出镜像的各层信息。当不同的镜像包括相同的层时,本地仅存 储了层的 一份内容,减小了存储空间。
读者可能会想到,在不同的镜像仓库服务器的情况下,可能会出现镜像重名的情况。
严格地讲,镜像的仓库名称中还应该添加仓库地址(即registry, 注册服务器)作为前缀,只是默认使用的是官方dockerhub服务 ,该前缀可以忽略。
例如,docker pull ubuntu:18.04命令相当千docker pull registry.hub. docker.com/ubuntu:18.04命令,即从默认的注册服务器DcoekrHub Registry中的 ubuntu 仓库来下载标记为18.04的镜像。
如果从非官方 的仓库下载,则 需要在仓库 名称前指定完整的仓库地址。例如从网易蜂巢 的镜像源来下载ubuntu:18.04镜像,可以使用如下命令,此时下载的镜像名称 为hub. c.163.com/public/ubuntu:18.04:
docker pull hub.c.163.com/public/ubuntu:18.04
pull 子命令支持的选项主要包括:
-a, --all士ags=trueifalse:是否获取仓库中的所有镜像,默认为否; --disable-con七ent-trus七:取消镜像的内容校验,默认为真。
另外,有 时需要使用镜像代理服务来加速Docker镜像获取 过程 ,可以在Docker服务 启动配置中增加 --registry-mirror=proxy_URL来指定镜像代理服务地址(如https:// registry.docker-en.com)
下载镜像到本地后, 即可随时使用该镜像了, 例如利用该镜像创建一个容器,在其中运 行bash应用, 执行打印 "Hello World"命令:
docker run -it ubuntu:18.04 bash
3.2 查看镜像信息
本节主要介绍Docker镜像的ls、tag和inspect子命令。
- 使用images命令列出镜像
docker images
在列出信息中, 可以看到几个字段信息:
来自于哪个仓库, 比如ubuntu表示ubuntu 系列的基础镜像;
SIZE 79.6MB 79.6MB镜像的标签信息, 比如 18.04、 latest表示不同的版本信息。 标签只是标记, 并不能标识镜像内容; 镜像的ID(唯一标识镜像),如果两个镜像的ID相同,说明它们实际上指向了同一 个镜像, 只是具有不同标签名称而已; 创建时间,说明镜像最后的更新时间; 镜像大小,优秀的镜像往往体积都较小。
其中镜像的ID信息十分重要, 它唯一标识了镜像。在使用镜像ID的时候, 一般可以使 用该ID的前若干个字符组成的可区分串来替代完整的ID。
TAG 信息用于标记来自同一个仓库的不同镜像。 例如ubuntu 仓库中有多个镜像, 通过 TAG 信息来区分发行版本, 如18.04、 18.10 等。
镜像大小信息只是表示了该镜像的逻辑体积大小, 实际上由于相同的镜像层本地只会存 储一份, 物理上占用的存储空间会小于各镜像逻辑体积之和。
images子命令主要支持如下选项
-a, --all =true I false: 列出所有(包括临时文件)镜像文件,默认为否; --digests=true | false: 列出镜像的数字摘要值,默认为否; -f, --filter=[] : 过滤列出的镜像,如dangling 式rue 只显示没有被使用的镜像;也可指定带有特定标注的镜像等; --format=“TEMPLATE” : 控制输出格式,如. ID代表ID信息,.Repository 代表仓库信息等; --no-trunc=true | false: 对输出结果中太长的部分是否进行截断,如镜像的ID 信息,默认为是; -q, --quiet=true | false: 仅输出ID信息, 默认为否。
其中, 还支持对输出结果进行控制的选项,如 -f. --fil七er=[)、–no七rune= 七rueI false、 -q、 --quie七式rueI false等。
更多子命令选项还可以通过mandocker-images来查看。
- 使用tag命令添加镜像标签
为了方便在后续工作中使用特定镜像,还可以使用docker tag命令来为本地镜像任 意添加新的标签。 例如,添加一个新的myubuntu: latest镜像标签:
docker tag ubuntu:latest myubuntu:latest
再次使用docker images列出本地主机上镜像信息, 可以看到多了一个myubun口: lates七标签的镜像:
之后,用户就可以直接使用myubuntu:la七es七来表示这个镜像了。
细心的读者可能注意到, 这些myubuntu:latest镜像的ID跟ubunt:latest是 完全一致的,它们实际上指向了同一个镜像文件,只是别名不同而巳。docker tag命令添 加的标签实际上起到了类似链接的作用。
- 使用inspect命令查看详细信息
使用 docker [image] inspect 命令可以获取该镜像的详细信息,包括制作者、适 应 架构、各层的数字摘要等:
上面代码返回的是一个 JSON 格式的消息, 如果我们只要其中一项内容时, 可以使 用 -f 来指定, 例如, 获取镜像的Architecture:
docker [image] inspec七 -f { {" .Architecture"}} ubuntu:18.04
- 使用 history 命令查看镜像历史
既然镜像文件由多个层组成, 那么怎么知道各个层的内容具体是什么呢?这时候可以使 用 history 子命令, 该命令将列出各层的创建信息。 例如,查看 ubuntu: 18. 04 镜像的创建过程,可以使用如下命令:
docker history ubuntu: 18. 04
注意,过长的命令被自动截断了, 可以使用前面提到的 --no-trunc选项来输出完整命令。
Docker | Docker技术基础梳理(八) - Dockerfile定制镜像浅析
什么是Dockerfile?
Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件,可以使用docker build命令依次执行在Dockerfile中定义的一系列命令,最终生成一个新的镜像
如果你想要定制属于自己的镜像Dockerfile是你必不可少的工具。
docker build的使用
想要构建定制化的镜像,可以使用docker build运行Dockerfile构建镜像
命令格式: docker build [参数] PATH | URL
其中:
PATH 是Dockerfile所在路径
URL 是Dockerfile所在的URL
常用参数:
-t 为镜像设置名称和tag(不适用-t参数,创建出来的镜像名称以及版本为none)
-f 指定Dockerfile的路径(这是可以使用其他名称命名Dockerfile)
关于Dockerfile构建过程的浅析
在之前关于Docker镜像与容器的文章中,咸鱼对镜像的文件系统做了一个简单的解释,不熟悉的朋友可以再温习一下。
Docker | Docker技术基础梳理(四) - 深入理解镜像与容器
我们先看下可以直接使用的Dockerfile结构是什么样的:
现在简单讲讲咸鱼对Dockerfile构建过程的理解:
Dockerfile的执行顺序是自上而下进行的,当第一次使用Dockerfile构建镜像时Dockerfile中的全部命令都会执行一遍最后构建为一个完整的镜像。
在构建的过程中,每执行一条命令Docker都会执行一次commit命令,接下来的每一条命令都是在前面所有命令集成的镜像基础上再次执行的。
这样的执行有什么好处呢,假设当你执行过一次的镜像构建后想要在Dockerfile中间部分添加一行Dockerfile的命令,那么在执行新的Dockerfile命令时,Docker只会执行新增命令(包括新增命令)之后的构建命令,大大减少了性能的损耗。
Dockerfile常用命令解析
接下来就是关于Dockerfile命令的介绍更多实例可以参考官方的Dockerfile实例:https://github.com/docker-library/docs
关于Dockerfile命令的介绍也可以参考:https://docs.docker.com/engine/reference/builder/#usage
RUN
构建镜像过程中需要执行的命令,可以执行多条
同时RUN命令后可以使用两种形式输入要执行的命令 exec与shell
当使用exec方式输入执行的命令时,命令格式是json格式的,命令在当前进程执行
当使用shell方式输入执行的命令时,命令在子进程中执行(推荐使用shell方式)
CMD与ENTRYPOINT
CMD是添加启动容器是需要执行的命令,多条命令只有最后一条生效,可以在启动容器事被覆盖和修改。
CMD命令格式有三种,exec、shell、默认提供给ENTRYPOINT的命令
命令格式为shell形式,命令是以子进程的形式执行
命令格式为json形式,命令在当前进程执行(推荐使用)
命令格式为json形式,且所有json内容为参数形式,则默认提供给ENTRYPOINT
ENTRYPOINT的使用CMD与相同,但这个一定会被执行,且不会被覆盖和修改
LABEL与MAINTAINER
LABEL用于为镜像添加对应的数据
添加的数据格式为:LABEL key=value …. Key=value
MAINTAINER:用于表示镜像的作者(即将被遗弃使用)
ENV与ARG
ENV用于设置执行命令时的环境变量,并且在构建完成后,仍然生效
ARG用于设置只在构建过程中使用的环境变量,构建完成后消失
ADD与copY
ADD用于将本地文件或目录拷贝到镜像的文件系统中,且能解压特定格式文件,且能将URL作为要拷贝的文件(会先将URL的文件先下载下来再拷贝)
copY将本地文件或目录拷贝到镜像的文件系统中(推荐使用copY+RUN),因为ADD命令对于需要解压的文件支持的不是非常智能
VOLUME
添加数据卷
命令格式可以为数组格式,也可以直接接上路径,路径为容器或镜像中的路径
常用命令行格式为:
VOLUME [“/XXX”]
VOLUME /XXX
USER与workdir
USER指定以哪个用户的名义执行RUN,CMD和ENTRPOINT等命令
workdir设置工作目录
简单实例构建Kafka工作环境
version: '2'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 32181
ZOOKEEPER_TICK_TIME: 2000
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- 9092:9092
environment:
KAFKA_broKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:32181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_LISTENER_Security_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_broKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
这里咸鱼有一个建议,如果当你需要构建某一工作环境但毫无头绪时,在Github上以“xxxt docker”为关键字搜索,希望结果能让你满意。
咸鱼学Python
专注于Python商业化爬虫、Python数据科学的咸鱼
Docker | 使用dockerfile生成镜像,清理docker空间
用dockerfile
生成镜像并挂载数据卷
编写dockerfile
文件
- 创建
dockerfile01
文件
# 基础镜像
FROM centos
VOLUME ["volume01", "volume02"]
CMD echo "-----end----"
docker build
构建镜像
docker build -f ./dockerfile01 -t xiao-centos .
- 启动镜像
docker run -it 镜像ID /bin/bash
可以看到生成镜像时自动挂载的,数据卷目录
以上dockerfile
方式属于匿名挂载数据卷
清理docker使用空间
我个人使用的是单核2G的云服务器,用了快三年了,内存、cpu严重吃紧,所以就尝试了清理docker使用空间,主要是删除未使用过的镜像、容器、数据卷、网络命令,具体如下:
官方文档链接 https://docs.docker.com/config/pruning/
- 执行如下可以查看 Docker 的磁盘使用情况(类似于 Linux 上的 df 命令)
docker system df
- 删除所有未使用过的镜像
docker image prune -a
删除所有停止的容器
docker container prune docker rm -f $(docker ps -aq)
- 仅删除超过 24 小时的停止容器
docker container prune --filter "until=24h"
数据卷永远不会自动删除,因为这样做可能会破坏数据
- 删除未使用的数据卷
docker volume prune
- 删除没有使用过的网络
docker network prune
- 删除所有未使用过的资源
docker system prune
手动删除/var/lib/docker/volumes的问题解决
当时清理docker使用空间的时候,清过头了,一下子把挂载的数据卷也给顺手清理了,真是自己给自己找事做。
错误信息
手动删除了挂载到宿主机上的所有数据卷,在启动容器挂载数据卷的时候就会报错
如下,重新运行容器,原先具名挂载数据卷juming-nginx
,报错信息如下
docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
docker: Error response from daemon: open /var/lib/docker/volumes/juming-nginx/_data: no such file or directory.
尝试方法一(不建议使用):
- 删除所有容器
- 删除所有镜像
重新运行一个新的容器并挂载数据卷
# 1 docker rm -f $(docker ps -aq) # 2 docker rmi -f $(docker images -aq) # 3. docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx # 还是报错
结论:
无法解决问题,且删除所有容器、镜像存在的风险较大,不建议使用!
尝试方法二(推荐使用):
- 停止docker服务
- 重新启动docker服务
- 再次运行容器
# 1
systemctl stop docker
# 2
systemctl restart docker
# 3
docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx nginx
# 没有报错,docker ps查看 成功运行
结论
没有报错,docker ps
查看,成功运行
docker volume ls
查看镜像,可以看到具名数据卷juming-nginx
已显示出来了
docker volume ls
DRIVER VOLUME NAME
local a9b39215509378332ec9dfcdc3e10857b500694ea66efd9c2b7a6a9c55a2f10a
local juming-nginx
我是 甜点cc
热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。
希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。
今天关于docker 安装镜像和docker安装镜像的讲解已经结束,谢谢您的阅读,如果想了解更多关于Docker - Docker安装 + 阿里云镜像加速、Docker | docker实战(三):使用Docker镜像(读书笔记)、Docker | Docker技术基础梳理(八) - Dockerfile定制镜像浅析、Docker | 使用dockerfile生成镜像,清理docker空间的相关知识,请在本站搜索。
本文标签: