当前位置:   article > 正文

Docker 入门_docker run heeloword

docker run heeloword

首先,Docker是容器,与虚拟机有很大区别。

虚拟机需要独立的操作系统,占用预先设置好的硬件资源,占用空间庞大。docker作为一个容器,它会与宿主机共享操作系统、共享硬件资源,可以理解它是一个与外界隔离的一个文件夹。里面仅有这个容器服务所运行具备的资源文件。(以上个人理解,如有问题还望大佬指正)

一、安装Docker

https://docs.docker.com/engine/install/ 可以在官网找到自己对应的操作系统来根据文档进行安装,因为笔者做运维所以在centos7下进行安装

1、卸载旧版本docker(如未安装过则不需要此步骤)

旧版本的 Docker 被称为dockerdocker-engine。如果安装了这些,请卸载它们以及相关的依赖项。

  1. $ sudo yum remove docker \
  2. docker-client \
  3. docker-client-latest \
  4. docker-common \
  5. docker-latest \
  6. docker-latest-logrotate \
  7. docker-logrotate \
  8. docker-engine

2、安装yum仓库管理工具并新增docker的repo仓库

  1. $ sudo yum install -y yum-utils
  2. $ sudo yum-config-manager \
  3. --add-repo \
  4. https://download.docker.com/linux/centos/docker-ce.repo

3、安装docker-ce

$ sudo yum install docker-ce docker-ce-cli containerd.io

以上docker安装完毕

二、Docker的简单测试

1、启动docker

$ sudo systemctl start docker

2、运行hello-wordl 容器

$ docker run hello-world

下图红框部分即hello-world 容器所提供的服务。什么服务?其实就是打印了这段话而已啦。hello-world是一个测试image,其意义就在于检测你的docker是否可以正常运行。

Ps.

1)hello-word是什么?它是docker提供一个测试镜像文件。

2)在输入docker run hello-world后docker为我们做了什么?

   docker首先会检测本地是否有hello-world镜像文件,如果有则直接将其放入容器中运行,如果没有呢?当然是会去下载啦,读者可以在运行hello-world之前输入命令"docker images"来查看本地已存在的镜像文件,发现是空的,但是在docker run hello-world后再次输入docker images,会发现多出来一个hello-world镜像文件,这个文件就是刚刚docker为我们下载的。有了文件之后自然就是讲image放到容器中去运行啦,基本来说,你能想到的服务器上的服务基本都有对应的容器、比如nginx、tomcat等等。

3、那么如果我们不想在运行的时候去下载、更不想让他下载一些最新版本的镜像文件,我就想自己单独下载然后在本地运行怎么办?接下来我们讲如何下载镜像

三、Docker镜像的下载

 pull、pull、pull就是拉的意思也是docker中用于将镜像文件下载的重要选项。

docker完整下载镜像命令如下

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

举个栗子:我们下载一个tomcat镜像试试,输入完docker pull tomcat后发现已经开始下载

Q: 大家会不会有个疑问,明明上面的完整命令那么长,为什么你只输入了"docker pull tomcat"就能下载呢?好先来解答这个问题

A:是这样的,必要的参数其实就是一个就是image名字,如果没有其他参数,docker会使用默认配置进行拉取。上面的命令中没有给出 Docker 镜像仓库地址,因此将会从 Docker Hub (docker.io)获取镜像,而镜像名称是 tomcat,因此将会获取官方镜像 library/tomcat 仓库中最新的也就是latest标签的镜像进行下载,一般情况下除非是自行搭建docker私有仓库,否则不用理会仓库地址,谁让docker hub 社区那么活跃呢

  1. docker pull tomcat:8.5.69-jdk8-adoptopenjdk-openj9
  2. 下载标签为8.5.69-jdk8-adoptopenjdk-openj9的官方tomcat镜像
  3. docker pull bitnami/tomcat:8.5-debian-10
  4. 下载bitnami仓库下标签为8.5-debian-10的tomcat的镜像
  5. docker pull 192.168.1.161:5000/httpd:3.3.4
  6. 192.168.1.161机器的5000端口上 下载标签为3.3.4的httpd镜像
  7. 以上例子大家应该都能看明白

四、Docker的运行

  1. docker run 镜像名字 即可运行
  2. 常用选项
  3. -t 让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
  4. -i 让容器的标准输入保持打开
  5. -d: 后台运行容器,并返回容器ID
  6. -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
  7. -v: 绑定一个卷
  8. docker ps -a #此命令可查看所有状态中的容器
  9. docker stop containerID #可以停止一个指定容器ID的容器
  10. docker start containerID #可以启动一个处于stop状态的容器

1、tomcat测试 

可以看到上图中运行了一个tomcat容器。并且端口映射为5000端口,如果不进行映射是无法提供服务的。 然后访问本机ip:5000端口

 

在这里要说一下,tomcat的官方docker镜像由于没有webapp目录,所以返回404是正常的。

2、nginx的资源目录挂载测试

  1. 1、docker pull nginx #下载官方最新的nginx镜像
  2. 2、来到usr/local/src/html下,echo "<h1>123</h1>" > index.html 新增一个测试主页
  3. 3、docker run -p 8008:80 -v /usr/local/src/html:/usr/share/nginx/html -d nginx ##此处使用-v进行目录的挂载,相当于nginx的静态资源目录被挂载到了宿主机的/usr/local/src/html下面
  4. 4、使用elinks测试 elinks http://127.0.0.1:8008 可以正常看到我写的123页面

3、关于容器日志

  1. docker container logscontainerID #可以查看指定ID开头容器的日志
  2. 下面可以看出 nginx的访问日志

 五、进入容器

有时候我们需要进到容器里面进行操作,那么就需要用到下面的命令

  1. docker exec -it containerID /bin/bash #进入指定容器ID的容器中

 六、镜像的管理

我们可以查看目前本地所以已经下载的镜像文件

  1. docker images #查看本地所有镜像
  2. docker image rm hello-word #删除hello-world镜像
  3. PS 删除镜像前一定要保证没有任何容器在使用此镜像,否则报错无法删除(conflict: unable to remove repository reference "hello-world" (must force) - container 06f5a7072d40 is using its referenced image d1165f221234)

好了 以上是笔者边学习边摸索的一些经验,希望大家多多指正。谢谢

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/632147
推荐阅读
相关标签
  

闽ICP备14008679号