Linux-初学者系列_docker

Linux-初学者系列_docker

docker是一个虚拟机,主要应用在Linux和后台一些应用的虚拟机,和常见的VM有很多相似的地方。

一、概念

镜像:

需要下载的系统文件iso…

容器:

正在运行中的一个虚拟机
docker中多了一些tar文件,可以通过指令重新加载成一个镜像。
dockerfile通过写如何构建的步骤,可以将dockerfile构建成镜像。
仓库保存了很多镜像,以及第三方镜像,可以通过docker pull下载镜像/push指令上传。

二、安装docker(可忽略 跳到第三步)

此处我用到的是centos7,使用yum源安装。

可以根据开发者社区Docker CE镜像文档配置。

链接: https://developer.aliyun.com/mirror/docker-ce?spm=a2c6h.13651102.0.0.3e221b11rH6ppU

在这里插入图片描述

以下是根据文档配置过程,可忽略。

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

在这里插入图片描述

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

在这里插入图片描述

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

sudo yum makecache fast

sudo yum -y install docker-ce

在这里插入图片描述

sudo service docker start

在这里插入图片描述

vim /etc/yum.repos.d/docker-ce.repo

在这里插入图片描述

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

在这里插入图片描述

sudo yum -y install docker-ce-版本号

在这里插入图片描述

docker version

在这里插入图片描述

systemctl status docker

在这里插入图片描述

三、获取镜像

从远程仓库上面pull下载,此处列举nginx

1、下载nginx镜像

[root@bogon ~]# docker pull nginx

在这里插入图片描述

docker pull nginx等于docker pull nginx:latest

不指定版本,默认就是最新版本。

在这里插入图片描述

此时nginx镜像就已经下载下来了。

2、查看本地镜像

docker images

在这里插入图片描述

3、将镜像运行成一个容器

通过run指令将nginx镜像运行成一个正在运行的容器(虚拟机)。

在docker的使用中常用docker run指令跑镜像,比较重要的参数:

-d后台运行

-p映射内外端口,先写外部端口再写内部端口

–name容器运行起来后的名字

-v映射文件

[root@bogon ~]# docker run -d -p 80:80 nginx

在这里插入图片描述

此时d4…这一串是运行的容器id。

01-查看运行的容器
[root@bogon ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                               NAMES
d42f5d21d47d   nginx     "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   pensive_mcclintock

在这里插入图片描述

02-通过ip+端口号访问
我的虚拟机ip地址是:192.168.18.132
端口号是80
浏览器访问:
192.168.18.132:80

我们会发现已经运行起来nginx,说明外部端口映射里面的80,同时也可以启动多个。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

总结:通过pull和run将nginx容器运行起来,例如想对nginx进行修改,可以通过docker exec -it 容器id。

[root@bogon ~]# docker exec -it d4 bash
root@d42f5d21d47d:/# 

index文件放在/usr/share/nginx/html中

在这里插入图片描述

直接修改index文件:

root@d42f5d21d47d:/usr/share/nginx/html# echo hello > index.html
root@d42f5d21d47d:/usr/share/nginx/html# cat index.html
hello

80端口会显示:

在这里插入图片描述

退出d4容器

root@d42f5d21d47d:/usr/share/nginx/html# exit
03-删除端口

通过docker rm -f强制删除81端口。

在这里插入图片描述

04-指定镜像名字

通过docker commit指令指定一个镜像的名字,比如说z1。

[root@bogon ~]# docker commit d4 z1
sha256:7b9573603d62f9dcd9c68ec72ff7582d1d563651f8edcf8e69ddb6bb6dd0fe77
[root@bogon ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
z1           latest    7b9573603d62   21 seconds ago   142MB
nginx        latest    a7be6198544f   19 hours ago     142MB
[root@bogon ~]# docker run -d -p 90:80 z1
75e5d60e8a96fc137ea42cef1f07fc66bbc3c32bbfae1fa17370d00cd636ceb5

在这里插入图片描述

通过访问90端口,可以看到页面是hello,说明修改后的容器保存成镜像,重新运行,它可以保持这个变化。

4、dockerfile构建镜像

通过dockerfile,新建一个dockerfile文件。

此时可以学习下dockerfile语法。

在这里插入图片描述

通过FROM指定docker构建的基础镜像,是基于nginx镜像,将当前目录下的所有文件拷贝到/usr/share/nginx/html文件夹下,当前我们创建了一个index.html文件,里面可以写外部的文件。

在这里插入图片描述

通过docker build -t z2 .指定的是当前目录下的dockerfile去构建。

在这里插入图片描述

通过100号端口映射z2

在这里插入图片描述

在这里插入图片描述

5、dockersave构建镜像

使用dockersave讲z2(镜像名)保存到zhang.tar文件里。

[root@bogon ~]# docker save z2 >zhang.tar

在这里插入图片描述

删除z2

因为这个z2有个容器是基于镜像的所以无法删除,需要将这个容器也删除。

在这里插入图片描述

6、docker load

当前z2镜像已经删除,通过docker save <zhang.tar拿到镜像

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_62181310/article/details/130847746