一、镜像命令
**语法**
**说明**
**docker images **
# 查看所有本地主机上的镜像 可以使用docker image ls代替
**docker search **
# 搜索镜像
**docker pull **
# 下载镜像 docker image pull
**docker rmi **
# 删除镜像 docker image rm
**docker system df**
# 查看镜像/容器/数据卷所占的空间
*1、*docker images **查看镜像
1****、语法:
[root@Y ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 4 months ago 13.3kB
mysql 5.7 b84d68d0a7db 6 days ago 448MB
2****、解释:
**参数**
**说明**
**#REPOSITORY **
# 镜像的仓库源
**#TAG **
# 镜像的标签(版本) **---lastest ****表示最新版本**
**#IMAGE ID **
# 镜像的id
**#CREATED **
# 镜像的创建时间
**#SIZE **
# 镜像的大小
3、docker images --help****:
**参数**
**说明**
**-a, --all**
Show all images (default hides intermediate images) #列出所有镜像
**-q, --quiet**
Only show numeric IDs # 只显示镜像的id
4****、案例:
#列出所有镜像详细信息
[root@Y ~]# **docker images -a **
#列出所有镜像的id
[root@Y ~]# **docker images -aq**
D5f28a0bb0d0
F19c56ce92a8
1b6b1fe7261e
1b6b1fe7261e
*2、*docker search **搜索镜像
1****、语法:
[root@Y ~]# docker search mysql
2****、解释:
**参数**
**说明**
# --filter=STARS=3000
#过滤,搜索出来的镜像收藏STARS数量大于3000的
3、docker search --help****:
**参数**
**说明**
**-f, --filter filter**
Filter output based on conditions provided
** --format string**
Pretty-print search using a Go template
** --limit int**
Max number of search results (default 25)
** --no-trunc**
Don't truncate output
4****、案例:
[root@Y ~]# docker search mysql --filter=STARS=3000
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL IS ... 9520 [OK]
mariadb MariaDB IS ... 3456 [OK]
*3、*docker pull **下载镜像
1****、语法:
# 下载镜像 docker pull 镜像名[:tag版本]
[root@Y ~]# docker pull tomcat:8
2****、案例
[root@Y ~]# docker pull tomcat
8: pulling from library/tomcat # 如果不写tag,默认就是latest
90fe46dd8199: Already exists # 分层下载: docker image 的核心 联合文件系统
35a4f1977689: Already exists
bbc37f14aded: Already exists
74e27dc593d4: Already exists
93a01fbfad7f: Already exists
1478df405869: Pull complete
64f0dd11682b: Pull complete
68ff4e050d11: Pull complete
f576086003cf: Pull complete
3b72593ce10e: Pull complete
Digest: sha256:0c6234e7ec9d10ab32c06423ab829b32e3183ba5bf2620ee66de866df # 签名防伪
Status: Downloaded newer image for tomcat:8
docker.io/library/tomcat:8 #真实地址
# 等价
docker pull tomcat:8 = docker pull docker.io/library/tomcat:8
*4、*docker rmi **删除镜像
**语法**
**案例**
# 删除指定id的镜像 **docker rmi -f ****镜像****id **
[root@Y ~]# **docker rmi -f f19c56ce92a8**
# 删除全部的镜像 **docker rmi -f $(docker images -aq)**
[root@Y ~]# **docker stop $(doc****ker ps -a -q)**
二、容器命令
**说明:我们有了镜像才可以创建容器,****Linux****,下载****centos****镜像来学习**
**语法**
**说明**
**docker pull centos**
# docker中下载centos
**docker run ****镜像****id**
# 新建容器并启动
**docker ps**
# 列出所有运行的容器和docker container list相同
**docker rm ****容器****id**
# 删除指定容器
**docker start ****容器****id**
# 启动容器
**docker restart ****容器****id**
# 重启容器
**docker stop ****容器****id**
# 停止当前正在运行的容器
**docker kill ****容器****id**
# 强制停止当前容器
1****、镜像下载
docker pull centos
2****、新建并启动容器
1****、语法
docker run [可选参数] image | docker container run [可选参数] image
2****、参数
**参数**
**说明**
**--name="Name"**
# 容器名字 tomcat01 tomcat02 用来区分容器
**-d**
# 后台方式运行
**-it **
# 使用交互方式运行,进入容器查看内容
**-p**
# 指定容器的端口
-p 8080(宿主机):8080(容器)
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
**-P(****大写****)**
# 随机指定端口
3****、测试、启动并进入容器
[root@Y ~]# docker run -it centos /bin/bash # run it centos启动新建一个centos容器,/bin/bash给一个默认控制台
[root@241b5abce65e /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
[root@241b5abce65e /]# exit # 从容器退回主机
Exit
4、容器启动中进入(重要)
[root@iZwz9fwomx3lwtrau6ixxfZ /]# docker exec -it mysql bash # 进入mysql(容器名)容器
root@e537a9efecc8:/# ls
bin boot dev docker-entrypoint-initdb.d entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@e537a9efecc8:/# exit # 从容器退回主机
Exit
3****、查看容器
**语法**
**说明**
**docker ps **
# 列出当前正在运行的容器
** -a, --all**
# 列出当前正在运行的容器 + 带出历史运行过的容器
** -l**
# 列出最近启动的容器
** -n=?, --last int **
# 列出最近创建的?个容器 ?为1则只列出最近创建的一个容器,为2则列出2个
** -q, --quiet**
# 只列出容器的编号
4****、退出容器
**语法**
**说明**
**exit **
# 容器直接退出
**ctrl +P +Q **
# 容器不停止退出
**exit****直接退出**
**Ctrl+P+Q****不停止容器退出**
5****、删除容器
**语法**
**说明**
**docker rm ****容器****id**
# 删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -rf
**docker rm -f $(docker ps -aq) **
# 删除所有的容器
**docker ps -a -q|xargs docker rm**
# 删除所有的容器
6****、启动和停止容器的操作
**停止或者强行停止容器,都可以再次启动,通过****docker ps -a****找到历史的****id****在启动即可,但是删除容器就不能再次重启**
**语法**
**说明**
**docker start ****容器****id**
# 启动容器
**docker restart ****容器****id**
# 重启容器
**docker stop ****容器****id**
# 停止当前正在运行的容器
**docker kill ****容器****id**
# 强制停止当前容器
三、常用其他命令
1****、后台启动命令
1****、命令:
# 问题docker ps. 发现centos 停止了
# 常见的坑,docker容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
# 所以服务类的程序,我们需要后台启动
docker run -d 镜像名
2****、案例:
[root@Y ~]# docker run -d centos
a8f922c255859622ac45ce3a535b7a0e8253329be4756ed6e32265d2dd2fac6c
[root@iz2zeak7sgj6i7hrb2g862z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2****、查看日志
1****、命令:
docker logs -f 容器id
2****、参数:
**参数**
**说明**
**-tf **
# 显示日志信息(一直更新)
**--tail number **
# 需要显示日志条数
3****、案例:
docker run -d centos /bin/sh -c "while true;do echo 6666;sleep 1;done" # 模拟日志
docker logs -t --tail n 容器id # 查看n行日志
docker logs -ft 容器id # 跟着日志
3、查看容器中进程信息ps
docker top 容器id
[root@Y ~]# docker top 51ce907d72b1
UID PID PPID C STIME TTY TIME CMD
root 28107 28089 0 10:48 ? 00:00:00 /bin/sh -c while true;do echo 666;sleep 1;done
root 28503 28107 0 10:54 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
4****、查看镜像的元数据
docker inspect 容器id
[root@Y ~]# docker inspect 51ce907d72b1
……
5****、进入当前正在运行的容器
我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置
1****、方式一(推荐):
docker exec -it 容器id /bin/bash
[root@Y ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51ce907d72b1 centos "/bin/sh -c 'while t…" 13 minutes ago Up 13 minutes pedantic_lichterman
[root@Y ~]# docker exec -it 51ce907d72b1 /bin/bash
[root@51ce907d72b1 /]#
2****、方式二:
docker attach 容器id
[root@Y ~]# docker attach 51ce907d72b1
正在执行当前的代码…
3****、二者区别:
- #docker exec # 进入当前容器后开启一个新的终端,可以在里面操作。(常用)
- #docker attach # 进入容器正在执行的终端
6****、从容器内拷贝到主机上
1****、命令:
docker cp 容器id:容器内路径 主机目的路径
2****、案例:
# 1. 新建进入docker容器内部
[root@Y ~]# docker run -it centos /bin/bash
[root@55321bcae33d /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
# 2. 新建一个文件
[root@55321bcae33d /]# echo "java" > hello.java
[root@55321bcae33d /]# cat hello.java
hello
[root@55321bcae33d /]# exit
Exit
# 3. hello.java拷贝到home文件加下
[root@Y /]# docker cp 56a5583b25b4:/hello.java /home
[root@Y /]# cd /home
[root@Y home]# ls -l #可以看见java.java存在
total 8
-rw-r--r-- 1 root root 0 May 19 22:09 haust.java
-rw-r--r-- 1 root root 6 May 22 11:12 java.java
drwx------ 3 www www 4096 May 8 12:14 www
** 7、导入和导出容器**
export 导出容器的内容留作为一个tar归档文件[对应import命令]
docker export 容器ID > 文件名.tar
import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
8****、帮助命令
**语法**
**说明**
**docker version****/docker -v**
#显示docker的版本信息。
**docker info **
#显示docker的系统信息,包括镜像和容器的数量
**docker ****命令**** --help **
#帮助命令
**帮助文档的地址:** docker build | Docker Documentation
.
四、小结:命令大全
**attach **
Attach local standard input, output, and error streams to a running container
**#****当前****shell****下**** attach****连接指定运行的镜像**
** build **
Build an image from a Dockerfile
**# ****通过****Dockerfile****定制镜像**
** commit **
Create a new image from a container's changes
**#****提交当前容器为新的镜像**
** cp **
Copy files/folders between a container and the local filesystem
**#****拷贝文件**
** create **
Create a new container
**#****创建一个新的容器**
** diff **
Inspect changes to files or directories on a container's filesystem
**#****查看****docker****容器的变化**
** events **
Get real time events from the server
**#****从服务获取容器实时时间**
** exec **
Run a command in a running container
**# ****在运行中的容器上运行命令**
** export **
Export a container's filesystem as a tar archive
**#****导出容器文件系统作为一个****tar****归档文件****[****对应****import]**
** history **
Show the history of an image
**# ****展示一个镜像形成历史**
** images **
List images
**#****列出系统当前的镜像**
** import **
Import the contents from a tarball to create a filesystem image
**#****从****tar****包中导入内容创建一个文件系统镜像**
** info **
Display system-wide information
**# ****显示全系统信息**
** inspect **
Return low-level information on Docker objects
**#****查看容器详细信息**
** kill **
Kill one or more running containers
**# kill****指定****docker****容器**
** load **
Load an image from a tar archive or STDIN
**#****从一个****tar****包或标准输入中加载一个镜像****[****对应****save]**
** login **
Log in to a Docker registry
** logout **
Log out from a Docker registry
** logs **
Fetch the logs of a container
** pause **
Pause all processes within one or more containers
** port **
List port mappings or a specific mapping for the container
** ps **
List containers
** pull **
Pull an image or a repository from a registry
** push **
Push an image or a repository to a registry
** rename **
Rename a container
** restart **
Restart one or more containers
** rm **
Remove one or more containers
** rmi **
Remove one or more images
** run **
Run a command in a new container
** save **
Save one or more images to a tar archive (streamed to STDOUT by default)
** search **
Search the Docker Hub for images
** start **
Start one or more stopped containers
** stats **
Display a live stream of container(s) resource usage statistics
** stop **
Stop one or more running containers
** tag **
Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
** top **
Display the running processes of a container
** unpause **
Unpause all processes within one or more containers
** update **
Update configuration of one or more containers
** version **
Show the Docker version information
** wait **
Block until one or more containers stop, then print their exit codes
版权归原作者 苏意莫 所有, 如有侵权,请联系我们删除。