Docker简介

  • 是一个软件,一个可以在Windows、mac、Linux等各种操作系统上运行的软件
  • 是一个开源的应用容器引擎,它是基于Go开发的,项目目前是在Github上开源维护的
  • 可以让开发打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到各种流行的Linux机器上
  • 容器是完全使用沙箱机制,相互之间不会有任何的API交互,最主要的是容器性能方面开销成本很低

Docker组成部分

  • docker主机(Host):安装了Docker程序的机器,Docker是直接可安装在各种操作系统上的,可以理解它就是一个软件
  • docker仓库(Registry):用来保存各种打包好的软件镜像,仓库分为公有和私有,跟maven很相似,它也有仓库官网地址,维护了各种镜像
  • docker镜像(Images):软件打包好的镜像,放在docker仓库中
  • docker容器(Container):镜像启动后的实例称为容器,容器是独立运行的一个或一组应用

Docker安装

安装docker的时候,我们会接触到两个重要组件:Docker CLI客户端和Docker daemon服务端

安装环境是我自己搭建的一个虚拟机:使用的是centos7.8,安装我就不做赘述了

配置阿里云yum源

1、下载安装wget

yum install -y wget

有些时候运行这个命令会报错:yum repolist all“ to see the repos you have

具体的解决方案看这篇文章:

https://blog.csdn.net/qq_38377525/article/details/123388012https://blog.csdn.net/qq_38377525/article/details/1233880122、备份默认的yum

mv /etc/yum.repos.d /etc/yum.repos.d.backup

3、设置新的yum目录

mkdir -p /etc/yum.repos.d

4、下载阿里yum配置到刚才的目录,选择对应版本

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

查看系统版本的命令:cat /etc/centos-release

5、更新epel源为阿里云epel源

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

6、重建缓存

yum clean all
yum makecache

7、查看yum仓库包

yum repolist


安装Docker

1、安装插件

yum install -y yum-utils device-mapper-persistent-data lvm2

2、添加源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

本地缓存一份:yum makecache fast

3、查看docker版本

yum list docker-ce --showduplicates | sort -r

4、正式安装docker

推荐大家安装最新版本

yum -y install docker-ce

也可以指定版本,语法如下:

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io举例:yum install -y docker-ce-19.03.9-3.el7 docker-ce-cli-19.03.9-3.el7

5、开启服务

#开启服务
systemctl start docker
#关闭服务
systemctl stop docker

6、安装阿里云镜像加速器

原因是下载镜像的时候,会走阿里的快一点

#创建文件
mkdir -p /etc/docker #文件内容
tee /etc/docker/daemon.json <<-'EOF'
{ "registry-mirrors": ["https://复制自己的加速器地址.mirror.aliyuncs.com"]
}EOF #3、重新加载
systemctl daemon-reload
systemctl restart docker

7、设置docker开启开机启动服务

systemctl enable docker

8、查看版本版本信息

docker -v
docker version
docker info

到这里,docker就算是安装成功了


Docker镜像(image)

docker提供了一个类似maven远程仓库的地址:Docker Hub

那,怎么去理解镜像这个概念呢?

从咱们开发的角度出发的话,可以把镜像理解为一个Class类,它就是一个应用程序,使用过程和Maven差不多,我们添加maven依赖的时候,先去下载到本地,然后再使用,docker也是,我们去远程仓库中找到镜像之后,下载该镜像到本地的Docker主机,然后可以为该镜像启动一个或者多个容器


Docker常用命令

pull命令

下载镜像的命令,默认是会去Docker Hub仓库拉取镜像

实例:下载tomcat镜像

docker pull tomcat:9.0.20-jre8

这条命令相当于maven的下载jar包一样,docker pull docker.io/tomcat:9.0.20-jre8,默认会走DockerHub地址

常用参数:

  • -a,--all-tags=true/false:是否获取仓库中所有镜像,默认是false
  • --disable-content-trust:跳过镜像内容的校验,默认是true

images命令

查询本机已存在的所有镜像:

docker images
docker image ls

以上两个命令的效果是一样的,接下来对查询出来的格式标题进行讲解一下:

  • REPOSITORY:表示镜像的仓库源,也可以理解为是什么软件
  • TAG:镜像的标签,一般都是版本号信息
  • IMAGE ID:镜像ID,相当于MySQL的主键ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

save命令

相当于备份, 将指定镜像保存成 tar 归档文件

mkdir -p /data
cd /data #单个文件
docker save tomcat:9.0.20-jre8-alpine -o tomcat9.tar
docker save tomcat:9.0.20-jre8-slim > tomcat9.slim.tar#多个文件
docker save \
ubuntu:20.04 \
alpine:3.12.1 \
centos:7.8.2003 \
debian:10.6-slim \
-o linux.tar

常用参数:

  • -o:输出到的文件,相当于压缩之后的文件名称和格式

load命令

导入使用 docker save命令导出的镜像。

mkdir -p /data
cd /data docker load -i linux.tar
docker load < tomcat9.0.20.tar

常用参数:

  • -i:指定导入的文件
  • -q:精简输出信息

search命令

很多地方都不推荐用search,因为输出的信息有限,一般来说都推荐使用inspect命令

inspect命令

查看镜像全部信息

docker inspect tomcat:9.0.20-jre8-alpine

输入的是一个json文本,返回结果如下:

[{"Id": "sha256:387f9d021d3ae76a2dafd661142a2659939389def2f390d40ab73bd49df242ba","RepoTags": ["tomcat:9.0.20-jre8-alpine"],"RepoDigests": ["tomcat@sha256:17accf0afeeecce0310d363490cd60a788aa4630ab9c9c802231d6fbd4bb2375"],"Parent": "","Comment": "","Created": "2019-05-16T00:57:50.863755612Z","Container": "24ab35a23fd83a3748e701f6fdca86f3618ffb29a29bd32ed2db6f9b4336056d","ContainerConfig": {"Hostname": "24ab35a23fd8","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"8080/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin","LANG=C.UTF-8","JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk/jre","JAVA_VERSION=8u212","JAVA_ALPINE_VERSION=8.212.04-r0","CATALINA_HOME=/usr/local/tomcat","TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib","LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib","GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23","TOMCAT_MAJOR=9","TOMCAT_VERSION=9.0.20","TOMCAT_SHA512=6d2df51f0bfc6a90cfca61c86473b8843da4162c430ab06b8f66f364931f3d8a3ad399703acdd600ff4f633d7d6725edf05d5d5d19534716a2f3f9f5238a32a0","TOMCAT_TGZ_URLS=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz \thttps://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz \thttps://www.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz \thttps://archive.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz","TOMCAT_ASC_URLS=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz.asc \thttps://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz.asc \thttps://www.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz.asc \thttps://archive.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz.asc"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"catalina.sh\" \"run\"]"],"ArgsEscaped": true,"Image": "sha256:a9ebb0fcc929c1b8ddd758efe32531ddadb78547da29a01dd8854c2d32ab5eb8","Volumes": null,"WorkingDir": "/usr/local/tomcat","Entrypoint": null,"OnBuild": null,"Labels": {}},"DockerVersion": "18.06.1-ce","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"8080/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/tomcat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin","LANG=C.UTF-8","JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk/jre","JAVA_VERSION=8u212","JAVA_ALPINE_VERSION=8.212.04-r0","CATALINA_HOME=/usr/local/tomcat","TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib","LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib","GPG_KEYS=05AB33110949707C93A279E3D3EFE6B686867BA6 07E48665A34DCAFAE522E5E6266191C37C037D42 47309207D818FFD8DCD3F83F1931D684307A10A5 541FBE7D8F78B25E055DDEE13C370389288584E7 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED 9BA44C2621385CB966EBA586F72C284D731FABEE A27677289986DB50844682F8ACB77FC2E86E29AC A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23","TOMCAT_MAJOR=9","TOMCAT_VERSION=9.0.20","TOMCAT_SHA512=6d2df51f0bfc6a90cfca61c86473b8843da4162c430ab06b8f66f364931f3d8a3ad399703acdd600ff4f633d7d6725edf05d5d5d19534716a2f3f9f5238a32a0","TOMCAT_TGZ_URLS=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz \thttps://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz \thttps://www.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz \thttps://archive.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz","TOMCAT_ASC_URLS=https://www.apache.org/dyn/closer.cgi?action=download&filename=tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz.asc \thttps://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz.asc \thttps://www.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz.asc \thttps://archive.apache.org/dist/tomcat/tomcat-9/v9.0.20/bin/apache-tomcat-9.0.20.tar.gz.asc"],"Cmd": ["catalina.sh","run"],"ArgsEscaped": true,"Image": "sha256:a9ebb0fcc929c1b8ddd758efe32531ddadb78547da29a01dd8854c2d32ab5eb8","Volumes": null,"WorkingDir": "/usr/local/tomcat","Entrypoint": null,"OnBuild": null,"Labels": null},"Architecture": "amd64","Os": "linux","Size": 107881954,"VirtualSize": 107881954,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/6090fc321bb15ef2c6e27c262cb559a9acfe5151b2b4d2a90eb8cc99e910c342/diff:/var/lib/docker/overlay2/3d0e4871a759c3f3e3a0d604ab689f19c09350a405f94a5311ba877d636e2a51/diff:/var/lib/docker/overlay2/be9c92fa96e7e2a315124e57745d457d8fe88a5682cf028d78a437dcea11e687/diff:/var/lib/docker/overlay2/9c702a0274a3a8a7029d6a46290e99d941797af406322d30f38a0922b3891b46/diff:/var/lib/docker/overlay2/8bb926a33b761565ece581b256eb32c4c76d9f64b8db7450904d14de45abb8dd/diff","MergedDir": "/var/lib/docker/overlay2/534de22b26cea4a350034b50e39c7618f0651a6836e0fda7b2f08c8a79076d31/merged","UpperDir": "/var/lib/docker/overlay2/534de22b26cea4a350034b50e39c7618f0651a6836e0fda7b2f08c8a79076d31/diff","WorkDir": "/var/lib/docker/overlay2/534de22b26cea4a350034b50e39c7618f0651a6836e0fda7b2f08c8a79076d31/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:f1b5933fe4b5f49bbe8258745cf396afe07e625bdab3168e364daf7c956b6b81","sha256:9b9b7f3d56a01e3d9076874990c62e7a516cc4032f784f421574d06b18ef9aa4","sha256:edd61588d12669e2d71a0de2aab96add3304bf565730e1e6144ec3c3fac339e4","sha256:48988bb7b8615c1af859b04776a46ddeb4d2bd1aa9b0a9a3ac099cf3f73ab29d","sha256:d1d0b1719b963394ea25c3936f2d67f8bdb6c90bd7166137167c7b7f135742e1","sha256:b7d850202de0030b2e8e076a40364bb695c891339ba321e6a743e9db0cc72766"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}
]

查看json中指定的key的值:

#查看ID
docker inspect -f {{".Id"}} tomcat:9.0.20-jre8-alpine

rmi命令

删除镜像有两种方式的命令:

docker rmi tomcat:9.0.20-jre8-alpine
docker image rm tomcat:9.0.20-jre8-alpine

常用参数:

  • -f:强制删除镜像,哪怕这个镜像被其他的容器引用,但是一般来说不推荐这么暴力,推荐两步走的优雅删除镜像的方式:先删除引用这个镜像的容器,再删除这个镜像
  • -no-prune:不删除未带标签的父镜像

按照镜像ID查询:

#这个id是使用docker images命令回显的IMAGE ID
docker rmi 11d8667108c2

清理镜像命令

主要是清理一些临时、没有被使用的镜像

docker image prune

常用参数:

  • -a:删除所有没有用的镜像,不仅是临时文件
  • -f:强制删除镜像文件,没有任何提示确认是否删除

Docker容器

说到容器应该能联想到Spring容器,Servlet容器、Tomcat容器等等,docker也是容器,也具备生命周期

常用命令

新建并启动容器

语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

示例:运行tomcat

docker run -it --rm -p 8080:8080 tomcat:9.0.20-jre8-alpine

常用参数:

  • -d:后台运行并返回容器ID
  • -i:以交互模式运行容器,通常与-t同时使用
  • -P:随机端口映射,不过不推荐用
  • -p:指定端口映射,格式是主机端口:容器端口,比较推荐使用这个
  • -t:为容器重新分配一个伪输入终端,通常与-i同时使用
  • --name="xxx":为容器指定一个名称
  • -h:指定容器的hostname
  • -e:设置环境变量
  • --net="bridge":指定容器的网络链接类型,支持bridge/host/none/container
  • --link=[]:添加链接到另一个容器,同样不推荐使用
  • -v:绑定一个卷
  • --privileged=false:指定容器是否为特权容器,特权容器拥有所有的capabilities
  • --rm=false:指定容器停止后自动删除容器,但是对docker run -d启动的容器无效
  • --restart=no:指定容器停止后的重启策略
  1. no:容器退出时不重启
  2. on-failure:容器故障退出时(返回的状态非0)重启
  3. always:容器退出时总是重启,这个比较保险,所以要设置的话就设置这一个参数即可

容器日志

获取容器日志

语法:

docker logs [OPTIONS] CONTAINER

示例:

docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine docker logs -f tomcat9

常用参数:

  • -f:跟踪日志输出
  • --tail:仅列出最新N条容器日志

删除容器

不能删除正在运行的容器

语法:

docker rm [OPTIONS] CONTAINER [CONTAINER...]

示例:

docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine
#需要先停止运行中的容器再删除,否则无法删除容器
docker stop tomcat9
#按照容器名称删除
docker rm tomcat9
#按照容器ID删除
docker rm 8dd95a95e687

常用参数:

  • -f:通过SIGKILL信号强制删除一个运行中的容器
  • -l:移除容器之间的网络连接,并不是容器本身
  • -v:删除与容器关联的卷

列出容器

语法:

docker ps [OPTIONS]

示例:

docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine
#查看运行中的容器
docker ps tomcat9
#查看所有容器
docker ps -a tomcat9

解析一下返回的内容:

  • CONTAINER ID:容器ID
  • IMAGE:使用的镜像
  • COMMAND:启动容器的命令
  • CREATED:创建时间
  • STAUTS:状态,created、restarting、running、removing、paused、exited、dead
  • PORTS:容器的端口和使用的连接类型
  • NAMES:自动分配的容器名称

常用参数:

  • -a:显示所有容器,不管什么状态
  • -q:只显示容器编号

创建容器

创建一个新的容器但不启动它

语法:

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

示例:

docker create -it --name tomcat9 -p 8080:8080 9.0.20-jre8-alpine

常用参数大致和run命令一样

启动、重启、停止容器

语法:

docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]

示例:

docker start tomcat9
docker stop tomcat9
docker restart tomcat9

进入容器

在运行的容器中执行命令。早期有attach命令,对于阻塞命令会等待,所以不方便。在 Docker 1.3.0后提供了exec 可以在容器内直接执行任意命令

语法:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

示例:

#有bash命令的linux系统:例如centos
docker run -it --name tomcat9.1 -p 8080:8080 tomcat:9.0.20-jre8-slim
docker exec -it tomcat9.1 /bin/bash #没有bash命令的linux系统:例如alpine系统
docker run -it --name tomcat9.2 -p 8081:8080 tomcat:9.0.20-jre8-alpine
docker exec -it tomcat9.2 sh

常用参数:

  • -i:即使没有附加也要保持STDIN打开
  • -t:分配一个伪终端

查看容器

获取容器/镜像的元数据

语法:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

示例:

docker run -it --name tomcat9 -p 8081:8080 tomcat:9.0.20-jre8-alpine
docker inspect tomcat9

常用参数:

  • -f:指定返回值的模版文件
  • -s:显示总的文件大小
  • --type:为指定类型返回json

更新容器

可以动态地更新容器配置,但是官方好像说这个命令不成熟,所以还是推荐rm容器之后再run

语法:

docker update [OPTIONS] CONTAINER [CONTAINER...]

示例:

docker run -it --name tomcat9 -p 8081:8080 tomcat:9.0.20-jre8-alpine #更新容器restart策略
docker update --restart always tomcat9

杀掉容器

杀掉一个运行中的容器

语法:

docker kill [OPTIONS] CONTAINER [CONTAINER...]

示例:

docker run -it --name tomcat9 -p 8081:8080 tomcat:9.0.20-jre8-alpine docker kill tomcat9 docker ps docker ps -a docker start tomcat9

常用参数:

  • -s:向容器发送一个信号

Docker系列之入门相关推荐

  1. c# hdf5 写string_Pandas系列之入门篇——HDF5

    Python系列之入门篇--HDF5 简介 HDF5(层次性数据格式)作用于大数据存储,其高效的压缩方式节约了不少硬盘空间,同时也给查询效率带来了一定的影响,压缩效率越高,查询效率越低.pandas ...

  2. Docker 极简入门教程,傻瓜都能看懂!

    富 Web 时代,应用变得越来越强大,与此同时也越来越复杂.集群部署.隔离环境.灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁. 本文我们就来探索一下 Docker 的神秘世界,从零到一掌 ...

  3. Docker系列之镜像瘦身(五)

    本节我们来讲讲在我们在构建镜像过程中不出问题,同时使得最后所构建的镜像文件大小尽可能最小. 缓存(cache) Docker的优势之一在于提供了缓存,加速镜像迭代构建,我们知道构建镜像使用docker ...

  4. Docker系列之二:基于容器的自动构建

    自动构建系统是从美团的自动部署系统发展出来的一个新功能.每当开发人员提交代码到仓库后,系统会自动根据开发人员定制的构建配置,启动新的Docker容器,在其中对源代码进行构建(build),包括编译(如 ...

  5. 【Docker系列教程之三】Docker容器是如何工作的

    在上一篇的文章中,我给大家主要介绍了一下 Docker 环境的搭建,简单的讲解了一下 Docker 架构,以及用 Docker 命令简单演示了一下如何拉去一个 images 镜像.本篇我们将剖析一下  ...

  6. Docker系列之八:在Dockerfile中使用多段构建Muti-stage build

    系列链接 Docker系列之一:Docker介绍及在Ubuntu上安装 Docker系列之二:Docker 入门 Docker系列之三:使用Docker镜像和仓库 Docker系列之四:Dockerf ...

  7. Docker系列之三:使用Docker镜像和仓库

    系列链接 Docker系列之一:Docker介绍及在Ubuntu上安装 Docker系列之二:Docker 入门 Docker系列之三:使用Docker镜像和仓库 Docker系列之四:Dockerf ...

  8. Docker系列之MySQL安装教程

    Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...

  9. Docker 系列 - 01 - 下载 安装

    本文完成时间:2022-03-02 02:13:25 Docker 系列文档:https://github.com/LiangJunrong/document-library/tree/master/ ...

最新文章

  1. ejabberd mysql 搭建配置_ejabberd安装步骤+Mysql配置
  2. AJAX是一门艺术: XHR篇
  3. python处理表格数据-python通过xrld库读取表格数据
  4. wps office oa控件 痕迹_WPS大更新,Office的付费功能免费用,我不会是最后一个知道的吧?...
  5. RMAN异机恢复步骤及故障处理
  6. windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
  7. Winform中使用NPOI导出Excel时XSSFWorkbook wb = new XSSFWorkbook()报错
  8. Spring Security中HttpSecurity常用方法及说明
  9. 导致此错误的原因是什么 - “致命错误:无法找到本地咕噜声”
  10. Android wakelock机制
  11. leetcode 46 Permutations ----- java
  12. 谁会成为中国互联网下一代英雄
  13. java 经纬度度分秒转度_用java实现经纬度坐标度分秒与度批量转换
  14. python之 pyCharm pip安装pandas库失败
  15. 硬件设计——PWM原理与设计
  16. Matlab R2017a启动时初始化过程时间太长解决办法
  17. ios8 xcode设置launchimage
  18. 以逗号分割数组并且去除数组最后得空数据
  19. 常见浏览器对URL的长度限制
  20. vs2017+cuda10.2+opencv4.5.0+contrib编译

热门文章

  1. 微信公众号客服接口给指定用户openid发送消息
  2. 【Centos8】Centos8+使用MegaCLI查看硬件RAID情况
  3. Google Play详情页优化——评论真的会影响转化吗?
  4. 美区google play礼品卡,如何正确充值到美区google play余额,并能购买游戏道具
  5. 解读《网络产品安全漏洞管理规定》
  6. Golang中各种类型转换
  7. Chrome-headless用法_Sinno_Song_新浪博客
  8. 作为首位半导体公司的女性CEO,擅于解决问题的苏姿丰让科技行业为之倾倒
  9. 行列式相关定理《线性代数》学习笔记)
  10. docker使用帮助手册