专栏首页Java开发必知必会Docker--容器和镜像的使用

Docker--容器和镜像的使用

一:容器的使用

  • 使用容器我们可以通过Docker客户端进行操作,使用Docker命令我们可以看到所有的客户端命令
# docker      //可以看到简洁版的

# man docker  //可以看到该命令的详细解释

# docker command --help  //详细了解command命令的用法
  • 使用Docker运行一个web应用
# docker pull training/webapp             
//载入镜像

# docker run -d -P training/webapp python app.py  
//创建容器,后台运行web应用

# docker ps  
//查看进程

# docker run -d -p 4999:5000 training/webapp python app.py   
//使用-p参数设置端接口号,格式:4999(本地4999端口):5000(容器的5000端口,默认的python flask端口。python flask详情:https://blog.csdn.net/u012734441/article/details/62036503) 

# docker port 容器Id或者容器名
//查看容器的端口

//参数:
* -d: 让容器在后台运行。
* -P: 将容器内部使用的网络端口映射到我们使用的主机上。
* -p: 修改本地映射的端口。

docker ps结果为:

可以看到ports字段,显示的为Docker的5000对应了本地的1024端口,我们在浏览器输入:”本地服务器ip:1024 “,就可以看到web运行的结果。

  • 显示容器的程序日志、
# docker logs 容器Id或者容器名
//静态显示容器的运行日志

# docker logs -f  容器Id或者容器名
//动态显示容器的运行日志
  • 查看容器内部运行的进程
# docker top 容器Id或者容器名
//显示容器内部运行的进程,显示结果如下:

UID             PID             PPID            C               STIME           TTY             TIME            CMD

root            13096           13078           0               16:49           ?               00:00:00        python app.py

。。。。。。。
  • 检查容器,显示容器的所有信息
# docker inspect 容器Id或者容器名
//显示Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。示例如下:

[

    {

        "Id": "b4e66581cadb896107f1e9edf036bf7174593f544b16f1ffddcd04b8532e2532",

        "Created": "2018-10-12T08:49:26.027911855Z",

        "Path": "python",

        "Args": [

            "app.py"

        ],

        "State": {

            "Status": "running",

            "Running": true,

            "Paused": false,

            "Restarting": false,

            "OOMKilled": false,

            "Dead": false,

            "Pid": 13096,

            "ExitCode": 0,

            "Error": "",

            "StartedAt": "2018-10-12T08:49:26.274568849Z",

            "FinishedAt": "0001-01-01T00:00:00Z"

        },

        "Image": "sha256:6fae60ef344644649a39240b94d73b8ba9c67f898ede85cf8e947a887b3e6557",

        .....................
  • 停止容器
# docker stop 容器Id或者容器名
  • 启动与重启容器
# docker start  容器Id或者容器名
//启动已经被停止的容器

# docker restart 容器Id或者容器名
//重启正在运行的容器

# docker ps -l 
//显示最后一个创建的容器
  • 删除不需要的容器
# docker rm 容器Id或者容器名
//删除容器,注意:删除的容器必须是非运行状态的,否则会删除不成功报错,

二:镜像的使用

  • 列出镜像列表
    • 同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
    • 如果不指定一个镜像的版本标签,例如你只使用 ubuntu,docker 将默认使用 ubuntu:latest 镜像。
docker images

####参数说明:
* REPOSITORY:表示镜像的仓库源
* TAG:镜像的标签
* IMAGE ID:镜像ID
* CREATED:镜像创建时间
* SIZE:镜像大小
  • 获取新的镜像
    • 在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它。
docker pull tomcat
#不指定镜像的tag便是下载最新的latest

docker pull tomcat:8
#指定镜像tag
  • 查找镜像
    • 我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
    • 我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像
docker search httpd

###参数说明:
* NAME:镜像仓库源的名称
* DESCRIPTION:镜像的描述
* OFFICIAL:是否docker官方发布
  • 创建镜像
####方式一:从已经创建的容器中更新镜像,并且提交这个镜像

##:需要有一个容器
docker run -t -i ubuntu:15.10 /bin/bash

##:在运行的容器内使用 apt-get update 命令进行更新
apt-get update

##:退出容器
exit命令  或者 ctrl + c   

##:通过命令 docker commit来提交容器副本为新镜像
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
* -m:提交的描述信息
* -a:指定镜像作者
* e218edb10161:容器ID
* runoob/ubuntu:v2:指定要创建的目标镜像名

##:查看提交的新镜像,创建新镜像完毕
docker images
####:方式二: 使用 Dockerfile 来创建一个新的镜像

请移步:https://blog.csdn.net/CSDN___LYY/article/details/83061188
  • 设置(修改)镜像标签
    • 使用 docker tag 命令,为镜像添加一个新的标签
docker tag 860c279d2fec runoob/centos:dev

##参数介绍:
* docker tag : 创建标签
* 860c279d2fec : 镜像的唯一ID
* runoob/centos:dev : 新的名称与标签
  • 删除镜像
docker rmi <options> <imageID>or<imageName>

##参数options:
* -f :强制删除;
* --no-prune :不移除该镜像的过程镜像,默认移除;
  • 查看镜像变动历史
docker  history  <options> <imageID>or<imageName>

##参数options:
* -H :以可读的格式打印镜像大小和日期,默认为true;
* --no-trunc :显示完整的提交记录;
* -q :仅列出提交记录ID。
  • 镜像归档为tar文件
    • 归档为文件后,便于对镜像进行迁移
docker save -o <filename.tar> <imageID>or<imageName>

##参数:
-o  filename.tar: 指定输出到的文件
  • 从tar文件导入镜像
docker import -m "new image"  file_path

##参数:
* -c :应用docker 指令创建镜像;
* -m :提交时的说明文字;

参考:http://www.runoob.com/docker/docker-command-manual.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker--DockerFile与镜像

        Dockerfile是一个用于引导docker镜像生成过程的文件,遵循其特定的语法,我们便可以创建一个自己的镜像。

    洋仔聊编程
  • Docker--常用命令

    ps:本博文为整理博文,是楼主在学习过程中整理的资源便于以后学习,借鉴的资源都已在文末标出。

    洋仔聊编程
  • Docker--docker ps 命令与结果解析

    里面包含ps的详细使用教程,虽然是英文的但是实例有一点英语功底就可以看懂,其中包含ps的模糊查询等。

    洋仔聊编程
  • Docker常用命令

    YINUXY
  • 【技术分享】docker基础

    我们在写代码的过程中,或多或少都会遇到这样的问题:写了代码,在别人电脑上运行不了,一检查,别人电脑缺环境。

    木又AI帮
  • Docker入门-常用命令

    Docker运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker会从镜像仓库下载该镜像。

    小码农薛尧
  • 「docker实战篇」python的docker-docker镜像的创建使用docker commit命令(32)

    PS:到此第一次完成了镜像的定制。使用的命令就是docker commit,手动操作给旧的镜像添加了一个新的层形成了一个新的镜像,大家对镜像多层分组应该有了感觉...

    IT故事会
  • 【Linux】使用docker搭建Apache/Nginx服务器

    Docker的容器镜像是轻量的、可执行的独立软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。

    一名白帽的成长史
  • Docker容器技术(指令篇)

    注:同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。如果你不指定一个镜像的版本标签,例如你只...

    用户7386338
  • Docker的镜像与容器常见面试答疑及命令行操作

    要让Docker能够正常工作,需要的是容器和镜像,它们是Docker的地基。镜像是一个模板,是运行一个应用程序所需的文件。容器是由镜像创建的,用来执行隔离的应用...

    角落的白板报

扫码关注云+社区

领取腾讯云代金券