• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

docker命令

开发技术 开发技术 4小时前 2次浏览

常用命令

帮助命令

docker version      
docker info
docker [命令] --help

帮助文档:https://docs.docker.com/reference/

镜像命令

docker images 查看所有本地主机上的镜像

docker命令

解释

  • REPOSITORY :镜像的仓库 源
  • TAG:镜像的标签
  • IMAGE ID:镜像的ID
  • CREATED:镜像创建时间
  • SIZE:镜像的大小

通过docker images –help查看可选项有哪些

docker命令

可选项:

  -a, --all              #列出所有镜像
  -q, --quiet          #只显示镜像的ID

可以结合使用,显示所有镜像的ID 

docker images -aq

docker search 搜索镜像

[root@docker ~]# docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   11409     [OK]       
mariadb                           MariaDB Server is a high performing open sou…   4334      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   847                  [OK]
percona                           Percona Server is a fork of the MySQL relati…   553       [OK]       

解释

  • NAME:镜像名称
  • DESCRIPTION:镜像描述
  • STARS:下载次数

docker search –help查看可选项

docker命令

可选项:

-f, --filter filter #根据提供的条件过滤输出
    --format string #使用 Go 模板进行漂亮打印搜索
    --limit int #最大搜索结果数(默认 25--no-trunc #不截断输出

用法:

docker search mysql -f=stars=3000
或
docker search mysql -f stars=3000

 

docker命令

docker pull 下载镜像

[root@docker ~]# docker pull mysql
Using default tag: latest #如果不指定版本,默认下载最新版本
latest: Pulling from library/mysql
a330b6cecb98: Pull complete #分层下载
9c8f656c32b8: Pull complete 
88e473c3f553: Pull complete 
062463ea5d2f: Pull complete 
daf7e3bdf4b6: Pull complete 
1839c0b7aac9: Pull complete 
cf0a0cfee6d0: Pull complete 
1b42041bb11e: Pull complete 
10459d86c7e6: Pull complete 
b7199599d5f9: Pull complete 
1d6f51e17d45: Pull complete 
50e0789bacad: Pull complete 
Digest: sha256:99e0989e7e3797cfbdb8d51a19d32c8d286dd8862794d01a547651a896bcf00c #签名
Status: Downloaded newer image for mysql:latest 
docker.io/library/mysql:latest #真实地址
docker pull mysql 等价于 docker pull docker.io/library/mysql:latest

格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

docker pull mysql:5.7

docker rmi 删除镜像

docker rmi -f 镜像id/镜像名称   #删除指定镜像
docker rmi -f 镜像id/镜像名称 镜像id/镜像名称 镜像id/镜像名称 #删除多个指定镜像
docker rmi -f $(docker images -aq) #删除全部镜像

容器使用

下载镜像

[root@docker ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
7a0437f04f83: Pull complete 
Digest: sha256:5528e8b1b1719d34604c87e11dcd1c0a20bedf46e83b5632cdeac91b8c04efc1
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

启动容器

Docker容器可以使用命令创建:

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
docker run 可选项 镜像名:版本号|@不知道是什么 命令 参数

可选项:

--name="name" 容器名字 用于区分容器
-d  后台方式运行-it 使用交互方式运行,进入容器查看内容(-i:交互式操作,-t:终端)
-p
    -p ip:主机端口:容器端口
    -p 主机端口:容器端口(常用)
    -p 容器端口
     容器端口
-P  随机指定端口

通过centos镜像创建并进入容器

[root@docker ~]# docker run -it centos /bin/bash
[root@8952118a9065 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var

下图主机名不一样了,说明创建了容器并进入容器了。

docker命令

查询容器

docker ps [OPTIONS]
空白 #列出当前正在运行的容器
-a, --all # 列出所有容器
-n, --last int #显示最近创建的容器(指定显示个数)
-q, --quiet #只显示编号

退出容器

exit #退出容器,并停止容器
Ctrl+P+Q # 退出容器,但不停止容器

删除容器

docker rm 容器Name #删除指定容器,不能删除正在运行的容器
docker rm -f $(docker ps -aq) # 删除所有容器,包括正在运行的
docker rm -a -q|xargs docker rm #通过管道 删除获取容器

启动和停止容器

docker start 容器id #启动
docker restart 容器id #重启
docker stop 容器id #停止
docker kill 容器id #强制停止

其他命令

后台启动容器

[root@docker ~]# docker run -d centos
b418e6a530ea0f9d22675b86d4d421eccf2ae8429f062a432dcfb6e16644a67b
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

容器使用后台运行,必须有一个前台进程,否则就会自动停止

[root@docker ~]# docker run -d centos /bin/sh -c "while true;do echo while run;sleep 2;done"
26c1e4810bcfd10a78fddff5ee1b62eba0ddd0c4d56df2ce0c1e07bd15519736
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
26c1e4810bcf   centos    "/bin/sh -c 'while t…"   14 seconds ago   Up 13 seconds             happy_mendel

日志

[root@docker ~]# docker logs --help

Usage:  docker logs [OPTIONS] CONTAINER

Fetch the logs of a container

Options:
      --details        Show extra details provided to logs
  -f, --follow         Follow log output
      --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
  -n, --tail string    Number of lines to show from the end of the logs (default "all")
  -t, --timestamps     Show timestamps
      --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)

常用方式:

[root@docker ~]# docker logs -f -t --tail 10 26c1e4810bcf #显示指定条数的日志

[root@docker ~]# docker logs -ft 26c1e4810bcf #显示全部日志

查看容器中的进程信息

docker top 容器id
[root@docker ~]# docker top 26c1e4810bcf UID PID PPID C STIME TTY TIME CMD root 20256 20238 0 09:17 ? 00:00:00 /bin/sh -c while true;do echo while run;sleep 2;done root 20716 20256 0 09:27 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 2

查看镜像元数据

[root@docker ~]# docker inspect --help

     docker inspect 可选项 容器Name|容器ID Usage: docker inspect [OPTIONS] NAME
|ID [NAME|ID...] Return low-level information on Docker objects Options: -f, --format string Format the output using the given Go template -s, --size Display total file sizes if the type is container --type string Return JSON for specified type

进入当前正在运行的容器

方式一:

[root@docker ~]# docker exec --help
     docker exec 可选项 容器id 命令
Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

Options:
  -d, --detach               Detached mode: run command in the background
      --detach-keys string   Override the key sequence for detaching a container
  -e, --env list             Set environment variables
      --env-file list        Read in a file of environment variables
  -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
  -t, --tty                  Allocate a pseudo-TTY
  -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])
  -w, --workdir string       Working directory inside the container

用法

[root@docker ~]# docker exec -it 26c1e4810bcf /bin/bash
[root@26c1e4810bcf /]# 

方式二:

[root@docker ~]# docker attach --help
     docker attach 可选项 容器id
Usage:  docker attach [OPTIONS] CONTAINER

Attach local standard input, output, and error streams to a running container

Options:
      --detach-keys string   Override the key sequence for detaching a container
      --no-stdin             Do not attach STDIN
      --sig-proxy            Proxy all received signals to the process (default true)

用法

docker attach 容器id

区别:

docker exec 进入容器后开启一个新的终端(常用)

docker attach 进入容器正在执行的终端

容器和主机交互

从容器拷贝文件到主机

[root@docker ~]# docker images #查看镜像
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mysql        latest    0716d6ebcc1a   11 days ago    514MB
centos       latest    300e315adb2f   9 months ago   209MB
[root@docker ~]# docker run -it centos /bin/bash #运行并进入容器
[root@dbcefddb0dfe /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@dbcefddb0dfe /]# cd /home #进入容器的home目录
[root@dbcefddb0dfe home]# ls
[root@dbcefddb0dfe home]# touch testCopy.java #创建拷贝测试文件
[root@dbcefddb0dfe home]# ls
testCopy.java
[root@dbcefddb0dfe home]# exit #退出容器
exit
[root@docker ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                      PORTS     NAMES
dbcefddb0dfe   centos    "/bin/bash"   2 minutes ago   Exited (0) 18 seconds ago             happy_morse
[root@docker ~]# docker cp dbcefddb0dfe:/home/testCopy.java /home #拷贝文件到当前主机的指定目录
[root@docker ~]# ls
--add-repo       docker-client         docker-engine            docker-logrotate  initial-setup-ks.cfg  Public
anaconda-ks.cfg  docker-client-latest  docker-latest            Documents         Music                 Templates
Desktop          docker-common         docker-latest-logrotate  Downloads         Pictures              Videos
[root@docker ~]# cd /home #查看
[root@docker home]# ls
marw  testCopy.java

总结:

docker命令

 

attach #进入容器
build   #通过Dockersfile定制镜像
commit  #提交当前容器未新的镜像
cp  #从容器中拷贝只当文件或目录到宿主机中
create  # 创建一个新的容器,同run,但不启动容器
diff #查看docker容器变化
events #从docker服务获取容器实时事件
exec #进入容器
export #导出容器的内容流作为一个tar归档文件【对应import】
history #展示一个镜像形成历史
images #列出系统当前镜像
import  #从tar包中的内容创建一个新的文件系统镜像【对应export】
info #显示系统相关信息
inspect #查看容器详细信息
kill #结束指定容器
load #从一个tar包中加载一个镜像【对应save】
login #注册或登录一个dockers源服务器
logout #从当前Docker registry 退出
logs #输出当前容器日志信息
port #查看映射端口对象的容器源端口
pause #暂停容器
ps #列出容器列表
pull #从docker镜像源服务器拉取镜像或库镜像
push #推送指定镜像或库镜像 到docker源服务器
restart #重启运行的容器
rm #移除一个或多个容器
rmi #移除一个或多个镜像(无容器使用的镜像可直接移除,否则先删除相关容器或 -f 强制移除)
run #创建并运行容器
save #保存一个镜像未一个tar包【对应load】
search #在docker hub 中搜索镜像
start #启动容器
stop #停止容器
tag #设置源中镜像标签
top #查看容器中运行的进程信息
unpause #取消暂停
version #查看docker版本号
wait #截取容器停止时退出状态值 

 


程序员灯塔
转载请注明原文链接:docker命令
喜欢 (0)