Mac下Docker安装和基本使用

进入新公司后开发电脑还没到位,于是暂时未有开发任务。由于我们前端大哥那边说会用到Docker,本人之前也没听说过Docker这个东西,所以抽空学习了解一下并记录下来。
查阅了一些技术文章,以下可能会引用到一些表达,如有侵权请联系删除。

以下是Docker的简短介绍和个人理解

Docker是一个跨平台的轻量级虚拟机,可移植性非常高,一次部署,终生可用。Docker可以在Linux、Windows、MacOS等平台上安装使用。
Docker是一种工具,可以轻松地在容器中运行应用程序。 容器提供隔离和安全性,如虚拟机,但它们要小得多,因为它们在主机系统中运行。
个人理解:
1.可以理解成一个镜像容器就是一个打包好可以运行的应用,它是在可以在电脑中异步执行,相互容器之间互不影响。Docker hub上面有很多已经打包好的镜像供大家快速使用。
2.应用在容器里面运行,持久化数据保存在宿主本地,容器关了,数据还在,实现了数据和容器分离。
3.宿主(host)上面的文件目录映射为容器的目录,容器和宿主就可以共享数据(双向读写)了。叫做数据卷映射机制。也叫做吧容器目录挂载到host目录。
4.端口映射和文件目录映射差不多这个意思。
5.使用Docker镜像可以让用户不用过多了解内部细节,通过启动容器带上环境变量参数即可实现容器里面应用的配置。
6.一般使用:在docker hub网站上面会有很多封装好应用的镜像,搜索对应的镜像,然后使用命令行拉取到本地,然后docker hub上对应的镜像一般会有配置命令行使用说明,根据上面的使用。

网络文章截图

安装DockerForMac

下载链接:https://download.docker.com/mac/stable/Docker.dmg

安装中的docker

image.png

镜像(image)和容器(container)的区别:

镜像是一个抽象,容器是实际的对象, 可以理解为镜像是类,容器是这个类的实体对象


我们使用unix命令来进行基本的housekeeping操作

docker run

在终端输入docker run hello-world

docker run 是个最基本的命令,它指定运行哪个docker镜像, 并生成一个容器在系统中,即同时生成一个镜像和一个容器

Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像.

遇到问题及解决方案

docker run 拉取镜像失败

image.png

网上查了一下,是需要修改源来进行镜像加速,但是不知道是不是docker版本的原因,操作流程跟网上说的不太一样

解决办法:添加国内镜像

docker -> preference -> docker engine -> 加入以下json字段 -> 点击reply&restart -> 再跑docker run

"registry-mirrors": [

    "https://registry.docker-cn.com",

    "https://docker.mirrors.ustc.edu.cn",

    "https://hub-mirror.c.163.com"

  ]
image.png

参考链接:https://blog.csdn.net/sheqianweilong/article/details/88143162

此时docker run hello-world变成如下:

image.png

docker images 查看镜像指令

该指令列出系统上的所有镜像

image.png

docker ps -a 和 docker container ls -a 查看容器指令

列出这两个指令是一样的,列出系统里面所有的docker容器,不加-a表示仅列出正在运行的容器。

image.png

docker stop xxx 停止容器

image.png

docker rm xx xxx 删除容器指令

可以指定容器的id或者name或者id的前三位来删除指定的容器。

如下我重复docker run了几个helloworld容器在系统上,他们有不同的id和name。

image.png

现我删除其中两个, 输入docker rm 342 sharp_ishizaka

image.png

再用docker ps -a指令查看是否删除了,可看到已删除

image.png

docker run —name xxx hello-world 改容器名

名字后重复输入改名字未walesTest和peter

image.png

更改名字后,可见其实它是在增加新名字的该镜像容器,而不是改旧容器名

image.png

docker rmi hello-world 删除镜像

注意:必须要把所有容器删除完后才能删镜像,否则会报错,因为容器在引用这这个镜像。

image.png

用docker images指令可看到删除镜像成功.

image.png

插播终端使用技巧:

1. 打开2个终端,左边终端输入history指令查看历史指令, 右边终端执行任务。

2.clear终端后点击键盘的上或者下即可逐个找到历史指令。

image.png

在Docker container中运行一个web app

在容器中运行web app更有利于分割隔离部署测试环境,每个容器都有它单独的配置,相互不影响。

要在容器中运行Web应用程序,首先需要了解的是如何在浏览器的localhost中访问容器的端口。

Docker术语是发布端口(**publishing ports**)

可快速查看默认的Docker镜像注册表叫Docker Hub

打开下面docker hub,搜索框输入kitura然后复制Docker Pull Command

https://hub.docker.com/r/ibmcom/kitura-ubuntu

image.png

复制后在终端运行docker pull ibmcom/kitura-ubuntu

image.png

然后输入命令 docker run ibmcom/kitura-ubuntu启动容器。

它尝试但未能从JSON文件加载数据,然后开始侦听localhost:8080

可以看到此进程还在前台运行, 并没有退出

image.png

容器在其自己的环境中公开端口8080,但我们必须将此端口发布到主机系统上的端口(本地端口映射容器的端口),以查看其中的内容。

境中我们现在先打开另外一个终端,输入命令停止和删除这个容器

image.png

再输入docker run -p 66:8080 --name kitura -d ibmcom/kitura-ubuntu运行容器。

-p是--publishd 的缩写,表示把本地的localhost:66端口映射到容器的8080端口;

--name表示自定义容器名称为kitura;

-d表示--detach,表示可在后台运行容器进程,然后就可以返回unix shell提示符Imbawales:~apple$,不写它就会像前面那样终端前台进程没有退出。

image.png

打开浏览器,输入localhost:66, 即可打开该web app欢迎页面。

image.png

假设再次输入docker run -p 77:8080 --name kitura -d ibmcom/kitura-ubuntu,它将会又运行一个新的容器,本地77端口映射到容器的8080端口。

然后在浏览器输入localhost:77同样能打开该web app。

输入docker stop kitura停止容器后,在浏览器刷新将访问不了该web app。

可见容器运行时候通过下面PORTS的可以看到其端口映射关系, 停止时候PORTS为空,由此判断容器是否在运行。

image.png

因为容器并没被移除,所以输入docker start kitura可以再次启动容器,浏览器再次能访问localhost:66。

image.png

退出容器,结束进程。

总结:

1.把镜像从docker hub拉取到系统中。(docker pull ibmcom/kitura-ubuntu)

2.生成并运行容器,设置好本地端口和容器端口的映射关系。(docker run -p 66:8080 --name kitura -d ibmcom/kitura-ubuntu)

3.打开浏览器输入localhost:端口号即可访问web app。

你可能感兴趣的:(Mac下Docker安装和基本使用)