- Docker 的常用命令
- 帮助命令
- Docker 的镜像命令
- 显示镜像列表
- 查找镜像
- 下载镜像
- 删除镜像
- Docker 的容器使用
- 创建CentOs容器
- 启动容器
- 查看正在运行的镜像
- 退出容器
- 删除容器
- 启动和停止容器
- 后台启动容器
- 查看日志
- 查看进程信息
- 查看镜像的元数据
- 进入当前正在运行的容器
- 从容器内拷贝文件到主机上
帮助命令
docker version # 显示docker的版本信息 docker info #显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help #帮助命令
官网帮助文档
Docker 的镜像命令当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载
显示镜像列表docker images 来列出本地主机上的镜像
[root@shiqi ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest feb5d9fea6a5 3 weeks ago 13.3kB
| REPOSITORY | 表示镜像的仓库源 |
|---|---|
| TAG | 镜像的标签 |
| IMAGE ID | 镜像ID |
| CREATED | 镜像创建时间 |
| SIZE | 镜像大小 |
docker images --help
[root@shiqi ~]# docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all #显示所有的镜像
--digests #显示摘要
-f, --filter filter #根据提供的条件过滤输出
--format string #使用Go模板打印漂亮的图像
--no-trunc #不截断输出
-q, --quiet #只显示图像id
查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像
[root@shiqi ~]# docker search mysql NAME DEscriptION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation… 11547 [OK] mariadb MariaDB Server is a high performing open sou… 4393 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Create… 854 [OK] percona Percona Server is a fork of the MySQL relati… 558 [OK] phpmyadmin phpMyAdmin - A web interface for MySQL and M… 346 [OK] centos/mysql-57-centos7 MySQL 5.7 SQL database server 91 mysql/mysql-cluster Experimental MySQL Cluster Docker images. Cr… 88 centurylink/mysql Image containing mysql. Optimized to be link… 59 [OK] databack/mysql-backup Back up mysql databases to... anywhere! 51 prom/mysqld-exporter 43 [OK] deitch/mysql-backup REPLACeD! Please use http://hub.docker.com/r… 41 [OK] tutum/mysql base docker image to run a MySQL database se… 35 linuxserver/mysql A Mysql container, brought to you by LinuxSe… 32 schickling/mysql-backup-s3 Backup MySQL to S3 (supports periodic backup… 31 [OK] mysql/mysql-router MySQL Router provides transparent routing be… 23 centos/mysql-56-centos7 MySQL 5.6 SQL database server 20 arey/mysql-client Run a MySQL client from a docker container 19 [OK] fradelg/mysql-cron-backup MySQL/MariaDB database backup using cron tas… 16 [OK] openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 image… 6 devilbox/mysql Retagged MySQL, MariaDB and PerconaDB offici… 3 idoall/mysql MySQL is a widely used, open-source relation… 3 [OK] jelastic/mysql An image of the MySQL database server mainta… 2 ansibleplaybookbundle/mysql-apb An APB which deploys RHSCL MySQL 2 [OK] widdpim/mysql-client Dockerized MySQL Client (5.7) including Curl… 1 [OK] centos/mysql-80-centos7 MySQL 8.0 SQL database server 1
| NAME | 名字 |
|---|---|
| DEscriptION | 镜像仓库源的名称 |
| STARS | 收藏数 |
| OFFICIAL | 是否 docker 官方发布 |
| AUTOMATED | 自动构建 |
使用命令 docker pull 镜像名 [:tag] 来下载镜像
[root@shiqi ~]# docker pull mysql Using default tag: latest #如果不写tag,默认下载最新版本 latest: Pulling from library/mysql b380bbd43752: Pull complete # 分成下载,docker image的核心 联合文件系统 f23cbf2ecc5d: Pull complete 30cfc6c29c0a: Pull complete b38609286cbe: Pull complete 8211d9e66cd6: Pull complete 2313f9eeca4a: Pull complete 7eb487d00da0: Pull complete 4d7421c8152e: Pull complete 77f3d8811a28: Pull complete cce755338cba: Pull complete 69b753046b9f: Pull complete b2e64b0ab53c: Pull complete Digest: sha256:6d7d4524463fe6e2b893ffc2b89543c81dec7ef82fb2020a1b27606666464d87 #签名 Status: Downloaded newer image for mysql:latest docker.io/library/mysql:latest #真实地址删除镜像
镜像删除使用 docker rmi 命令,
docker rmi -f 容器id #删除指定的容器 docker rmi -f 容器id 容器id 容器id。。。 #删除多个容器 docker rmi -f $(docker images -aq) #删除全部的容器Docker 的容器使用
注意:我们有了镜像才可以创建容器,Linux,下载一个 CentOs 镜像来测试学习
创建CentOs容器docker pull centos启动容器
docker run [可选参数] images #参数说明 --name="Name" #容器名字 用来区分容器 -d #后台方式运行 -i #交互操作 -t #终端 -it #使用交互方式运行,进入容器查看内容 -p #指定容器端口, -p 8080:8080 -p ip:主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 容器端口 -P #随机指定端口
以下命令使用 centos 镜像启动一个容器,参数为以命令行模式进入该容器:
[root@shiqi ~] docker run -it centos /bin/bash # centos 是镜像 # /bin/bash 放在镜像后的是命令,这里我们希望有个交互式shell,因此使用 /bin/bash # 主机名称与镜像id 相对应
使用 exit 退出镜像
#docker ps 命令 #列出当前正在运行的容器 -a #列出正在运行的容器 + 带出历史运行过的容器 -n=个数 #显示最近创建的容器 -q #只显示容器的编号退出容器
exit #直接推出容器(快捷方式 Ctrl + D) Ctrl + q + p #容器不停止退出删除容器
docker rm 容器id #删除指定容器,不能删除正在运行的容器,如果要强制删除使用 rm -f docker rm -f $(docker ps -aq) #删除所有容器 docker ps -a -q|xargs docker rm #删除所有容器 xargs进行一个一个的删除启动和停止容器
docker start 容器id #启动容器 docker restart 容器id #重启容器 docker stop 容器id #停止容器 docker kill 容器id #强行停止当前容器后台启动容器
#命令 docker run -d 镜像名! docker run -d centos #问题 docker ps 发现centos停止了 #常见的坑:docker 容器使用后台运行,就必须要一个前台进程,docker发现没有应用,就会自动停止 # nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了查看日志
docker logs -f -t --tail 容器,没有日志 # 显示日志 -tf #显示日志 --tail number #要显示日志条数查看进程信息
# 命令 docker top 容器id查看镜像的元数据
# docker inspect r进入当前正在运行的容器
#通常容器都是后台方式运行的,需要进入容器,修改一些配置 #命令 docker exec -it 容器id /bin/bash #测试 [root@shiqi ~]# docker ps #查看当前运行的容器 ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@shiqi ~]# docker images #查看当前docker中的镜像 REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 4 weeks ago 231MB [root@shiqi ~]# docker run -it centos /bin/bash #运行centos [root@0161123598d9 /]# [root@shiqi ~]# docker run -it centos /bin/bash [root@80e65b729cef /]# [root@shiqi ~]# docker ps #再次查看运行中的容器 ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 80e65b729cef centos "/bin/bash" 35 seconds ago Up 34 seconds interesting_poincare 0161123598d9 centos "/bin/bash" about a minute ago Up about a minute naughty_beaver [root@shiqi ~]# docker exec -it 80e65b729cef /bin/bash [root@80e65b729cef /]# ls bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@80e65b729cef /]# #方式二 #命令 docker attach 容器id #测试 [root@shiqi ~]# docker ps ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 80e65b729cef centos "/bin/bash" 22 minutes ago Up 13 seconds interesting_poincare [root@shiqi ~]# docker attach 80e65b729cef [root@80e65b729cef /]# #docker exec #进入容器后开启一个新的终端,可以在里面操作(常用) #docker attach #进入容器正在执行的终端,不会启动新的进程!从容器内拷贝文件到主机上
#命令 docker cp 容器id:容器内路径 目的的主机路径 (容器存在就可执行,与是否正在执行没有关系) #测试 [root@shiqi ~]# docker run -it centos /bin/bash #运行docker中的容器 [root@7054f07a2939 /]# ls #查看容器中的目录 bin etc lib lost+found mnt proc run srv tmp var dev home lib64 media opt root sbin sys usr [root@7054f07a2939 /]# cd /home #进入容器中的home目录 [root@7054f07a2939 home]# touch test.java # 在home目录中 创建 test.java [root@7054f07a2939 home]# ls # 查看home目录 test.java [root@7054f07a2939 home]# exit #退出docker容器 [root@shiqi ~]# docker ps # 查看当前是否存运行中的容器 ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@shiqi ~]# cd /home #进入主机上的 home 目录 [root@shiqi home]# ls #查看home目录上的当前文件 shiqi test [root@shiqi home]# docker cp 7054f07a2939:/home/test.java /home # 将容器内的文件拷贝到主机 [root@shiqi home]# ls #查看home目录,是否拷贝成功 shiqi test test.java [root@shiqi home]#



