乐趣区

关于golang:Docker-系列docker-学习-三

【Docker 系列】docker 学习 三

应用 Dcoker 部署 nginx

搜寻 nginx 镜像

  • 应用 docker search nginx
# docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        15246     [OK]
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2053                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   815                  [OK]
...
  • 或者在 dockerhub 上搜寻 nginx,具体的版本和详细信息会更加全面,个别应用官网的

拉取 nginx 镜像

拉取 nginx 镜像,咱们这里就拉取最新版本的 nginx

# docker pull nginx
Using default tag: latest                # 最新版本
latest: Pulling from library/nginx        # nginx 库
33847f680f63: Pull complete                #分层下载,后续会具体学习分层的原理
dbb907d5159d: Pull complete
8a268f30c42a: Pull complete
b10cf527a02d: Pull complete
c90b090c213b: Pull complete
1f41b2f2bf94: Pull complete
Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90                                        # 签名
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest            # nginx 实在下载门路

创立并运行容器

  • 新建一个容器命名为 nginx1
  • nginx 默认端口是 80,将 docker 容器中的 80 端口映射程 主机中的 8888 端口
  • 设置后盾运行 nginx 容器
# docker run -d --name nginx1 -p 8888:80 nginx
2772a40501571630fb6fc2305f41f7a409299c4d15595ba3dd654d73f2a5e7b6

# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
2772a4050157   nginx     "/docker-entrypoint.…"   2 seconds ago   Up 2 seconds   0.0.0.0:8888->80/tcp   nginx1

验证

应用 curl 命令,拜访一下 主机的 8888 端口,查看是否拜访 OK

# curl localhost:8888
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

咱们也能够进入到 nginx docker 容器中,间接拜访 80 端口

# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
2772a4050157   nginx     "/docker-entrypoint.…"   14 minutes ago   Up 14 minutes   0.0.0.0:8888->80/tcp   nginx1

进入 nginx1 的终端
# docker exec -it nginx1 /bin/bash

拜访 80 端口
# curl localhost:80

小结

因为咱们在创立 nginx1 容器的时候,将主机的 8888 端口,映射到了 容器 nginx1 的 80 端口,因而能够拜访主机的 8888 端口来拜访到 nginx1 容器中的 80 端口

此时,能够拜访我的阿里云服务器的 8888 端口,理论是能够拜访到我的 nginx1 容器中的 nginx 服务器

尝试应用和部署 可视化 Docker 页面 portainer

portainer 是 Docker 图形化页面管理工具,他提供了一个后盾面板供咱们操作和治理。

创立和启动 portainer

docker run -d -p 8888:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

可选参数阐明:

  • –restart

当容器退出的时候,重启策略是什么样的,这里应用 always,默认值是“no”

  • -v

绑定挂载卷

  • –privileged

给予这个容器扩大权限

  • -p 8888:9000

将容器外面的 9000 端口,映射到主机的 8888 端口,便于咱们拜访主机 8888 端口的时候,能够拜访到 portainer 容器的 9000 端口

拜访和设置 portainer 用户

浏览器拜访:IP:8888

设置明码,点击 Create users 即可看到如下页面

解释一下上述画红线的中央:

  • 0 stacks

    Stacks 就是一组统一运行的、互相关联的 services

  • 1 container

1 个容器

  • 1 volume

1 个挂载卷

  • 3 images

3 个镜像

咱们到主机下面查看 docker 的零碎信息

docker info

进入到咱们本人的 docker 服务,能够看到上述解释的每一个项

咱们点进 images 看看成果:

咱们能够在这个 web 治理页面看到咱们 docker 服务中 3 个镜像的详情,也能够对镜像进行删除,新建,导入和导出

感兴趣的话,能够本人多相熟和尝试一下 portainer 的应用,当前咱们做 CI/CD 的时候,会应用 Rancher

大家学习的时候,能够多多交换,多多练习,多多查看帮忙文档,或者在命令行外面应用 –help 来查看都有哪些参数,例如:

docker run –help

用法: docker run [参数] 镜像 [命令] [命令的参数列表 …]

Run a command in a new container

参数:

-a, –attach list Attach to STDIN, STDOUT or STDERR

-c, –cpu-shares int CPU shares (relative weight)

-d, –detach 后盾运行容器

-e, –env list 设置环境变量

-h, –hostname string Container host name

-i, –interactive Keep STDIN open even if not attached

-l, –label list Set meta data on a container

-m, –memory bytes 内存限度

-p, –publish list Publish a container’s port(s) to the host

-P, –publish-all Publish all exposed ports to random ports

-t, –tty Allocate a pseudo-TTY

-u, –user string 用户名或者 uid

-v, –volume list 挂载卷

-w, –workdir string 设置容器中的工作目录

参考资料:

docker docs

欢送点赞,关注,珍藏

敌人们,你的反对和激励,是我保持分享,提高质量的能源

好了,本次就到这里

技术是凋谢的,咱们的心态,更应是凋谢的。拥抱变动,背阴而生,致力向前行。

我是 小魔童哪吒,欢送点赞关注珍藏,下次见~

退出移动版