微信
支付宝
# 1.Docker部署 \> 摘录自:https://b11et3un53m.feishu.cn/wiki/MWQIw4Zvhil0I5ktPHwcoqZdnec ### 1.定义 \*\*不同操作系统下其安装包、运行环境是都不相同的\*\*!如果是\*\*手动安装,必须手动解决安装包不同、环境不同的、配置不同的问题\*\*! 而使用Docker,这些完全不用考虑。就是因为Docker会自动搜索并下载MySQL。注意:这里下载的不是安装包,而是\*\*镜像(image)。\*\*镜像中不仅包含了MySQL本身,还包含了其运行所需要的环境、配置、系统级函数库。因此它在运行时就有自己独立的环境,就可以跨系统运行,也不需要手动再次配置环境了。这套独立运行的隔离环境我们称为\*\*容器(container)\*\*。 Docker官方提供了一个专门管理、存储镜像的网站,并对外开放了镜像上传、下载的权利。Docker官方提供了一些基础镜像,然后各大软件公司又在基础镜像基础上,制作了自家软件的镜像,全部都存放在这个网站。这个网站就成了Docker镜像交流的社区: https://b11et3un53m.feishu.cn/wiki/MWQIw4Zvhil0I5ktPHwcoqZdnec#Ap8SdK7mtocGXAxEbnhclu2Qn0b 基本上我们常用的各种软件都能在这个网站上找到,我们甚至可以自己制作镜像上传上去。 像这种提供存储、管理Docker镜像的服务器,被称为\*\*DockerRegistry\*\*,可以翻译为镜像仓库。DockerHub网站是官方仓库,阿里云、华为云会提供一些第三方仓库,我们也可以自己搭建私有的镜像仓库。 官方仓库在国外,下载速度较慢,一般我们都会使用第三方仓库提供的镜像加速功能,提高下载速度。而企业内部的机密项目,往往会采用私有镜像仓库。 总之,镜像的来源有两种: - 基于官方基础镜像自己制作 - 直接去DockerRegistry下载 \*\*总结:\*\* Docker本身包含一个后台服务,我们可以利用Docker命令告诉Docker服务,帮助我们快速部署指定的应用。Docker服务部署应用时,首先要去搜索并下载应用对应的镜像,然后根据镜像创建并允许容器,应用就部署完成了。 ### 2.命令 - \`docker run -d\` :创建并运行一个容器,\`-d\`则是让容器以后台进程运行 - \`--name mysql \` : 给容器起个名字叫\`mysql\`,也可以叫别的 - \`-p 3306:3306\` : 设置端口映射。 - \*\*容器是隔离环境\*\*,外界不可访问。但是可以\*\*将宿主机端口映射容器内到端口\*\*,当访问宿主机指定端口时,就是在访问容器内的端口了。 - 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。 - xxxxxxxxxx15 1# 创建目录2mkdir -p /etc/docker34# 复制内容,注意把其中的镜像加速地址改成你自己的5tee /etc/docker/daemon.json \<\<-'EOF'6{7 "registry-mirrors": \["https://xxxx.mirror.aliyuncs.com"\]8}9EOF1011# 重新加载配置12systemctl daemon-reload1314# 重启Docker15systemctl restart dockerBash - \`-e TZ=Asia/Shanghai\` : 配置容器内进程运行时的一些参数 - 格式:\`-e KEY=VALUE\`,KEY和VALUE都由容器内进程决定 - 案例中,\`TZ=Asia/Shanghai\`是设置时区;\`MYSQL_ROOT_PASSWORD=123\`是设置MySQL默认密码 - \`mysql\` : 设置\*\*镜像\*\*名称,Docker会根据这个名字搜索并下载镜像 - 格式:\`REPOSITORY:TAG\`,例如\`mysql:8.0\`,其中\`REPOSITORY\`可以理解为镜像名,\`TAG\`是版本号 - 在未指定\`TAG\`的情况下,默认是最新版本,也就是\`mysql:latest\` 镜像的名称不是随意的,而是要到DockerRegistry中寻找,镜像运行时的配置也不是随意的,要参考镜像的帮助文档,这些在DockerHub网站或者软件的官方网站中都能找到。 \*\*常见的命令有:\*\* \| \*\*命令\*\* \| \*\*说明\*\* \| \*\*文档地址\*\* \| \| :------------- \| :----------------------------- \| :----------------------------------------------------------- \| \| docker pull \| 拉取镜像 \| \[docker pull\](https://docs.docker.com/engine/reference/commandline/pull/) \| \| docker push \| 推送镜像到DockerRegistry \| \[docker push\](https://docs.docker.com/engine/reference/commandline/push/) \| \| docker images \| 查看本地镜像 \| \[docker images\](https://docs.docker.com/engine/reference/commandline/images/) \| \| docker rmi \| 删除本地镜像 \| \[docker rmi\](https://docs.docker.com/engine/reference/commandline/rmi/) \| \| docker run \| 创建并运行容器(不能重复创建) \| \[docker run\](https://docs.docker.com/engine/reference/commandline/run/) \| \| docker stop \| 停止指定容器 \| \[docker stop\](https://docs.docker.com/engine/reference/commandline/stop/) \| \| docker start \| 启动指定容器 \| \[docker start\](https://docs.docker.com/engine/reference/commandline/start/) \| \| docker restart \| 重新启动容器 \| \[docker restart\](https://docs.docker.com/engine/reference/commandline/restart/) \| \| docker rm \| 删除指定容器 \| \[docs.docker.com\](https://docs.docker.com/engine/reference/commandline/rm/) \| \| docker ps \| 查看容器 \| \[docker ps\](https://docs.docker.com/engine/reference/commandline/ps/) \| \| docker logs \| 查看容器运行日志 \| \[docker logs\](https://docs.docker.com/engine/reference/commandline/logs/) \| \| docker exec \| 进入容器 \| \[docker exec\](https://docs.docker.com/engine/reference/commandline/exec/) \| \| docker save \| 保存镜像到本地压缩文件 \| \[docker save\](https://docs.docker.com/engine/reference/commandline/save/) \| \| docker load \| 加载本地压缩文件到镜像 \| \[docker load\](https://docs.docker.com/engine/reference/commandline/load/) \| \| docker inspect \| 查看容器详细信息 \| \[docker inspect\](https://docs.docker.com/engine/reference/commandline/inspect/) \| \*\*图例:\*\*  \*\*注意:默认情况下,每次重启虚拟机我们都需要手动启动Docker和Docker中的容器。通过命令可以实现开机自启:\*\* \`\`\`powershell # Docker开机自启 systemctl enable docker # Docker容器开机自启 docker update --restart=always \[容器名/容器id\] \`\`\` #### 3. docker下载Nginx示例 \`\`\`powershell # 第1步,去DockerHub查看nginx镜像仓库及相关信息 # 第2步,拉取Nginx镜像 docker pull nginx # 第3步,查看镜像 docker images # 结果如下: REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 605c77e624dd 16 months ago 141MB mysql latest 3218b38490ce 17 months ago 516MB # 第4步,创建并允许Nginx容器 docker run -d --name nginx -p 80:80 nginx # 第5步,查看运行中容器 docker ps # 也可以加格式化方式访问,格式会更加清爽 docker ps --format "table {{.ID}}\\t{{.Image}}\\t{{.Ports}}\\t{{.Status}}\\t{{.Names}}" # 第6步,访问网页,地址:http://虚拟机地址 # 第7步,停止容器 docker stop nginx # 第8步,查看所有容器 docker ps -a --format "table {{.ID}}\\t{{.Image}}\\t{{.Ports}}\\t{{.Status}}\\t{{.Names}}" # 第9步,再次启动nginx容器 docker start nginx # 第10步,再次查看容器 docker ps --format "table {{.ID}}\\t{{.Image}}\\t{{.Ports}}\\t{{.Status}}\\t{{.Names}}" # 第11步,查看容器详细信息 docker inspect nginx # 第12步,进入容器,查看容器内目录 docker exec -it nginx bash # 或者,可以进入MySQL docker exec -it mysql mysql -uroot -p # 第13步,删除容器 docker rm nginx # 发现无法删除,因为容器运行中,强制删除容器 docker rm -f nginx \`\`\` ### 4. 命令别名 给常用Docker命令起别名,方便我们访问: \`\`\`PowerShell # 修改/root/.bashrc文件 vi /root/.bashrc 内容如下: # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' alias dps='docker ps --format "table {{.ID}}\\t{{.Image}}\\t{{.Ports}}\\t{{.Status}}\\t{{.Names}}"' alias dis='docker images' # Source global definitions if \[ -f /etc/bashrc \]; then . /etc/bashrc fi \`\`\` 然后,执行命令使别名生效 \`\`\`PowerShell source /root/.bashrc \`\`\`
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Veylor
最近发布
常用SQL