Docker笔记一

Docker笔记一

学习视频看的是up主:遇见狂神说

想要学习运维,学习CI/CD,那就离不开Docker。

一、从0开始安装Docker

系统:CentOS7

yum设置阿里云源,yum源更新:(这一步如果跳过,后面启动Docker会报错)

# 备份
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak 

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all  
yum makecache
yum update

安装Docker:

# 卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
                  
# 安装工具包
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

# 设置阿里云仓库
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装社区版
yum install docker-ce docker-ce-cli containerd.io

查看是否安装成功:

# 启动Docker
systemctl start docker
# 运行hello world
# docker run命令会先查找是否存在这个镜像,如果不存在会去仓库上拉取
# 再从这个镜像中创建一个容器,这个容器运行一个可执行文件,可执行文件可以产生你当前看到的输出
docker run hello-world

image-20210715112709497

二、卸载Docker(不想学了再卸载)

yum remove docker-ce
rm -rf /var/lib/docker

三、Docker介绍

3.1、Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

1、快速,一致地交付您的应用程序

Docker 允许开发人员使用您提供的应用程序或服务的本地容器在标准化环境中工作,从而简化了开发的生命周期。

容器非常适合持续集成和持续交付(CI / CD)工作流程,请考虑以下示例方案:

  • 您的开发人员在本地编写代码,并使用 Docker 容器与同事共享他们的工作。
  • 他们使用 Docker 将其应用程序推送到测试环境中,并执行自动或手动测试。
  • 当开发人员发现错误时,他们可以在开发环境中对其进行修复,然后将其重新部署到测试环境中,以进行测试和验证。
  • 测试完成后,将修补程序推送给生产环境,就像将更新的镜像推送到生产环境一样简单。
2、响应式部署和扩展

Docker 是基于容器的平台,允许高度可移植的工作负载。Docker 容器可以在开发人员的本机上,数据中心的物理或虚拟机上,云服务上或混合环境中运行。

Docker 的可移植性和轻量级的特性,还可以使您轻松地完成动态管理的工作负担,并根据业务需求指示,实时扩展或拆除应用程序和服务。

3、在同一硬件上运行更多工作负载

Docker 轻巧快速。它为基于虚拟机管理程序的虚拟机提供了可行、经济、高效的替代方案,因此您可以利用更多的计算能力来实现业务目标。Docker 非常适合于高密度环境以及中小型部署,而您可以用更少的资源做更多的事情。

3.2、Docker架构

Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系类似于面向对象编程中的对象与类。(先有镜像才能有容器)

四、Docker常用命令

4.1、系统命令
# 下面两个命令,当docker没有启动时,会提示Is the docker daemon running?
docker version
docker info

# 这个命令docker没有启动时也能正常执行
docker 任何命令 --help

# 启动/重启命令
systemctl start docker
systemctl restart docker

# 关闭命令(两个都要执行,才算完全关闭)
systemctl stop docker.socket
systemctl stop docker

# 设置开机自启动
systemctl enable docker

image-20210715140231718

docker info提示有两个stopped的容器,有一个镜像。

查看镜像:

image-20210715142313762

查看容器:(执行了两次docker run hello-world,所以有两个容器)

image-20210715142354997

再执行一次docker run hello-world,查看容器变成了三个:

image-20210715143003135

NAMES那一列是容器的名字。由于我们没有通过–name指定容器的名字,所以由docker自动分配一个随机名称。

4.2、镜像的基本命令
1、docker images(列出所有镜像)

-q(只列出镜像ID,常和其他命令结合使用)

[root@centos etc]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   4 months ago   13.3kB
[root@centos etc]# docker images -q
d1165f221234
2、docker inspect(查看指定镜像的详细信息)

可以根据ID或者name指定镜像

发现hello-world的ID其实很长,之前看到的是它的前12位。

[root@centos etc]# docker inspect hello-world
[
    {
        "Id": "sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726",
        "RepoTags": [
            "hello-world:latest"
        ],
        "RepoDigests": [
            "hello-world@sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2021-03-05T23:25:25.230064203Z",
        "Container": "f5a78ef54769bb8490754e9e063a89f90cc8eee6a6c5a0a72655826e99df116e",
        "ContainerConfig": {
            "Hostname": "f5a78ef54769",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD [\"/hello\"]"
            ],
            "Image": "sha256:77fe0a37fa6ce641a004815f2761a9042618557d253f312cd3da61780e372c8f",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {}
        },
        "DockerVersion": "19.03.12",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/hello"
            ],
            "Image": "sha256:77fe0a37fa6ce641a004815f2761a9042618557d253f312cd3da61780e372c8f",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": null
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 13336,
        "VirtualSize": 13336,
        "GraphDriver": {
            "Data": {
                "DeviceId": "2",
                "DeviceName": "docker-253:0-830847-5288b08f09b28bc498a92d8b97f01571cc8054930a06a5302dddc88221929474",
                "DeviceSize": "10737418240"
            },
            "Name": "devicemapper"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:f22b99068db93900abe17f7f5e09ec775c2826ecfe9db961fea68293744144bd"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
3、docker search(搜索镜像)

image-20210715150038046

只显示STARS大于等于3000的镜像:

image-20210715150249604

4、docker pull(下载镜像)
[root@centos etc]# docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
b4d181a07f80: Pull complete
a462b60610f5: Pull complete
578fafb77ab8: Pull complete
524046006037: Pull complete
d0cbe54c8855: Pull complete
aa18e05cc46d: Pull complete
32ca814c833f: Pull complete
9ecc8abdb7f5: Pull complete
ad042b682e0f: Pull complete
71d327c6bb78: Pull complete
165d1d10a3fa: Pull complete
2f40c47d0626: Pull complete
Digest: sha256:52b8406e4c32b8cf0557f1b74517e14c5393aff5cf0384eff62d9e81f4985d4b
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

docker镜像的结构是分层的,每一层(layer)都有自己的ID,比如上面的mysql最新版有12层。

镜像之间有时会共享一部分layer,比如我们再拉一个mysql其他版本的:

[root@centos etc]# docker pull mysql:5.7
5.7: Pulling from library/mysql
b4d181a07f80: Already exists
a462b60610f5: Already exists
578fafb77ab8: Already exists
524046006037: Already exists
d0cbe54c8855: Already exists
aa18e05cc46d: Already exists
32ca814c833f: Already exists
52645b4af634: Pull complete
bca6a5b14385: Pull complete
309f36297c75: Pull complete
7d75cacde0f8: Pull complete
Digest: sha256:1a2f9cd257e75cc80e9118b303d1648366bc2049101449bf2c8d82b022ea86b7
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7

可以看到前7个layer已经存在,是和之前的mysql最新版共享的,此时只需要下载其他layer,减少了存储空间的消耗。

5、docker rmi -f(删除镜像)

可以根据镜像ID或者name进行删除,多个ID/name用空格隔开:(这里删除mysql,默认删除了最新版)

[root@centos etc]# docker rmi -f mysql
Untagged: mysql:latest
Untagged: mysql@sha256:52b8406e4c32b8cf0557f1b74517e14c5393aff5cf0384eff62d9e81f4985d4b
Deleted: sha256:5c62e459e087e3bd3d963092b58e50ae2af881076b43c29e38e2b5db253e0287
Deleted: sha256:b92a81bddd621ceee73e48583ed5c4f0d34392a5c60adf37c0d7acc98177e414
Deleted: sha256:265829a9fa8318ae1224f46ab7bc0a10d12ebb90d5f65d71701567f014685a9e
Deleted: sha256:2b9144b43d615572cb4a8fb486dfad0f78d1748241e49adab91f6072183644e9
Deleted: sha256:944ffc10a452573e587652116c3217cf571a32c45a031b79fed518524c21fd4f
Deleted: sha256:b9108f19e3abf550470778a9d91959ce812731d3268d7224e328b0f7d8a73d26
[root@centos etc]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         5.7       09361feeb475   3 weeks ago    447MB
hello-world   latest    d1165f221234   4 months ago   13.3kB

猜测一下,此时再删除mysql,会发生什么,提示不存在latest可以删除,还是删除 5.7?

[root@centos etc]# docker rmi -f mysql
Error: No such image: mysql
# 结果是提示不存在

结合其他命令删除所有镜像:docker rmi -f $(docker images -q)

[root@centos etc]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         5.7       09361feeb475   3 weeks ago    447MB
hello-world   latest    d1165f221234   4 months ago   13.3kB
[root@centos etc]# docker rmi -f $(docker images -q)
Untagged: mysql:5.7
Untagged: mysql@sha256:1a2f9cd257e75cc80e9118b303d1648366bc2049101449bf2c8d82b022ea86b7
Deleted: sha256:09361feeb4753ac9da80ead4d46e2b21247712c13c9ee3f1e5d55630c64c544f
Deleted: sha256:e454d1e47d2f346e0b2365c612cb6f12476ac4a3568ad5f62d96aa15bccf3e19
Deleted: sha256:e0457c6e331916c8ac6838ef4b22a6f62b21698facf4e143aa4b3863f08cf7d2
Deleted: sha256:ed73046ee2cd915c08ed37a545e1b89da70dc9bafeacfbd9fddff8f967373941
Deleted: sha256:419d7a76abf4ca51b81821da16a6c8ca6b59d02a0f95598a2605a1ed77c012eb
Deleted: sha256:9aecb80117a5517daf84c1743af298351a08e48fa04b8e99dcb63c817326a748
Deleted: sha256:d8773288899b1230986eba7486009df11d5dd6c628b1d4fd0443e873c6b00f70
Deleted: sha256:45a0a6bb39a4d7b37a6c598ae6af47f8a36ef63eaa9ef92d565137156aa36f54
Deleted: sha256:341f6b75346e72e9fa503aeb5362d1fe4f00449e02d3320e5c68f3052b7c2c13
Deleted: sha256:023f47f19f876ffa0225502a85b30954a44e54dc8223329fec32b336315c75c3
Deleted: sha256:058c443dffe18a5d2aad04cd5451a8540c7272ce9f8515d27e815303b1c25b59
Deleted: sha256:764055ebc9a7a290b64d17cf9ea550f1099c202d83795aa967428ebdf335c9f7
Untagged: hello-world:latest
Untagged: hello-world@sha256:df5f5184104426b65967e016ff2ac0bfcd44ad7899ca3bbcf8e44e4461491a9e
Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726
[root@centos etc]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
4.3、容器的基本命令

有了镜像才可以创建容器,所以需要先下载镜像,这里我们下载一个centos镜像进行容器命令的学习:

docker pull centos

1、docker run(运行容器)

–name 指定容器name

-it 使用交互方式运行,进入容器查看内容

-p 指定容器端口(主机端口:容器端口)

启动并进入容器:(退出直接exit)

[root@centos etc]# docker run -it centos /bin/bash
[root@cf3553fefbf8 /]#

cf3553fefbf8这串数字是啥,可能是容器的ID,我们验证一下:

image-20210715162122347

2、docker attach(进入一个正在运行的容器)

这里测试一下进入一个已经停止的容器:

image-20210715165814954

3、显示所有容器

docker container ls -a

docker ps -a (常用)

两者功能没有什么区别,去掉-a显示正在运行的容器

-q 只显示容器ID,常和其他命令结合使用

4、退出容器

exit(容器停止并退出)

Ctrl + p + q(容器不停止并退出)

试一下第二个:

[root@centos etc]# docker run -it centos /bin/bash
[root@6596a80dfa88 /]# [root@centos etc]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
6596a80dfa88   centos    "/bin/bash"   28 seconds ago   Up 26 seconds             naughty_noether
[root@centos etc]#
5、docker rm -f(删除容器)

这里结合docker ps -aq删除全部容器:

[root@centos etc]# docker rm -f $(docker ps -aq)
6596a80dfa88
cf3553fefbf8
bf8019552150
66910d933305
0e57e2a8a837
0894e2928305
66a88cf2fd66
0090666370e4
ed96885b977b

试着不用-f删除一个正在运行的容器:(提示不能删除一个正在运行的容器)

[root@centos etc]# docker run -it centos /bin/bash
[root@4ffc0a7d693b /]# [root@centos etc]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
4ffc0a7d693b   centos    "/bin/bash"   16 seconds ago   Up 14 seconds             nice_johnson
[root@centos etc]# docker rm 4ffc0a7d693b
Error response from daemon: You cannot remove a running container 4ffc0a7d693b96d6f7dce9470b6c686774326b28e009b1300197560082ae5fd9. Stop the container before attempting removal or force remove

加上-f就可以删除。

6、docker start(启动一个容器)
7、docker restart(重启一个容器)
8、docker stop(暂停一个正在运行的容器,类似于exit)

image-20210715165321601

9、docker kill(杀掉一个正在运行的容器,当stop报错时再用kill)

五、Docker镜像分层结构理解

5.1、什么是docker 镜像

就是把业务代码,可运行环境进行整体的打包。

5.2、如何创建docker镜像

现在docker官方共有仓库里面有大量的镜像,所以最基础的镜像,我们可以在公有仓库直接拉取,因为这些镜像都是原厂维护,可以得到即使的更新和修护。

Dockerfile:
我们如果想去定制这些镜像,我们可以去编写Dockerfile,然后重新bulid,最后把它打包成一个镜像,这种方式是最为推荐的方式包括我们以后去企业当中去实践应用的时候也是推荐这种方式。

img

5.3、镜像的分层技术

我们先来看一个Ubuntu系统的镜像。
img

我们可以镜像可以分层很多个layer,并且他们都有大小和ID,我们可以看到这里有4个layer ID号,最终这个镜像是由他们layer组合而成,并且这个镜像它是只读的,它不能往里面写数据,如果想写数据怎么办呢?我们会在镜像上启一层contain layer,其实就是相当于把镜像启动成一个容器,那么在容器这一层,我们是可写的。
img

六、Docker进阶命令

6.1、docker run -d(后台启动容器)

使用后台运行的前提是,容器存在一个正在运行的进程。

如果不存在,使用后台运行是不起作用的,docker会直接关掉容器。

比如我们让容器运行一个shell脚本,死循环执行输出:

[root@centos ~]# docker run -d centos /bin/sh -c "while true;do echo helloworld;sleep 1;done"
72312d5c0ef0a2190290b4c4841f46401af09bb0791b488e2dcc3fe49fab80e8
[root@centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
72312d5c0ef0   centos    "/bin/sh -c 'while t…"   5 seconds ago   Up 4 seconds             dazzling_lichterman
6.2、docker logs(查看容器日志)
[root@centos ~]# docker logs 72312d5c0ef0
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
helloworld
6.3、docker top(查看容器的进程信息)
[root@centos ~]# docker top 72312d5c0ef0
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                116399              116378              0                   17:25               ?                   00:00:00            /bin/sh -c while true;do echo helloworld;sleep 1;done
root                116926              116399              0                   17:29               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
6.4、docker exec(进入一个正在运行的容器)

docker exec -it ID /bin/bash

[root@centos ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS        PORTS     NAMES
72312d5c0ef0   centos    "/bin/sh -c 'while t…"   16 hours ago   Up 16 hours             dazzling_lichterman
[root@centos ~]# docker exec -it 72312d5c0ef0 /bin/bash
[root@72312d5c0ef0 /]#

再执行一次docker attach看看有什么区别:

[root@centos ~]# docker attach 72312d5c0ef0
helloworld
helloworld
helloworld
helloworld

docker exec类似于打开新的终端,docker attach进入正在运行的终端。

6.5、docker cp(从容器拷贝文件到主机上,或者从主机拷贝文件到容器)
[root@centos ~]# docker cp --help

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
        docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

在主机新建一个文件:sample.java,然后拷贝到容器中:

[root@centos ~]# touch sample.java
[root@centos ~]# docker cp sample.java 72312d5c0ef0:/
[root@centos ~]# docker exec -it 72312d5c0ef0 /bin/bash
[root@72312d5c0ef0 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sample.java  sbin  srv  sys  tmp  usr  var

docker cp是一个手动拷贝,后期会使用docker -v 卷的技术进行同步。

七、Docker部署

7.1、Nginx
docker pull nginx

#运行容器
docker run -d --name nginx_test -p 3344:80 nginx

查看本机的3344端口:

[root@centos ~]# curl localhost:3344
curl: (56) Recv failure: Connection reset by peer

我的解决方案:

# 关闭防火墙firewalld
# 暂时关闭
systemctl stop firewalld
# 永久关闭,重启centos后才能生效
systemctl disable firewalld

# 查看防火墙状态,显示not running就行
firewall-cmd --state

# 安装iptables
yum install iptables 
yum install iptables-services

# 启动、设置开机自启动
systemctl start iptables
systemctl enable iptables.service

# 编辑防火墙文件,添加一行代码(开放3344端口)
vim /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3344 -j ACCEPT

# 重启iptables
systemctl restart iptables

然后重启CentOS,重启Docker,重新运行容器。再次查看3344端口:

[root@centos ~]# curl localhost:3344
<!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>

使用浏览器访问:

image-20210716111307885

如果要修改nginx的配置文件,就必须进入容器,那么可不可以在主机进行修改,同步到容器,实现容器的自动修改呢?也就是使用之前提到过的docker -v 卷的技术,后面再具体讲。

7.2、Tomcat
docker pull tomcat

# 运行容器
docker run -d --name tomcat_test -p 3355:8080 tomcat

image-20210716133935711

此时已经能访问,但是我们想看的不是这样一个页面。

这是因为阿里云镜像给我们下载的是一个不完整的镜像,剔除了不必要的东西。

进入容器发现webapps文件夹里边没有东西:

[root@centos ~]# docker exec -it tomcat_test /bin/bash
root@25518e91b2db:/usr/local/tomcat# ls
BUILDING.txt     LICENSE  README.md      RUNNING.txt  conf  logs            temp     webapps.dist
CONTRIBUTING.md  NOTICE   RELEASE-NOTES  bin          lib   native-jni-lib  webapps  work
root@25518e91b2db:/usr/local/tomcat# cd webapps
root@25518e91b2db:/usr/local/tomcat/webapps# ls
root@25518e91b2db:/usr/local/tomcat/webapps#

把webapps.dist里面的文件复制到webapps:

root@25518e91b2db:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@25518e91b2db:/usr/local/tomcat# cd webapps
root@25518e91b2db:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager

再次访问:

image-20210716135300463

7.3、ES和Kibana(ES的可视化工具)

Nginx和Tomcat都是只暴露一个端口,ES暴露的端口比较多。

docker pull elasticsearch:7.6.2

# 运行之前stop其他容器(因为ES消耗很多内存)
docker stop $(docker ps -q)

# 运行ES(执行完这条命令之后,终端会变得很卡,因为我给虚拟机只分配了2G内存)
# 不知道为什么这条命令执行后大概过一分钟容器就自动停掉了(后面有解决方案)
docker run -it --name elasticsearch -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch:7.6.2

# 运行Kibana(和ES版本一致)
docker run --link elasticsearch:elasticsearch -p 5601:5601 -d kibana:7.6.2

使用docker stats查看内存使用情况:

[root@centos ~]# docker stats
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O     BLOCK I/O    PIDS
b7cfa47e7f8d   elasticsearch   0.08%     964.9MiB / 1.777GiB   53.04%    656B / 0B   718MB / 0B   18
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O     BLOCK I/O    PIDS
b7cfa47e7f8d   elasticsearch   0.08%     964.9MiB / 1.777GiB   53.04%    656B / 0B   718MB / 0B   18
CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O     BLOCK I/O    PIDS
b7cfa47e7f8d   elasticsearch   39.01%    961.1MiB / 1.777GiB   52.83%    656B / 0B   736MB / 0B   18

解决ES自动停止的问题:

# 用这个命令运行(限制内存)
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300  elasticsearch:7.6.2

查看ES是否启动成功:

image-20210716151147244

查看Kibana是否启动成功:

image-20210716152426089

八、Docker可视化

先使用portainer(Docker图形化界面管理工具,轻量级的),后面再用Rancher。

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

image-20210716153301131

这样就运行成功,接下来是使用。

先登录进去,是这样的:

image-20210716153459096

选择Local,连接本地的容器:

image-20210716153927788

点击connect:

然后自己随便探索一下。(平时可以不用这个可视化工具,用命令就行)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要下载Docker笔记,首先需要了解Docker是什么以及其使用场景。 Docker是一种开源的容器化平台,可以帮助用户打包、部署和运行应用程序。通过使用容器化技术,用户无需担心运行环境的差异,可以将应用程序和其依赖项打包到一个可移植的容器中,随时在不同的环境中运行。 要下载Docker笔记,可以按照以下几个步骤进行操作: 1. 首先,需要在计算机上安装Docker。可以从Docker官方网站(https://www.docker.com/)上下载适合自己操作系统的Docker安装包,并按照安装指南进行安装。 2. 安装完成后,需要启动Docker服务。根据操作系统的不同,可以在启动菜单或终端中找到Docker应用程序,并点击打开。在Docker控制台中,可以查看、管理容器以及进行其他操作。 3. 接下来,需要搜索并下载Docker笔记的镜像。可以使用Docker Hub(https://hub.docker.com/)这个官方的镜像仓库,搜索关键词以找到合适的笔记镜像。在搜索结果中,会显示镜像的名称、描述、标签等信息,选择一个合适的镜像。 4. 找到想要下载的笔记镜像后,可以使用Docker命令行工具或Docker控制台中的图形界面来下载镜像。通过输入命令`docker pull 镜像名称:标签`,即可下载对应的笔记镜像到本地。 5. 下载完成后,可以使用`docker images`命令在本地查看已下载的镜像列表。根据下载的笔记镜像的名称和标签,可以使用`docker run`命令来创建并启动一个容器,从而运行笔记。 通过以上步骤,就可以成功下载Docker笔记并在本地运行。希望这些信息对您有帮助! ### 回答2: 要下载Docker笔记,首先需要知道从哪里获取这些笔记Docker有一个官方文档网站,其中包含了大量关于Docker的技术文档、教程和示例以及各种使用场景的说明。用户可以访问Docker官方网站,在文档部分进行浏览和搜索,找到所需的笔记。 在Docker官方文档网站上,用户可以按照主题、标签或关键字进行检索,以找到相关的笔记。网站还提供了各种文件格式的下载选项,包括PDF、EPUB和HTML版本,用户可以根据自己的使用习惯选择适合的格式进行下载。 此外,还有一些第三方资源库和网站提供了Docker相关的笔记下载。例如GitHub上有很多开源项目,其中包含了Docker的使用笔记和示例代码。用户可以通过在GitHub上搜索关键字"Docker笔记"或"Docker notes"来找到相关的项目,然后根据项目的说明进行下载。 总之,下载Docker笔记可以通过Docker官方文档网站或第三方资源库进行。用户可以根据自己的需求和偏好选择下载适合自己的格式和来源。 ### 回答3: 要下载 Docker 笔记,首先需要确保已经安装了 Docker 客户端工具。然后按照以下步骤进行下载: 1. 打开终端或命令提示符,输入以下命令来下载 Docker 笔记Docker 镜像: ``` docker pull [镜像名称] ``` 这里的 `[镜像名称]` 是 Docker Hub 上提供的 Docker 镜像名称,可以根据需要搜索并选择合适的镜像。 2. 等待镜像下载完成后,使用以下命令来创建和运行一个 Docker 容器,并将笔记下载到本地: ``` docker run -it --name [容器名称] [镜像名称] [下载命令] ``` 这里的 `[容器名称]` 是用于标识容器的名称,`[下载命令]` 是具体的下载命令,可以根据下载方式的不同进行相应的设置。 3. 等待下载完成后,可以使用以下命令来停止并删除容器: ``` docker stop [容器名称] docker rm [容器名称] ``` 这里的 `[容器名称]` 是之前创建容器时指定的名称。 通过以上步骤,你就可以成功下载 Docker 笔记到本地了。记得根据实际需求选择适合的 Docker 镜像和下载命令,同时也可以通过 Docker Hub 上的文档和社区提供的资源,了解更多有关 Docker 的使用方法和技巧。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值