资讯专栏INFORMATION COLUMN

蛮吉学 Docker

1fe1se / 1062人阅读

摘要:蛮吉为什么这么做集中管理,使用方便,安装更方便,不用到各各目录上去找配置文件啊,启动文件之类的。蛮吉如果我想修改的配置怎么办可以使用进入容器里面找到并修改,命令退出容器。

What is Docker?

docker 是一个可以放东西的容器,那东西是什么?可以是redis、nginx、mysql。总之你能在系统上安装的都可以在dokcer里面安装。

蛮吉:为什么这么做?

集中管理,使用方便,安装更方便,不用到各各目录上去找配置文件啊,启动文件之类的。

名词解释:
镜像:类似于安装包。
容器:一个应用对应一个容器,比如,我安装一个redis,一个nginx ,那么就是两个容器,分别装有redis和nginx。

安装nginx

我们先安装一个nginx试试,
第一步搜索一下仓库有没有nginx的镜像

docker search nginx

我们发现列出了很多,那么我们需要的是第一个,把它拉下来(默认最新版)需要特订版本后面加上冒号和版本号。

docker pull nginx

这时候可以使用 docker images 命令查看已经下载下来的镜像们。

有了镜像我们就安装吧

docker run -p 80:80 -d --name nginx nginx

安装成功!对!你没有看错。

我来解释一下上面那条命令的参数,

-p 后面跟端口,冒号前面是宿主机的端口,后面是容器内nginx 的端口

-d 后台运行

--name 启动后容器的别名

最后一个nginx 是镜像的名称。

docker ps 可以查看正在运行的容器,dockers ps -a 查看所有容器。

蛮吉:如果我想修改nginx 的配置怎么办?

可以使用 docker exec -it [CONTAINER ID] bash 进入容器里面找到并修改,exit命令退出容器。
也可以在启动的时候使用-v 参数挂载目录,给容器和宿主机指定目录做个映射。只需要在宿主机指定目录操作,不需要进入容器。-v 可以使用多个。我先在主机新建好了目录和配置文件。

主机nginx配置文件:/app/nginx/conf/nginx.conf

容器nginx配置文件:/etc/nginx/nginx.conf

主机redis日志目录:/app/nginx/logs

容器redis日志目录:/var/log/nginx

docker run -d -p 8082:80 --name nginx3 -v /app/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /app/nginx/logs:/var/log/nginx nginx

如果安装redis 也是那么简单,两条命令就可以完成安装

docker pull redis
docker run -p 6379:6379 -d --name  redis-6379  redis
制作镜像
蛮吉:那我们能不能自己制作镜像?

答案是肯定的,

我们就用运行jar包为例。
比如我写了一个spring-boot 的项目,把它打成jar包 :datashare-0.0.1-SNAPSHOT.jar
怎么打jar包?先这样,然后那样,最后再这样一下就好了。

蛮吉:怎么运行?

java -jar datashare-0.0.1-SNAPSHOT.jar & ?
nohup java -jar datashare-0.0.1-SNAPSHOT.jar >info.log & ?

no no no
我要用docker 部署。
用docker 部署 就要先有镜像,制作镜像只需要一个Dockerfile文件就可以啦
以下是Dockerfile的内容:

# openjdk 基础镜像 是我pull到本地的,运行Jar 需要jdk 环境
 FROM openjdk
 
# ?作者签名
 MAINTAINER MSHU
 
# ?简化 jar 的名字路径 
 COPY datashare-0.0.1-SNAPSHOT.jar datashare.jar
 
# ?执行 java -jar 命令
 CMD java -jar datashare.jar
 
# ?设置对外端口为 8089
 EXPOSE 8089

运行Jar 需要jdk 环境,所以我提前docker pull openjdk到本地了。
将我们新建的 Dockerfile 和datashare-0.0.1-SNAPSHOT.jar放一起,该目录不要有其他文件。

运行 docker build -t datashare . 开始制作。

datashare 代表制作的镜像名称,.代表使用当前目录的 Dockerfile 。

镜像做好了放入容器吧。
docker run -p 8089:8089 -d --name datashare datashare

成功了!

蛮吉:如果我想把这个镜像拷贝出来,在我同事电脑运行行不行?

满足你!
docker save -o datashare.img datashare
在当前目录导出名为 datashare.img 的镜像。
然后复制到你同事电脑上并运行docker load -i datashare.img就导入了。

镜像加速

官方仓库在国外,下载缓慢,使用以下方法可以更快!和 maven 一个道理。

修改 /etc/docker/daemon.json文件,如果没有就新建 !
内容:

{
 "registry-mirrors": ["http://hub-mirror.c.163.com"]
 }

重启docker不能忘 !

systemctl restart docker
珍藏命令
docker pull [nginx] 下载容器
docker ps 查看正在运行的容器
docker ps -a 查看所有容器
docker exec -t -i [id] bash 根据id进入对应的软件目录
docker start [id] 启动某个容器
docker stop [id] 停止某个容器
docker restart [id] 重启容器
docker images 查看所有已安装的镜像
docker inspect [id] 查看启动容器的挂载信息
docker rm [id] 删除容器
docker rmi [镜像id] 删除镜像
docker logs -f -t --tail 200 容器ID 查看容器日志
systemctl enable docker 设置开机启动
service docker start 启动docker服务
usermod -G docker [用户名] 给指定用户添加权限
docker cp [id]:目录 /主机目录 复制容器某路径下的文件(夹)到主机某路径下的文件(夹)

docker run 后面也有很多参数,我知道的也不多,各位自行搜索吧,我去看《魁拔》啦,真心话真好看!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75990.html

相关文章

  • Docker实战之Quick Start

    摘要:如果使用操作系统自带包安装,目前安装的版本是比较旧的。之前版本如果是较低版本的系统,需要先更新内核。然后重复上面的步骤即可。 Quick Start Installation Ubuntu 通过系统自带包安装 Ubuntu 14.04 版本系统中已经自带了 Docker 包,可以直接安装。 $ sudo apt-get update $ sudo apt-get install -y ...

    alaege 评论0 收藏0
  • CentOS 7 安装 Docker-CE

    摘要:使用官方安装脚本使用官方安装脚本自动安装,仅适用于公网环境。安装指定版本的注意在某些版本之后,安装出现了其他依赖包,如果安装失败的话请关注错误信息。例如之后,需要先安装。使用官方安装脚本使用官方安装脚本自动安装,仅适用于公网环境。# 安装之前需卸载旧版本 sudo yum remove docker CE docker-client ...

    Tecode 评论0 收藏0
  • [Docker 官方文档] 理解 Docker

    摘要:将一个轻量级的容器虚拟化平台和一组标准工作流程工具进行集成,来帮助你方便地管理和部署应用。主要包括哪些组件主要包括两个组件开源的容器虚拟化平台用于分享和管理容器的软件即服务平台。 【编者的话】本文来自 Docker 的官方文档,详细介绍了 Docker 的体系结构、重要概念、内部工作机理等内容,推荐不了解 Docker 内部原理的同学阅读。 什么是 Docker? Docker 是...

    cncoder 评论0 收藏0
  • Docker入门(二)

    摘要:下面给出了其中几个子命令。将指定名称的容器拉取到系统中。列出正在运行的容器。起初只是之上的一个软件层但现在已经演化成为一个独立的系统。服务器的主要配置文件位于和参考从构建镜像命令的用法 检查安装情况 centos7下 // 删除旧版本和相关依赖 yum remove docker docker-client d...

    Airy 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 30 分钟快速入门 Docker 教程...

    Binguner 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<