Docker(二):Docker常用命令和安装Nginx与Tomcat

Docker 2020-05-29 1112 次浏览 本文字数:4526字

本文主要内容:Docker常用容器、镜像命令和安装Nginx与Tomcat

Docker帮助命令

1. docker version     # 显示Docker的版本信息
2. docker info           # 显示Docker的系统信息(包含镜像与容器的数量)
3. docker 命令 --help  # 查看帮助(就是显示这个命令有什么可选项)

Docker镜像命令

  1. docker images:显示本机上所有安装镜像

    [root@MT ~]# docker images
    
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    centos              latest              470671670cac        4 months ago        237MB
    hello-world         latest              bf756fb1ae65        4 months ago        13.3kB
    
    # 可选项
    docker images -a # 列出所有的镜像
    docker images -q # 只显示镜像的id
    
    [root@MT ~]# docker images -aq
    470671670cac
    bf756fb1ae65
  2. docker search:搜索镜像

    [root@MT ~]# docker search mysql(镜像名)
    
    NAME                              DESCRIPTION                                     STARS
    mysql                             MySQL is a widely used, open-source relation…   9553             
    mariadb                           MariaDB is a community-developed fork of MyS…   3471 
    
    # 可选项
    docker search mysql -f=STARS=3000 # 列出镜像星数大于3000的镜像
  3. docker pull:下载镜像

    [root@MT ~]# docker pull mysql      # 下载最新版本的MySQL
    [root@MT ~]# docker pull mysql:5.7  # 下载指定版本的MySQL
  4. docker rmi:删除镜像

    docker rmi -f 镜像id                      # 删除指定的镜像
    docker rmi -f 镜像id 镜像id 镜像id 镜像id  # 删除指定的镜像
    docker rmi -f $(docker images -aq)       # 删除全部的镜像

Docker容器命令

  1. docker run [可选参数] 镜像名

    [root@MT ~]# docker run 可选参数 镜像名
    
    # 可选参数
    --name=”xxx“    # 容器名字
    -d              # 后台模式运行
    -it             # 使用交互模式运行,进入容器查看内容
    -p(小学)         # 指定端口映射 如:-p 8080(宿主机):8080(容器)
    -P(大写)         # 随机端口映射
    
    # 测试启动进入与退出容器
    [root@MT ~]# docker run -it centos /bin/bash           # /bin/bash 是使用命令行进入
    [root@6130f0353526 /]# ls                              # 此时已经进入Docker的CentOS容器
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    [root@6130f0353526 /]# exit
    exit
    [root@MT ~]#
    
  2. docker ps [可选参数]:列出运行的容器

    [root@MT ~]# docker ps 可选参数
    
    # 可选参数
    -a       # 列出正在运行和历史运行过的容器
    -q       # 列出容器ID
    
    [root@MT ~]# docker ps -aq
    6130f0353526
    895577bc1ae7
    f9fc9c23267d
    faab3fceb1d3
  3. 退出容器

    exit          # 容器直接退出
    Ctrl + P + Q  # 容器不停止退出
  4. 删除容器

    docker rm -f 容器id              # 删除指定容器(不能删除正在运行的,如需要rm-rf)
    docker rm -f $(docker ps -aq)    # 删除所有容器
  5. 启动和停止容器操作

    docker start 容器id      # 启动容器
    docker restart 容器id    # 重启容器
    docker stop 容器id       # 停止正在运行的容器
    docker kill 容器id       # 强制停止

Docker其它命令

容器后台方式运行

[root@MT ~]# docker run -d centos
748d11ff226983ab8281fc6741087e6a3f349ad03f0cadafcd215aed894978dc
[root@MT ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
 # 问题:我们此时已经发现启动CentOS,但是确查不到正在运行的容器
 # 解释:Docker容器使用后台运行,就必须要有要一个前台进程,Docker发现没有应用,就会自动停止

查看日志

docker logs -tf 容器id             # 查看实时日志  
docker logs -t --tail 数量 容器id  # 查看指定数量的日志           

查看容器中的进程信息

docker top 容器id

查看镜像的元数据

docker inspect 容器id

进入当前正在运行的容器

# 通常我们是使用后台方式运行容器,因为我们可能需要进入容器,修改配置

# docker exec -it 容器ID /bin/bash (常用)
# docker attach 容器ID

# exec方式:就是类似新开一个窗口连接运行的容器
# attach方式:就是直接连入当前的容器

拷贝容器内文件到宿主机中

docker cp 容器id:文件路径(容器内) 目的路径(宿主机)
[root@MT ~]docker cp 1a9a6785c37c:/home/c.java /home/

Docker安装Nginx

# 1. 搜索镜像 search 建议大家去docker搜索,可以看到帮助文档
docker search nginx
# 2. 拉取镜像 docker pull nginx
docker pull nginx
# 3. 运行测试
  # -d 后台运行
  # --name 给容器命名
  # -p 宿主机端口:容器内部端口(我这里使用阿里云的3344端口,前提要在阿里云安全组开放次端口)
docker run -d --name nginx -p 3344:80 nginx
# 4.查看镜像
docker ps
# 5.测试是否成功
curl localhost:3344 # 或者在浏览器输入ip:3344

Docker安装Tomcat

# 下载tomcat镜像
docker pull tomcat:9.0
# 运行tomcat镜像
docker run -d tomcat -p 3344:8080 tomcat
# 测试
curl localhost:3344  # 此时发现无法访问
# 原因:tomcat容器里面webapps目录下没有文件
# 进入容器
docker exec -it ef41045bea2b /bin/bash
cp -r webapps.dist/* webapps
# 重新测试 在浏览器输入ip:3344 --> 发现成功访问

本文由 WarlockMT 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。