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

相关文章
|
4天前
|
存储 Shell Docker
docker 部署单节点的etcd以及 常用使用命令
在 Docker 中部署单节点的 etcd 以及一些常用命令的操作,可以按照以下步骤进行: ## 一、部署单节点 etcd 1. **拉取 etcd Docker 镜像**:您可以从 Docker Hub 拉取 etcd 的官方镜像。 ```shell docker pull quay.io/coreos/etcd:latest ``` 2. **启动 etcd 容器**:使用 `docker run` 命令来启动 etcd 容器。以下是一个示例命令,其中将容器的 2379 端口映射到主机的 2379 端口: ```shell docker run -d \
|
4天前
|
NoSQL Linux Shell
2.Docker常用命令(linux)
2.Docker常用命令(linux)
|
6天前
|
存储 运维 Linux
Docker详解(六)——Docker高级控制命令
Docker详解(六)——Docker高级控制命令
13 2
|
6天前
|
运维 监控 Linux
【专栏】举几个Docker ps 命令的例子,Linux运维必知
【4月更文挑战第28天】本文介绍了Docker命令`docker ps`的使用,包括列出运行中的容器、筛选特定容器、组合使用与其他命令配合以及在故障排查中的应用。通过基础和高级用法示例,如列出所有容器、搜索特定镜像、监控资源使用等,帮助读者理解和提升容器管理效率。对于Linux运维工程师,掌握`docker ps`是必备技能。
|
10天前
|
Ubuntu Linux Shell
Docker 镜像及其命令
Docker 镜像及其命令
50 0
|
10天前
|
存储 Ubuntu 安全
Docker容器常用命令
Docker容器常用命令
22 1
|
10天前
|
关系型数据库 MySQL Linux
[Docker] 的常用命令
[Docker] 的常用命令
|
11天前
|
监控 Docker 容器
Docker从入门到精通:Docker log 命令学习
了解 Docker 日志管理对容器监控至关重要。`docker logs` 命令用于查看和管理容器日志,例如,`docker logs &lt;container_name&gt;` 显示容器日志,`-f` 或 `--follow` 实时跟踪日志,`--tail` 显示指定行数,`--timestamps` 添加时间戳,`--since` 按日期筛选。Docker 支持多种日志驱动,如 `syslog`,可通过 `--log-driver` 配置。有效管理日志能提升应用程序的稳定性和可维护性。
13 0
|
12天前
|
Docker 容器
Docker常用命令实例
Docker常用命令实例
24 1
|
20天前
|
存储 Ubuntu Docker
Docker从入门到精通:Docker pull命令学习
了解Docker镜像下载方法!使用`docker pull`命令从[Docker Hub](https://hub.docker.com/)获取镜像。基本语法是`docker pull NAME[:TAG]`。例如,拉取Python最新镜像的命令是`docker pull python`或`docker pull python:latest`。可选参数包括`-a`(拉取所有标签)和`--quiet`(只显示进度条)。拉取后,用`docker images`检查镜像是否成功存储。开始你的容器化之旅吧!
26 0