Docker 入门学习

链接

看视频学的:【docker入门】10分钟,快速学会docker

概念

在这里插入图片描述
docker 中最重要的两个重要概念:镜像容器

镜像

类似于我们用虚拟机,创建虚拟机前需要下载的系统镜像文件,比如iso文件、img文件等等。

容器

可以类比做一个正在运行的虚拟机。

这两个概念是平时使用的虚拟机(例如vmware)有的,Docker还多了一些概念。

tar 文件

类似 vmware 的 vmdk 文件,可以将一个镜像直接保存成一个 tar 文件,别人通过 load 指令,可以重新加载成一个镜像,然后通过 run 指令就起来一个正在运行的虚拟机了(容器)

Dockerfile 配置文件

写“如何构建”的步骤,指定一个镜像是如何构建的。
通过 docker build 指令可以将 dockerfile 构建成一个镜像。

远程仓库docker pull

保存了很多镜像,例如 ubuntu、nginx、mysql、tomcat 镜像等等,可以通过 docker pull 下载镜像到本地,当然也可以 push。

操作

在线使用 docker 网址 通过 docker ID登录
能够免费用 4 小时,4 小时后要重新申请。

点击添加实例按钮、进入了 ssh 的页面

pull 从仓库下载镜像 和 run 指定镜像运行成一个容器

通过 docker pull 指令下载 nginx 镜像
docker pull nginx 等价于 docker pull nginx:latest
因为不指定版本就是下载最新版本

用 docker images 可以查看本地有哪些镜像 docker images

run 指令将这个镜像运行成一个容器(虚拟机),不过 docker run nginx 这样只是简单的运行了一个服务器,我们可以通过指定一些参数:

  • 比如 -d 让它后台运行不要阻塞住 shell 指令窗口
  • 比如 -p 来指定内外端口的映射,例如-p 80:80

docker run -d -p 80:80 nginx 这样运行了一个不阻塞 shell 指令窗口、内外端口映射为 80 对 80 的 nginx ,然后通过点击页面最上面 ip 地址旁边的端口按钮就可以进去了。

通过 docker ps 可以查看正在运行的容器有哪些。

可以再 run 几个,但不能指定外部已经用过的 80 端口了。
docker run -d -p 81:80

总结: 这样就通过 pull 和 run 指令,将一个 nginx 的容器运行起来了。

commit 提交修改后的容器到镜像

假如我们想要对这个容器做修改了,
用 docker exec -it 然后指定这个 ngix 的 id
id 可以用 docker ps 来看,run成功后下面一行也是他的 id, id很长,但并不用全部输入,输入的前缀足够区别就可以了。这里我们进入80端口对应的容器里。
通过 bash 进去
docker exec -it 这里些 id 的前缀 bash
进入后会看到前面已经变成了root@xxxx,说明已经进入到这个nginx容器里面了。
index 文件默认应该是在 /user/share/nginx/html/ ,我们 cd 进去
cd /user/share/nginx/html/

可以看到默认的index文件的内容,我们可以直接修改这个index文件的内容
echo hello > index.html
cat index.html
可以看到输出了 hello
进入页面,页面有缓存,还是原来的样子,我们按 control + F5 强制刷新页面,可以看到变成 hello 了
exit 先退出来
我们通过 docker ps 查看容器的id,然后强制删除容器 docker rm -f 这里写容器的ID 81端口的镜像,因为81端口我们暂时用不到。
通过 docker commit 指令,指定一个镜像的名字,比如叫做 m1
docker commit 80端口的容器的ID m1

通过 docker images 查看镜像,可以看到多了一个叫 m1 的镜像,跟我们之前 pull 下来的镜像一样。

我们可以通过docker run -d -p 90:80 m1来运行
通过访问 90 端口,可以看到 hello ,说明我们修改过后的容器保存成镜像,重新运行,它可以保持这个变化。

dockerfile 用 build 生成镜像的操作

新建一个 dockerfile
vim Dockerfile
可以先学一下 dockerfile 的语法
进入 insert 模式,通过 from 指定 docker 构建基础镜像,基于 nginx,然后我们将当前目录下所有文件拷贝到 /usr/share/nginx/html 这个文件夹下
FROM nginx
ADD ./ /usr/share/nginx/html
退出(wq)
然后我们创建一个 index.html,里面写 外部的文件。
vim index.html
进入 insert 模式
里面随便写点东西wai bu de wenjian
退出(wq)
通过 docker build -t m2 最后加一个 . 来指定当前目录下的 dockerfile 去构建
docker build -t m2 .
然后会提示 step1 step2 两步构建成功
docker run -d -p 100:80 m2
通过 docker ps 查看,可以看到运行的容器已经有 m2 了,点击最上面的 100 端口
可以看到外部的文件已经在上面了,这说明我们通过dockerfile 构建了一个镜像,并且跑成了一个容器。

镜像与 tar 文件的 save 和 load 操作

通过docker save指令,去将一个镜像,保存到一个文件里。
这里将名字为 m2 的镜像保存为 1.tar文件。
docker save m2 > 1.tar
通过 ls 查看,会发现有个 1.tar 文件
ls
通过 docker rmi 来删除镜像
docker rmi m2
会提示有个容器是基于这个镜像的,所以无法删除,那么我们将这个容器也删了,就能删掉镜像。
docker ps 查看正在运行的容器
docker rm -f 这里写基于m2镜像的容器(100端口的那个)对应的id
再来删除镜像 docker rmi m2
docker images 查看镜像,会发现 m2 镜像已经没有了。

然后再通过 save 的对称操作 docker load < 1.tar
再通过 docker images 查看镜像,会发现 m2 镜像又回来了。
这就同时验证了 save 和 load 的功能

然后 push 的话,需要自己去 dockerhub 或者其他官方仓库注册,这里视频没有做讲解。

视频小结

docker run 指令 -d 是后台运行,避免 shell 命令窗口阻塞
-p 是指定端口映射,先写外部端口再写内部端口
–name 指定容器运行起来后的名字

-v 则映射文件,用途也很广,我们可以将当前目录映射到内部的 /usr/share/nginx/html
这样就可以将一些静态文件放在外面,在外面修改文件(因为是映射的)里面文件就会跟着变化。
这个映射还可以用于其他的一些数据的保存,例如 mysql 的 data 目录也可以映射到外面,防止数据丢失。
最后需要接一个参数,就是这个镜像的名字,如果有机体版本最好不要省略,省略就是 latest 最新版。
docker run -d -p 88:80 --name mynginx -v 'pwd':.usr/share/nginx/html nginx:1.13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值