注意:

如果用的是虚拟机,那最好先关闭防火墙,否则会导致后面的操作外部无法访问

前言:

​ 下面的东西都基于已经安装好docker环境说的,没安装、不知道怎么安的可以参考 《Docker - 安装&测试》

一、常用命令

1.帮助命令

docker --help #如果什么命令不知道怎么用了,就--help吧

2.查看现在本地有哪些镜像

docker images

可以看到,如果安装docker时,下载运行了hello-word镜像,并且没有删除,则会有一条记录

执行help命令,查查images还能添加哪些参数

docker images --help

3.镜像搜索&下载&运行&停止&删除

镜像搜索

首先,要知道下载哪些镜像,例如,我要下载mysql,就去搜索

docker search mysql

在远程仓库中搜到了一堆,可以使用--help命令得知可以筛选过滤

docker search mysql -f stars=3000 #查询mysql关注度≥3000的

镜像下载

  • 不指定版本下载

根据上面搜出的结果,我要安装星星最多的

docker pull mysql#下载安装运行当前远程仓库最新的版本

下载后查看下刚下载的镜像

docker images

  • 指定版本下载

去docker hub上搜索,查找有哪些可用版本的镜像 https://hub.docker.com/

知道了可用版本后,就可以用命令下载了

docker pull mysql:5.7

下载完成后,查看下刚下载的镜像

docker images

运行镜像

  • 这里以运行刚刚下载的mysql5.7为例
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw    -d      mysql:tag
# 起个别名 设置登录密码 后台启动 启动指定的版本

​ ps:如果镜像未下载,直接运行run时,会先去下载后再次启动

  • 查看刚刚启动的容器
docker ps

  • 进入刚刚启动的容器中
docker exec  -it       启动的容器id或别名 bash  #重新打开一个命令窗口,开新的进程(常用)
# 交互模式 上一步得到的
docker attach 启动的容器id或别名 #进入当前存在的命令窗口,不开新的进程

  • 退出当前容器

    方法一:Ctrl + p + q (要先按p再按q,否则退不出来)

    方法二:exit

  • 停止运行的容器

docker stop (容器id or 容器名)     # 停止容器
docker kill (容器id or 容器名)     # 强制停止容器

停止后再次ps查看下,已经没了

​ 批量停止容器

docker stop 容器id1 容器id2  # 容器id可切换为别名

  • 重新运行已经停止的容器
#1.通过docker ps -a 找到停止的容器
docker start (容器id or 容器名)     # 启动容器
docker restart (容器id or 容器名)    # 重启容器,在容器停止状态也可以通过这个命令启动

  • 删除已经停止的容器

    注意:这步骤必须先停止,否则删除不了

    1. 先执行下面命令查看所有的镜像
    docker ps -a

    1. 得到已经停止的容器id或名字后,执行
    #删除单个容器
    docker rm myMysql # 容器id也行
    #删除多个容器
    docker rm 容器id1 容器id2 # 容器id可切换为别名
    #删除所有容器
    docker rm $(docker ps -qa) #docker ps -qa 代表的是读取所有的容器id ,可以想成这样:select id from container

  • 查看容器运行日志

docker logs -tf --tail 10 容器id或容器名
  • 查看容器的进程信息
docker top  容器id或容器名
  • 查看容器的基本配置信息(元数据)
docker inspect 容器id或容器名
#可以查看运行状态,完整的容器id,端口映射,数据挂载,网络配置等等信息

删除镜像

1.查看现有镜像

docker images

2.删除指定的镜像id

docker rmi 镜像id #删除一个
docker rmi 镜像id1 镜像id2 #删除多个

3.删除全部镜像

docker rmi $(docker images -qa)

注意,如果有像上图一样,同样是mysql,版本不一样,有两个相同的id,会提示无法删除,这样只能是指定名字删除

docker rmi mysql:8.0.20 # "mysql:8.0.20"这个如果不指定版本号默认删除latest版本

将容器内的文件复制到外部服务器中

  1. 进入启动的容器

    docker exec -it mysql01 bash
  2. 在容器内创建一个文件夹和文件

    mkdir test#创建文件夹
    cd test #进入创建的文件夹
    touch a.txt #在test文件夹下创建一个文件

  1. 退出容器,执行下面的命令

      docker cp mysql01:/usr/local/test/a.txt /home
    # 要拷贝的容器id或名字 : 要拷贝文件在容器的位置 要拷贝到外部服务器什么位置
  2. 执行完后外部服务器查看下是否存在

4.其他常用命令

attach  Attach to a running container         # 当前 shell 下attach 连接指定运行镜像
build   Build an image from a Dockerfile        # 通过 Dockerfile 定制镜像
commit  Create a new image from a container changes  # 提交当前容器为新的镜像
cp    Copy files/folders from the containers filesystem to the host path #从容器中拷贝指定文件或者目录到宿主机中
create  Create a new container             # 创建一个新的容器,同run,但不启动容器
diff   Inspect changes on a container's filesystem  # 查看 docker 容器变化
events  Get real time events from the server      # 从 docker 服务获取容器实时事件
exec   Run a command in an existing container     # 在已存在的容器上运行命令
export  Stream the contents of a container as a tar archive  # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history  Show the history of an image          # 展示一个镜像形成历史
images  List images                  # 列出系统当前镜像
import  Create a new filesystem image from the contents of a tarball # 从tar包中的内容创建一个新的文件系统映像[对应export]
info   Display system-wide information        # 显示系统相关信息
inspect  Return low-level information on a container  # 查看容器详细信息
kill   Kill a running container            # kill 指定 docker 容器
load   Load an image from a tar archive        # 从一个 tar 包中加载一个镜像[对应 save]
login   Register or Login to the docker registry server   # 注册或者登陆一个docker 源服务器
logout  Log out from a Docker registry server      # 从当前 Docker registry 退出
logs   Fetch the logs of a container         # 输出当前容器日志信息
port   Lookup the public-facing port which is NAT-ed to PRIVATE_PORT   #查看映射端口对应的容器内部源端口
pause   Pause all processes within a container     # 暂停容器
ps    List containers                # 列出容器列表
pull   Pull an image or a repository from the docker registry server  #从docker镜像源服务器拉取指定镜像或者库镜像
push   Push an image or a repository to the docker registry server   #推送指定镜像或者库镜像至docker源服务器
restart  Restart a running container          # 重启运行的容器
rm    Remove one or more containers         # 移除一个或者多个容器
rmi    Remove one or more images       # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
run    Run a command in a new container        # 创建一个新的容器并运行一个命令
save   Save an image to a tar archive         # 保存一个镜像为一个tar 包[对应 load]
search  Search for an image on the Docker Hub     # 在 docker hub 中搜索镜像
start   Start a stopped containers           # 启动容器
stop   Stop a running containers           # 停止容器
tag    Tag an image into a repository         # 给源中镜像打标签
top    Lookup the running processes of a container  # 查看容器中运行的进程信息
unpause  Unpause a paused container           # 取消暂停容器
version  Show the docker version information      # 查看 docker 版本号
wait   Block until a container stops, then print its exit code  # 截取容器停止时的退出状态值

二、安装几个镜像巩固下

PS:只是为了安装练习Docker命令,不会更深一度的去配置调试mysql\es等等

安装Mysql

上面已经安装了,但是没有暴漏端口,也就是说外部无法通过sqlyog\navicat连接,下面看下远程如何连接

  1. run时指定暴漏的端口
docker run --name mysql01       -p 3307:3306             -e MYSQL_ROOT_PASSWORD=123    -d      mysql:5.7
# 容器名字 容器内3306端口对外暴漏3307 设置密码 后台运行 启动镜像和版本
  1. 使用sqlyog\navicat连接

  1. 我这边连接的时候出现连不上的情况,因为我用的是虚拟机,在windows系统睡眠->唤醒后会导致这个情况,需要执行下面命令再次连接
systemctl restart docker

安装Nginx

1.DockerHub查看对应版本

​ 操作步骤见 查找版本

2.执行镜像下载(我就用最新的版本)

docker pull nginx

3.启动刚刚下载的镜像,并且将nginx内部80端口对外暴漏为81端口

docker run --name mynginx -p 81:80 -d nginx

4.浏览器访问虚拟机的地址,发现nginx已经启动了

安装Tomcat

1.DockerHub查看对应版本

​ 操作步骤见 查找版本

2.执行镜像下载(这个太多了,我还是用我项目目前使用的吧8.5)

docker pull tomcat:8.5

3.运行tomcat镜像,并且将默认的8080端口对外暴漏为82

docker run --name mytomcat -p 82:8080 -it -d tomcat:8.5

4.因为下载的镜像都是精简过的,所以没有页面,还需要登录tomcat容器,修改一些东西

  • 将webapps删除
root@6bcebdb36a1c:/usr/local/tomcat# ls
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps webapps.dist work
  • 将webapps.dist改名为webapps

    ps:目的就是为了好看,能看到tomcat默认页面,往里面放项目也行

    5.浏览器访问,成功

安装ElasticSearch

1.DockerHub查看对应版本

​ 操作步骤见 查找版本

2.执行镜像下载(我用7.7.1)

docker pull elasticsearch:7.7.1

3.运行,并且对外暴漏9200和9300等配置

docker run --name es -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m"  elasticsearch:7.7.1
#docker run --name 容器起名字 -d(后台运行) -p 暴漏连接端口 -p 暴漏集群通讯端口 -e 集群模式 -e 设置es最小最大使用内存
#下载的es镜像

4.启动需要点时间,可以通过下面命令查看启动日志,是否报错

docker logs -t           -f       --tail 10           es
# 显示时间 持续输出日志 开始显示几行日志 上一步指定的容器名字或id

5.浏览器访问成功即安装成功

安装Kibana

1.DockerHub查看对应版本

​ 操作步骤见 查找版本

2.首先在外部创建一个kibana.yml配置文件,目的是让kibana连接到我另外一个容器的ES服务

配置内容:

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://192.168.1.232:9200"] #es容器对外ip
xpack.monitoring.ui.container.elasticsearch.enabled: true

3.执行镜像下载(因为ES我用7.7.1,所以kibana一定要用7.7.1)

docker run --name kibana01 -d -p 5601:5601 -v /usr/local/kibana_conf/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.7.1
# 上一步的配置文件路径 容器内kibana配置文件路径

4.启动需要点时间,可以通过下面命令查看启动日志,是否报错

docker logs -t           -f       --tail 10           kibana01
# 显示时间 持续输出日志 开始显示几行日志 上一步指定的容器名字或id

5.浏览器访问验证 http://192.168.1.232:5601

三、总结

至此,docker镜像的基本命令差不多了,在研究完常用命令时,觉得学的差不多了,但在实际安装镜像的时候,还是发现很多镜像用不好,例如,常用命令中就没有写到 docker logs,但这个在实际安装中确实很实用,能知道镜像是否启动,启动是否报错,还是要多多练习。

Docker-镜像常用命令&安装Mysql\Nginx\ES\Kibana练习的更多相关文章

  1. Docker镜像常用命令

    镜像(image)是Docker三大核心概念中最重要的,是运行容器的前提. Docker运行容器前需要本地存在对应的镜像,如果镜像没保存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Dock ...

  2. Docker:常用命令大全 [七]

    一.docker的命令的解释 1.命令解释 docker run -d -p 80:80 nginx run (创建并运行一个容器) -d 放在后台 -p 端口映射 nginx docker镜像的名字 ...

  3. 【Docker入门】Docker的常用命令

    ​ ​ 了解和安装完docker之后,我们学习一下docker的常用命令就和当初学linux命令一样,放心命令其实大致相同只不过细节不同. 一.Docker启动类命令 1.启动docker:syste ...

  4. centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记

    centos 6.5下安装mysql+nginx+redmine 3.1.0 笔记 目录[-] 过程 1.安装RVM 2.利用rvm安装 Ruby 1.9.3 并设为默认 3.安装rails 4.安装 ...

  5. Docker(二十二)-Docker Swarm常用命令

    #查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...

  6. Docker Swarm常用命令

    #查看集群节点 docker node ls #创建nginx服务 #docker pull hub.test.com:5000/almi/nginx:0.1 #下载私有仓库镜像 docker ser ...

  7. Docker学习(三)认识Docker和常用命令

    Docker学习(三)认识Docker和常用命令 Docker体系结构 docker服务端,作为服务的提供方,核心进程 docker daemon,所有docker命令都是通过这个进程完成的 REST ...

  8. docker-管理镜像常用命令

    1. docker管理镜像常用命令 指令 说明 docker   run     [容器 CONTAINER ID] 创建一个新的容器并运行一个命令 docker   start   [容器 CONT ...

  9. Docker Kubernetes 常用命令

    Docker Kubernetes 常用命令 增 # 通过文件名或标准输入创建资源. kubectl create # 读取指定文件内容,进行创建.(配置文件可指定json,yaml文件). kube ...

随机推荐

  1. Argo 安装和 workflow 实例配置文件解析

    一.Argo 安装配置 1.1 Argo 安装 $ kubectl create ns argo $ kubectl apply -n argo -f https://raw.githubuserco ...

  2. JAVA类加载器二 通过类加载器读取资源文件

    感谢原文作者:不将就! 原文链接:https://www.cnblogs.com/byron0918/p/5770684.html 一.getResourceAsStream方法 getResourc ...

  3. SpringBoot+Dubbo+ZooKeeper+Maven入门实践

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11798626.html 注*** 本实例为仅适合初学者,关于dubbo和springboot以 ...

  4. 简单实现UITableView索引功能(中英文首字母索引) (二) By HL

    简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗 相关类: NSString+PinYing(获取中英文首字母)   参考上面链接 #import "ViewCon ...

  5. Docker的资源控制管理

    Docker的资源控制管理 1.CPU控制 2.对内存使用进行限制 3.对磁盘I/O配额控制的限制 1.CPU控制: cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespa ...

  6. 网络层主要协议与arp欺骗

    网络层主要协议与arp欺骗 目录 网络层主要协议与arp欺骗 一.网络层(Network Layer) 1.网络层的功能 2.IP数据报(IP Datagram) 二.网络层的主要协议 1.ICMP协 ...

  7. CopyOnWriteList揭秘

    List的并发容器-CopyOnWriteList Vector和SynchronizedList ArrayList是用来代替Vector,Vector是线程安全的容器,因为它在方法上都加上了syn ...

  8. python文件操作方式

    一.文件操作 1.什么是文件 文件是操作系统暴露给用户能够快捷方便操作硬盘的快捷方式(接口) 2.代码如何操作文件 关键字:open() 三步走: 1.利用关键字open打开文件 2.利用其他方法操作 ...

  9. 我是如何破解你的WINDOWS密码的 ?(1)

    我是如何破解你的WINDOWS密码的 ?(1) 密码可以看作我们主要,甚至某些情况下唯一可用于防范入侵的防线.就算入侵者无法在物理上接触到计算机,对于对外的Web应用,他们依然可以通过远程桌面协议或身 ...

  10. Java在算法题中的输入问题

    Java在算法题中的输入问题 在写算法题的时候,经常因为数据的输入问题而导致卡壳,其中最常见的就是数据输入无法结束. 1.给定范围,确定输入几个数据 直接使用普通的Scanner输入数据范围,然后使用 ...