docker--常用命令(一)

简介: docker--常用命令

前戏


我们使用docker --help来查看下都有哪些命令

View Code


搜索镜像


docker search jenkins  # 搜索所有的jenkins的docker镜像
[root@HH ~]# docker search jenkins 
NAME                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
jenkins                                Official Jenkins Docker image                   4453                [OK]                
jenkins/jenkins                        The leading open source automation server       1706                                    
jenkinsci/blueocean                    https://jenkins.io/projects/blueocean           442                                     
jenkinsci/jenkins                      Jenkins Continuous Integration and Delivery …   371                                     
jenkinsci/jnlp-slave                   A Jenkins slave using JNLP to establish conn…   114                                     [OK]
jenkins/jnlp-slave                     a Jenkins agent (FKA "slave") using JNLP to …   96                                      [OK]
jenkinsci/slave                        Base Jenkins slave docker image                 57                                      [OK]
jenkinsci/ssh-slave                    A Jenkins SSH Slave docker image                39                                      [OK]
cloudbees/jenkins-enterprise           CloudBees Jenkins Enterprise (Rolling releas…   34                                      [OK]
jenkins/slave                          base image for a Jenkins Agent, which includ…   32

NAME:名称。DESCRIPTION:描述。STARS:点赞数。OFFICIAL:官方。AUTOMATED:自动化

搜索镜像且过滤是非官方的

docker search --filter "is-official=true" centos


获取镜像


从docker registry获取镜像的命令是docker pull。命令格式是:

docker pull [选项][docker registry地址] 仓库名:标签

docker是把应用程序和其依赖打包在image文件里面,只有通过这个镜像文件才能生成docker容器。

一个image文件可以生成多个容器实例。

可以使用docker pull命令来从仓库获取所需要的镜像,比如下载一个jenkins的镜像

docker pull jenkins  # 获取jenkins镜像
[root@HH ~]# docker pull jenkins
Using default tag: latest
latest: Pulling from library/jenkins
55cbf04beb70: Pull complete 
1607093a898c: Pull complete 
9a8ea045c926: Pull complete 
d4eee24d4dac: Pull complete 
c58988e753d7: Pull complete 
794a04897db9: Pull complete 
70fcfa476f73: Pull complete 
0539c80a02be: Pull complete 
54fefc6dcf80: Pull complete 
911bc90e47a8: Pull complete 
38430d93efed: Pull complete 
7e46ccda148a: Pull complete 
c0cbcb5ac747: Pull complete 
35ade7a86a8e: Pull complete 
aa433a6a56b1: Pull complete 
841c1dd38d62: Pull complete 
b865dcb08714: Pull complete 
5a3779030005: Pull complete 
12b47c68955c: Pull complete 
1322ea3e7bfd: Pull complete 
Digest: sha256:eeb4850eb65f2d92500e421b430ed1ec58a7ac909e91f518926e02473904f668
Status: Downloaded newer image for jenkins:latest
docker.io/library/jenkins:latest

拉取指定版本,用:

docker pull jenkins:1.12  # 获取jenkins1.12的镜像

下载过程可以看出镜像是由多层存储构成的。下载也是一层一层,并非单一的文件。

下载过程中给出每一层的前12位ID。下载结束后会给出sha246的文件一致性校验值


查看docker镜像


docker images  # 查看docker镜像


删除docker镜像


如果要移除本地的镜像,可以使用docker rmi命令(在删除镜像之前先用docker rm删除依赖于这个镜像的所有容器)。注意docker rm 命令是移除容器。

docker rmi imageID  #删除docker镜像
或者
docker rmi 镜像名字


删除所有的镜像

docker rmi `docker images -aq`   #一次性删除所有镜像记录,反单引号


导出docker镜像


有时候我们的镜像,别人也要使用,我们可以把我们的镜像导出给别人使用,使用docker save命令

docker save jenkins > /tmp/jenkins.tar.gz  # 导出docker镜像到本地的tmp目录下


导入docker镜像


上面别人给我们导出了他的镜像,那我们就要导入了,删除自己的docker镜像在导入

docker load < /tmp/jenkins.tar.gz  # 导入本地镜像到docker镜像库

导入完之后查看docker镜像库

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins             latest              cd14cecfdb3a        14 months ago       696MB


启动docker容器


启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。

因为Docker的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。


新建容器并启动


使用docker run启动容器

[root@HH ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins             latest              cd14cecfdb3a        14 months ago       696MB
[root@HH ~]# docker run cd14

这样就启动了一个容器,但这样有缺点,我们关掉窗口或者ctrl+c就终止了,所以在启动的时候我们可以加上参数-d,表示后台启动

[root@HH ~]# docker run -d jenkins  也可以通过id启动
4ee88fb080c7718fd68bc5dfbea01e10048df8fd00e461cdec166be594064293

docker run就是运行容器的命令。

参数

  • -it : -i 是交互式操作,-t是终端
  • -rm : 容器退出后将其删除。也可以不指定参数,手动docker rm,使用-rm可以避免浪费空间。
  • bash : 指定用交互式的shell,因此需要bash命令

当利用docker run来创建容器时,Docker在后台运行的标准操作包括

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂在一层 可读写层
  • 从宿主机配置的网桥接口桥接一个虚拟 接口到容器中去
  • 从地址池配置一个 ip地址给容器
  • 执行用户指定的 应用程序
  • 执行完毕后容器被终止


查看正在运行的容器


通过docker ps就可以查看运行的容器

[root@HH ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
4ee88fb080c7        jenkins             "/bin/tini -- /usr/l…"   4 minutes ago       Up 4 minutes        8080/tcp, 50000/tcp   brave_wilson

后面的NAMES参数是docker给我们生成的,我们也可以自定义,在启动的时候加上--name参数

[root@HH ~]# docker run -d --name MyJenkins jenkins
1603ebfad9aaff6c2ec1bfa6e5300ac711a716d8bea3b0fed37c6bbc38b354b1
[root@HH ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
1603ebfad9aa        jenkins             "/bin/tini -- /usr/l…"   9 seconds ago       Up 8 seconds        8080/tcp, 50000/tcp   MyJenkins


停止正在运行的容器


通过docker stop 容器id/names都可以停止容器

[root@HH ~]#  docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
4ee88fb080c7        jenkins             "/bin/tini -- /usr/l…"   7 minutes ago       Up 7 minutes        8080/tcp, 50000/tcp   brave_wilson
[root@HH ~]#
[root@HH ~]# docker stop brave_wilson
brave_wilson
[root@HH ~]# docker stop 40db
40db


查看所有的容器


docker ps -a 可以查看停止和运行的容器

[root@HH ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES
40db302d030b        jenkins             "/bin/tini -- /usr/l…"   2 minutes ago       Exited (143) About a minute ago                       admiring_morse
4ee88fb080c7        jenkins             "/bin/tini -- /usr/l…"   9 minutes ago       Exited (143) 2 minutes ago                            brave_wilson
d6e046c9d2ff        cd14                "/bin/tini -- /usr/l…"   12 minutes ago      Exited (130) 11 minutes ago                           vigorous_greider


查看容器详细信息


docker inspect 容器名/容器id
[root@WC ~]# docker inspect mycentos

结果


删除容器记录


通过docker rm 容器ID来删除

[root@dce88 ~]# docker rm -h
Flag shorthand -h has been deprecated, please use --help
Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]
Remove one or more containers # 删除一个或多个容器
Options:
  -f, --force     Force the removal of a running container (uses SIGKILL) # 强制删除一个正在运行的容器(使用SIGKILL)。
  -l, --link      Remove the specified link  # 删除指定的链接
  -v, --volumes   Remove anonymous volumes associated with the container # 删除与容器相关的匿名卷

基本使用

[root@HH ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
40db302d030b        jenkins             "/bin/tini -- /usr/l…"   About an hour ago   Exited (143) About an hour ago                       admiring_morse
4ee88fb080c7        jenkins             "/bin/tini -- /usr/l…"   2 hours ago         Exited (143) About an hour ago                       brave_wilson
d6e046c9d2ff        cd14                "/bin/tini -- /usr/l…"   2 hours ago         Exited (130) 2 hours ago                             vigorous_greider
[root@HH ~]# docker rm 40db     删除容器记录
40db
[root@HH ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
4ee88fb080c7        jenkins             "/bin/tini -- /usr/l…"   2 hours ago         Exited (143) About an hour ago                       brave_wilson
d6e046c9d2ff        cd14                "/bin/tini -- /usr/l…"   2 hours ago         Exited (130) 2 hours ago                             vigorous_greider

通过rm删除的是已停止的,如果是正在运行的会报错

[root@HH ~]# docker rm 00436
Error response from daemon: You cannot remove a running container 00436eade5368cad1f93e9e1ef9c3cc5da3738a0f17a7e1b6e2669e7c379ca54. Stop the container before attempting removal or force remove

可以通过-f参数强制删除

[root@HH ~]# docker rm -f 00436
00436
[root@HH ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
3c4cb6a23761        jenkins             "/bin/tini -- /usr/l…"   30 minutes ago      Up 30 minutes       50000/tcp, 0.0.0.0:8000->8080/tcp   myjenkins

一次性删除所有容器记录

docker rm `docker ps -aq` # 一次性删除所有容器id记录
` `   #反引号是取命令的运行结果


启动终止状态的容器


通过docker start 容器ID来启动

[root@HH ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                           PORTS               NAMES
4ee88fb080c7        jenkins             "/bin/tini -- /usr/l…"   2 hours ago         Exited (143) About an hour ago                       brave_wilson
d6e046c9d2ff        cd14                "/bin/tini -- /usr/l…"   2 hours ago         Exited (130) 2 hours ago                             vigorous_greider
[root@HH ~]# docker start 4ee8   启动停止的容器
4ee8
[root@HH ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                 NAMES
4ee88fb080c7        jenkins             "/bin/tini -- /usr/l…"   2 hours ago         Up 3 seconds               8080/tcp, 50000/tcp   brave_wilson
d6e046c9d2ff        cd14                "/bin/tini -- /usr/l…"   2 hours ago         Exited (130) 2 hours ago                         vigorous_greider

相关文章
|
2月前
|
安全 Docker 容器
|
2月前
|
网络安全 数据安全/隐私保护 Docker
|
3天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
118 77
|
1月前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
368 11
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
2天前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
51 5
|
3月前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
204 56
|
2月前
|
存储 监控 安全
|
2月前
|
存储 关系型数据库 MySQL
|
2月前
|
网络协议 Docker 容器
docker pull命令拉取镜像失败的解决方案
docker pull命令拉取镜像失败的解决方案
1209 1
|
2月前
|
安全 网络安全 开发者
Docker学习笔记(一):Docker命令总结
本文介绍了Docker的基本概念、优点以及常用命令。Docker是一个开源的应用容器引擎,它通过容器打包应用程序及其依赖项,实现快速部署和迁移。主要优点包括轻量级、可移植性、易于管理、安全性和开源性。文章还区分了镜像和容器的概念,并提供了构建镜像、查看容器、运行容器、停止和删除容器等常用Docker命令的示例。
145 0