Docker常用命令

2022/03/11 Docker

Docker常用命令

近水楼台先得月,向阳花木易为春。——苏麟《断句》

对docker命令在大部分情境下的使用实验,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来。

根据自己的理解,总的来说分为以下几种:

Docker环境信息 — docker [info version]                
容器生命周期管理 — docker [create exec run start stop restart kill rm pause unpause]
容器操作运维 — docker [ps inspect top attach wait export port rename stat]  
容器rootfs命令 — docker [commit cp diff]              
镜像仓库 — docker [login pull push search]            
本地镜像管理 — docker [build images rmi tag save import load]      
容器资源管理 — docker [volume network]                
系统日志信息 — docker [events history logs]              

Docker环境信息

用于检测Docker是否正确安装

docker version

# 查看docker容器版本
docker version
Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:02:46 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:00:51 2022
  OS/Arch:          linux/amd64
  Experimental:     false
......

docker info

# 查看docker容器信息
docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 2
  Running: 1
  Paused: 0
  Stopped: 1
 Images: 13
 Server Version: 20.10.17
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
......

docker help

Docker帮助命令

# 查看docker命令帮助
docker help

Usage:  docker [OPTIONS] COMMAND

A self-sufficient runtime for containers

Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set
                           with "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket(s) to connect to
  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit

Management Commands:
  app*        Docker App (Docker Inc., v0.9.1-beta3)
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.8.2-docker)
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  scan*       Docker Scan (Docker Inc., v0.17.0)
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Commands:
  # 当前 shell 下 attach 连接指定运行镜像
  attach      Attach local standard input, output, and error streams to a running container
  
  # 通过 Dockerfile 定制镜像
  build       Build an image from a Dockerfile
  
  # 提交当前容器为新的镜像
  commit      Create a new image from a container's changes
  
  # 从容器中拷贝指定文件或者目录到宿主机中
  cp          Copy files/folders between a container and the local filesystem
  
  # 创建一个新的容器,同 run,但不启动容器,注意,此时,容器的status只是Created
  create      Create a new container
  
  # 查看 docker 容器变化
  diff        Inspect changes to files or directories on a container's filesystem
  
  # 从 docker 服务获取容器实时事件,包括容器的创建,启动,关闭等。
  events      Get real time events from the server
  
  # 在已存在的容器上运行命令
  exec        Run a command in a running container
  
  # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
  export      Export a container's filesystem as a tar archive
  
  # 展示一个镜像形成历史
  history     Show the history of an image
  
  # 列出系统当前镜像
  images      List images
  
  # 从tar包中的内容创建一个新的文件系统映像[对应 export]
  import      Import the contents from a tarball to create a filesystem image
  
  # 显示系统相关信息
  info        Display system-wide information
  
  # 查看容器详细信息,用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。
  inspect     Return low-level information on Docker objects
  
  # kill 指定 docker 容器,关于stop和kill的区别,docker stop命令给容器中的进程发送SIGTERM信号,默认行为是会导致容器退出,当然,
    容器内程序可以捕获该信号并自行处理,例如可以选择忽略。而docker kill则是给容器的进程发送SIGKILL信号,该信号将会使容器必然退出。
  kill        Kill one or more running containers
  
  # 从一个 tar 包中加载一个镜像[对应 save]
  load        Load an image from a tar archive or STDIN
  
  # 注册或者登陆一个 docker 源服务器
  login       Log in to a Docker registry
  
  # 从当前 Docker registry 退出
  logout      Log out from a Docker registry
  
  # 输出当前容器日志信息
  logs        Fetch the logs of a container
  
  # 暂停容器
  pause       Pause all processes within one or more containers
  
  # 查看映射端口对应的容器内部源端口
  port        List port mappings or a specific mapping for the container
  
  # 列出容器列表
  ps          List containers
  
  # 从docker镜像源服务器拉取指定镜像或者库镜像
  pull        Pull an image or a repository from a registry
  
  # 推送指定镜像或者库镜像至docker源服务器
  push        Push an image or a repository to a registry
  rename      Rename a container
  
  # 重启运行的容器
  restart     Restart one or more containers
  
  # 移除一个或者多个容器
  rm          Remove one or more containers
  
  # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
  rmi         Remove one or more images
  
  # 创建一个新的容器并运行一个命令
  run         Run a command in a new container
  
  # 保存一个镜像为一个 tar 包[对应 load]
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  
  # 在 docker hub 中搜索镜像
  search      Search the Docker Hub for images
  
  # 启动容器
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  
  # 停止容器
  stop        Stop one or more running containers
  
  # 给源中镜像打标签
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  
  # 查看容器中运行的进程信息
  top         Display the running processes of a container
  
  # 取消暂停容器
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  
  # 查看 docker 版本号
  version     Show the Docker version information
  
  # 截取容器停止时的退出状态值
  wait        Block until one or more containers stop, then print their exit codes

Docker镜像命令

提示:对于镜像的操作可使用镜像名、镜像长ID和短ID。

镜像查找

# 搜索仓库MySQL镜像
docker search mysql
# --filter=stars=600:只显示 starts>=600 的镜像
docker search --filter=stars=600 mysql
# --no-trunc 显示镜像完整 DESCRIPTION 描述
docker search --no-trunc mysql
# --automated :只列出 AUTOMATED=OK 的镜像
docker search  --automated mysql
NAME                            DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                           MySQL is a widely used, open-source relation…   13440     [OK]
mariadb                         MariaDB Server is a high performing open sou…   5124      [OK]
...... 

docker images

镜像查看

# 列出本地images
docker images
# 含中间映像层
docker images -a
# 只显示镜像ID
docker images -q
# 含中间映像层
docker images -qa
# 显示镜像摘要信息(DIGEST列)
docker images --digests
# 显示镜像完整信息
docker images --no-trunc
# 显示指定镜像的历史创建;参数:-H 镜像大小和日期,默认为true;--no-trunc  显示完整的提交记录;-q  仅列出提交记录ID
docker history -H redis
REPOSITORY                         TAG          IMAGE ID       CREATED         SIZE
hello-world                        latest       feb5d9fea6a5   13 months ago   13.3kB
kindest/node                       <none>       de6eb7df13da   2 years ago     1.25GB

docker pull

镜像下载

# 下载Redis官方最新镜像,相当于:docker pull redis:latest
docker pull redis
# 下载仓库所有Redis镜像
docker pull -a redis
# 下载私人仓库镜像
docker pull bitnami/redis

docker rmi

镜像删除

# 单个镜像删除,相当于:docker rmi redis:latest
docker rmi redis
# 强制删除(针对基于镜像有运行的容器进程)
docker rmi -f redis
# 多个镜像删除,不同镜像间以空格间隔
docker rmi -f redis tomcat nginx
# 删除本地全部镜像
docker rmi -f $(docker images -q)

docker build

镜像构建

# 编写dockerfile
cd /docker/dockerfile
vim mycentos
# 构建docker镜像
docker build -f /docker/dockerfile/mycentos -t mycentos:1.1

容器操作

提示:对于容器的操作可使用CONTAINER ID 或 NAMES。

容器启动

# 新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -i -t --name mycentos
# 后台启动容器,参数:-d  已守护方式启动容器
docker run -d mycentos

注意:此时使用”docker ps -a”会发现容器已经退出。这是docker的机制:要使Docker容器后台运行,就必须有一个前台进程。解决方案:将你要运行的程序以前台进程的形式运行。

# 启动一个或多个已经被停止的容器
docker start redis
# 重启容器
docker restart redis

容器进程

# top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]
# 列出redis容器中运行进程
docker top redis
# 查看所有运行容器的进程信息
for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done

查看容器细节

docker inspect

json格式存储的容器详细细节

容器日志

$ docker logs [OPTIONS] CONTAINER
  Options:
        --details          显示更多的信息
    -f, --follow           跟踪实时日志
        --since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
        --tail string      从日志末尾显示多少行日志, 默认是all
    -t, --timestamps  显示时间戳
        --until string    显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)

# 查看redis容器日志,默认参数
docker logs rabbitmq
# 查看redis容器日志,参数:-f  跟踪日志输出;-t   显示时间戳;--tail  仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
# 查看容器redis从2019年05月21日后的最新10条日志。
docker logs --since="2019-05-21" --tail=10 redis

# 查看指定时间后的日志,只显示最后100行
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID
# 查看最近30分钟的日志
$ docker logs --since 30m CONTAINER_ID
# 查看某时间之后的日志
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID
# 查看某时间段日志
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID
# 查看最后100行,并过滤关键词Exception
$ docker logs -f --tail=100 CONTAINER_ID | grep "Exception"

容器的进入与退出

# 使用run方式在创建时进入
docker run -it centos /bin/bash
# 关闭容器并退出
exit
# 仅退出容器,不关闭
快捷键:Ctrl + P + Q
# 直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false  确保CTRL-D或CTRL-C不会关闭容器
docker attach --sig-proxy=false centos 
# 在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i  即使没有附加也保持STDIN 打开;-t  分配一个伪终端
docker exec -i -t  centos /bin/bash
# 以交互模式在容器中执行命令,结果返回到当前终端屏幕
docker exec -i -t centos ls -l /tmp
# 以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端
docker exec -d centos  touch cache.txt 

查看容器

# 查看正在运行的容器
docker ps
# 查看正在运行的容器的ID
docker ps -q
# 查看正在运行+历史运行过的容器
docker ps -a
# 显示运行容器总文件大小
docker ps -s

# 显示最近创建容器
docker ps -l
# 显示最近创建的3个容器
docker ps -n 3
# 不截断输出
docker ps --no-trunc 

# 获取镜像redis的元信息
docker inspect redis
# 获取正在运行的容器redis的 IP
docker inspect --format='' redis

容器的停止与删除

#停止一个运行中的容器
docker stop redis
#杀掉一个运行中的容器
docker kill redis
#删除一个已停止的容器
docker rm redis
#删除一个运行中的容器
docker rm -f redis
#删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
# -l 移除容器间的网络连接,连接名为 db
docker rm -l db 
# -v 删除容器,并删除容器挂载的数据卷
docker rm -v redis

生成镜像

# 基于当前redis容器创建一个新的镜像;参数:-a 提交的镜像作者;-c 使用Dockerfile指令来创建镜像;-m :提交时的说明文字;-p :在commit时,将容器暂停
docker commit -a="DeepInThought" -m="my redis" [redis容器ID]  myredis:v1.1

容器与主机间的数据拷贝

# 将rabbitmq容器中的文件copy至本地路径
docker cp rabbitmq:/[container_path] [local_path]
# 将主机文件copy至rabbitmq容器
docker cp [local_path] rabbitmq:/[container_path]/
# 将主机文件copy至rabbitmq容器,目录重命名为[container_path](注意与非重命名copy的区别)
docker cp [local_path] rabbitmq:/[container_path]

其它操作

清理环境

# 查询容器列表
docker ps -a
# 停用容器 
sudo docker stop [CONTAINER ID] 
# 删除容器
sudo docker rm  [CONTAINER ID]
# 删除镜像
sudo docker rmi [Image ID]
# 检查是否被删除
sudo docker images

# 停止所有容器
docker stop $(docker ps -a -q)
# 删除所有容器
docker rm $(docker ps -a -q)
# 删除所有镜像
docker rmi $(docker images -q)

文件拷贝

# 从主机复制到容器
sudo docker cp host_path containerID:container_path
# 从容器复制到主机
sudo docker cp containerID:container_path host_path

Docker安装的脚本

#!/bin/bash
# 移除掉旧的版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

# 删除所有旧的数据
sudo rm -rf /var/lib/docker

#  安装依赖包
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

# 添加源,使用了阿里云镜像
sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 配置缓存
sudo yum makecache fast

# 安装最新稳定版本的docker
sudo yum install -y docker-ce

# 配置镜像加速器
#sudo mkdir -p /etc/docker
#sudo tee /etc/docker/daemon.json <<-'EOF'
#{
# "registry-mirrors": ["http://hub-mirror.c.163.com"]
#}
#EOF

# 启动docker引擎并设置开机启动
sudo systemctl start docker
sudo systemctl enable docker

# 配置当前用户对docker的执行权限
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo systemctl restart docker

将文件报错为docker.sh

chmod 777 docker.sh

执行脚本 ./docker.sh

遇到的问题

Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was

解决ping 不通问题

[root@seckillmysql ~]# vi /etc/resolv.conf
//增加这两行
nameserver 223.5.5.5
nameserver 223.6.6.6

docker创建Alpine镜像

什么是Alpine

Alpine Linux 是一个社区开发的面向安全应用的轻量级Linux发行版,适合用来做Docker镜像、路由器、防火墙、VPNs、VoIP 盒子 以及服务器的操作系统,基于musl libc和Busybox,镜像大小只有5M,并且还提供了包管理工具apk查询和安装软件包。

获取Alpine镜像

$  docker search alpine
NAME                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
alpine                                 A minimal Docker image based on Alpine Linux…   5587                [OK]                
mhart/alpine-node                      Minimal Node.js built on Alpine Linux           439                                     
anapsix/alpine-java                    Oracle Java 8 (and 7) with GLIBC 2.28 over A…   421                                     [OK]
frolvlad/alpine-glibc                  Alpine Docker image with glibc (~12MB)          210                                     [OK]
gliderlabs/alpine                      Image based on Alpine Linux will help you wi…   180                                     
mvertes/alpine-mongo                   light MongoDB container                         105                                     [OK]
alpine/git                             A  simple git container running in alpine li…   97                                      [OK]
yobasystems/alpine-mariadb             MariaDB running on Alpine Linux [docker] [am…   46                                      [OK]
kiasaki/alpine-postgres                PostgreSQL docker image based on Alpine Linux   44                                      [OK]
alpine/socat                           Run socat command in alpine container           36                                      [OK]
davidcaste/alpine-tomcat               Apache Tomcat 7/8 using Oracle Java 7/8 with…   36                                      [OK]
zzrot/alpine-caddy                     Caddy Server Docker Container running on Alp…   35                                      [OK]
easypi/alpine-arm                      AlpineLinux for RaspberryPi                     32                                      
jfloff/alpine-python                   A small, more complete, Python Docker image …   26                                      [OK]
byrnedo/alpine-curl                    Alpine linux with curl installed and set as …   26                                      [OK]
hermsi/alpine-sshd                     Dockerize your OpenSSH-server with rsync and…   23                                      [OK]
etopian/alpine-php-wordpress           Alpine WordPress Nginx PHP-FPM WP-CLI           21                                      [OK]
hermsi/alpine-fpm-php                  Dockerize your FPM PHP 7.4 upon a lightweigh…   18                                      [OK]
bashell/alpine-bash                    Alpine Linux with /bin/bash as a default she…   13                                      [OK]
zenika/alpine-chrome                   Chrome running in headless mode in a tiny Al…   13                                      [OK]
davidcaste/alpine-java-unlimited-jce   Oracle Java 8 (and 7) with GLIBC 2.21 over A…   13                                      [OK]
spotify/alpine                         Alpine image with `bash` and `curl`.            9                                       [OK]
tenstartups/alpine                     Alpine linux base docker image with useful p…   8                                       [OK]
rawmind/alpine-traefik                 This image is the traefik base. It comes fro…   5                                       [OK]
hermsi/alpine-varnish                  Dockerize Varnish upon a lightweight alpine-…   1                                       [OK]

获取Alpine镜像

docker pull 方法


docker pull alpine:latest 
latest: Pulling from library/alpine
9d48c3bd43c5: Pull complete 
Digest: sha256:72c42ed48c3a2db31b7dafe17d275b634664a708d901ec9fd57b1529280f01fb
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

dockerfile 文件


mkdir alpine && cd alpine
 
touch Dockerfile
'''
#escape=
#This docker file uses alpine:latest image
#VERSION 1.0
#Author: Swift
#e-mail: ilyzhaoxin@sina.com
#DateTime: 2019-08-27 21:15
from alpine:latest
RUN apk add --no-cache mysql-client
ENTRYPOINT ['mysql']
'''
 
docker build .

Docker常用的脚本

Git

FROM alpine/git

MAINTAINER yang <yang@163.com>

# 使用阿里云镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# Install base packages
RUN apk --no-cache update && \
    apk --no-cache upgrade && \
    apk --no-cache add curl bash tzdata tar unzip && \ 
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    rm -fr /tmp/* /var/cache/apk/*

# Define bash as default command
CMD ["/bin/bash"]

Maven

FROM maven:3.6-jdk-8-alpine

MAINTAINER yang <yang@163.com>

ARG LOCAL_MAVEN_MIRROR=http://maven.aliyun.com/nexus/content/groups/public/

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

ENV MAVEN_SETING_FILE=/usr/share/maven/conf/settings.xml

VOLUME /var/maven/repository

# Install base packages
RUN apk --no-cache update && \
    apk --no-cache upgrade && \
    apk --no-cache add tzdata unzip git && \ 
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    rm -fr /tmp/* /var/cache/apk/*

COPY settings.xml ${MAVEN_SETING_FILE}
# override default maven docker configuration
RUN cat /usr/share/maven/conf/settings.xml > /usr/share/maven/ref/settings-docker.xml
RUN mkdir -p /root/.m2 && cp /usr/share/maven/conf/settings.xml /root/.m2/settings.xml

Mysql5.7

FROM mysql:5.7.33

# 维护者信息
MAINTAINER yang <yang@163.com>

RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak
COPY buster.sources.list /etc/apt/sources.list

RUN apt-get update && \
    apt-get install -y curl git unzip vim wget && \
    apt-get install -y locales kde-l10n-zhcn && \ 
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN sed -i 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/g' /etc/locale.gen

RUN locale && locale-gen "zh_CN.UTF-8"
       
# Set environment variables.
ENV LANG=zh_CN.UTF-8 \
    LANGUAGE=zh_CN:zh:en_US:en \
    LC_ALL=zh_CN.UTF-8 \
    TZ=Asia/Shanghai \
    DEBIAN_FRONTEND="noninteractive" \
    TERM=xterm

RUN ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \
            echo $TZ > /etc/timezone && \        
            dpkg-reconfigure --frontend noninteractive tzdata && \
            dpkg-reconfigure --frontend noninteractive locales

COPY my.cnf /etc/mysql/my.cnf
RUN mkdir -p /etc/mysql/mysql-my.conf.d/

EXPOSE 3306
CMD ["mysqld"]

Elasticsearch

# https://github.com/elastic/elasticsearch-docker
FROM docker.elastic.co/elasticsearch/elasticsearch:5.3.0

USER root

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# Install base packages
RUN apk --no-cache update && \
    apk --no-cache add curl bash tzdata tar unzip && \ 
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    echo -ne "Alpine Linux 3.4.4 image. (`uname -rsv`)\n" >> /root/.built && \
    rm -fr /tmp/* /var/cache/apk/*

USER elasticsearch

CMD ["/bin/bash", "bin/es-docker"]

EXPOSE 9200 9300

Skywalking

安装服务端:这里介绍服务端的两种存储等式,一种是默认的H2存储,即数据存储在内存中,一种是使用elasticsearch存储,

默认H2存储

输入以下命令,并耐心待下载。

sudo docker run --name skywalking -d -p 1234:1234 -p 11800:11800 -p 12800:12800 --restart always apache/skywalking-oap-server

elasticsearch存储

安装ElasticSearch

sudo docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 --restart always -e "discovery.type=single-node" elasticsearch:6.7.2

安装 ElasticSearch管理界面elasticsearch-hq

sudo docker run -d --name elastic-hq -p 5000:5000 --restart always elastichq/elasticsearch-hq

输入以下命令,并等待下载

sudo docker run --name skywalking -d -p 1234:1234 -p 11800:11800 -p 12800:12800 --restart always --link elasticsearch:elasticsearch -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 apache/skywalking-oap-server 

安装管理界面:

输入以下命令,并等待下载安装。

sudo docker run --name skywalking-ui -d -p 8080:8080 --link skywalking:skywalking -e SW_OAP_ADDRESS=skywalking:12800 --restart always apache/skywalking-ui

访问管理界验证安装结果

在浏览器里面输入http://192.168.150.134:8080,出现了如下界面,到此Skywalking的安装就大功告成了。

Skywalking8.6.0 脚本

# skywalking-oap-server

docker run \
--name skywalking-oap \
--restart always \
-p 11800:11800 \
-p 12800:12800 -d \
--privileged=true \
-e TZ=Asia/Shanghai \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=10.7.1.39:9200 \
-e SW_NAMESPACE=qjd-sw-online \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-oap-server:8.6.0-es7

# skywalking-ui

docker run \
--name skywalking-ui \
--restart always \
-p 8081:8080 -d \
--privileged=true \
--link skywalking-oap:skywalking-oap \
-e TZ=Asia/Shanghai \
-e SW_OAP_ADDRESS=http://10.1.67.88:12800 \
-v /etc/localtime:/etc/localtime:ro \
apache/skywalking-ui:8.6.0

Docker 资源

Docker 资源

  • Docker 官方主页: https://www.docker.com
  • Docker 官方博客: https://blog.docker.com/
  • Docker 官方文档: https://docs.docker.com/
  • Docker Store: https://store.docker.com
  • Docker Cloud: https://cloud.docker.com
  • Docker Hub: https://hub.docker.com
  • Docker 的源代码仓库: https://github.com/moby/moby
  • Docker 发布版本历史: https://docs.docker.com/release-notes/
  • Docker 常见问题: https://docs.docker.com/engine/faq/
  • Docker 远端应用 API: https://docs.docker.com/develop/sdk/

Docker 国内镜像

阿里云的加速器:https://help.aliyun.com/document_detail/60750.html

网易加速器:http://hub-mirror.c.163.com

官方中国加速器:https://registry.docker-cn.com

ustc 的镜像:https://docker.mirrors.ustc.edu.cn

daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)

Search

    微信好友

    博士的沙漏

    Table of Contents