Docker的常用命令

Docker的常用命令

帮助命令

docker version  		#显示docker的版本信息
docker info				#显示Docker的系统信息,包括镜像和容器数量
docker 命令 --help		#帮助命令

帮助文档地址:https://docs.docker.com/engine/reference/commandline/docker/

镜像命令

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

[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    bf756fb1ae65   14 months ago   13.3kB
 
# 解释
REPOSITORY		镜像上的仓库源
TAG 			镜像的标签
IMAGE ID 		镜像的id
CREATED			镜像的创建时间
SIZE			镜像的大小

# 可选项
-a, --all		列出所有镜像
-q, --quiet		只显示镜像的id

docker search 搜索镜像

docker search mysql

# 可选项,通过搜藏来过滤
# --filter=STARS=3000 #搜索出来的镜像就是STARS大于3000的
docker search mysql --filter=STARS=3000

docker pull 下载命令

# 下载镜像 docker pull 镜像名[:tag]
[root@localhost ~]# docker pull mysql
Using default tag: latest #如果不写 tag,默认下砸最近版(latest)
latest: Pulling from library/mysql
a076a628af6f: Pull complete # 分层下载,docker image的核心 联合文件系统
f6c208f3f991: Pull complete 
88a9455a9165: Pull complete 
406c9b8427c6: Pull complete 
7c88599c0b25: Pull complete 
25b5c6debdaf: Pull complete 
43a5816f1617: Pull complete 
1a8c919e89bf: Pull complete 
9f3cf4bd1a07: Pull complete 
80539cea118d: Pull complete 
201b3cad54ce: Pull complete 
944ba37e1c06: Pull complete 
Digest: sha256:feada149cb8ff54eade1336da7c1d080c4a1c7ed82b5e320efb5beebed85ae8c
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址

# 等价于它
docker pull mysql
docker pulldocker.io/library/mysql:latest 

#指定版本下载
docker pull mysql:5.7

在这里插入图片描述

docker rmi 删除镜像

docker rmi -f 镜像id # 删除指定的容器
docker rmi -f 镜像id 镜像id 镜像id # 删除多个容器
docker rmi -f $(docker images -aq) # 删除全部容器

容器命令

说明:有了镜像才可以创建容器

docker pull centos

新建容器并启动

docker run [可选参数] image

# 参数说明
--name="Name" 容器名字
-d			  后台方式运行
-it			  使用交互方式运行,进入容器查看内容
-P			  指定容器端口 -p 8080:8080
	-p ip:主机端口:容器端口
	-p 主机端口:容器端口   (常用)
	-p 容器端口
	容器端口
-p			  随机指定端口

# 测试,启动并进入容器
docker run -it centos /bin/bash

[root@f8216db6dd72 /]# ls #查看容器内的centos,基础版本,很多命令不完善的
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

#从容器中退回主机
[root@f8216db6dd72 /]# exit
exit
[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  公共  模板  视频  图片  文档  下载  音乐  桌面

列出所有的运行中的容器

#docker ps 命令
	#列出当前正在运行的容器
-a	# 列出当前正在运行的容器+带出历史运行过的容器
-n=? #显示最近创建的容器
-q	#只显示容器的编号

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES
f8216db6dd72   centos         "/bin/bash"   4 minutes ago   Exited (0) 2 minutes ago             stoic_banach
b01289bff77c   bf756fb1ae65   "/hello"      4 days ago      Exited (0) 4 days ago                agitated_davinci
05baedaee24f   bf756fb1ae65   "/hello"      4 days ago      Exited (0) 4 days ago                priceless_engelbart
[root@localhost ~]# docker ps -a -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
f8216db6dd72   centos    "/bin/bash"   5 minutes ago   Exited (0) 2 minutes ago             stoic_banach
[root@localhost ~]# docker ps -aq
f8216db6dd72
b01289bff77c
05baedaee24f

退出容器

exit			#直接停止容器并退出
Ctrl + P + Q	#容器不停止退出

删除容器

docker rm 容器id		#删除指定容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rmi -f $(docker ps -aq)	#删除所有容器
docker ps -a -q|xargs docker rm	 #删除所有容器

启动和停止容器的操作

docker start 容器id		#启动容器
docker restart 容器id		#重启容器
docker stop 容器id		#停止当前正在运行的容器
docker kill 容器id		#强制停止当前容器

常用其他命令

后台启动容器

# 命令 docker run -d 镜像名
[root@localhost ~]# docker run -d centos

#问题docker ps,发现centos停止了
#常见的坑: docker 容器使用后台运行,就必须要有要一个前台进程,docker发现没有应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了

查看日志

docker logs -tf --tail 容器   没有日志

# 自己编写一段shell脚本
[root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo FengKuangShuChu;sleel 1;done"

# docker ps 查看id

# 显示日志
	-tf				#显示日志
	-tail number	# 要显示的日志条数
[root@localhost ~]# docker logs -tf --tail 10 e60a77bb6685

查看容器中的进程信息

#命令 docker top 容器id
[root@localhost ~]# docker top e60a77bb6685
UID                 PID                 PPID                C                   STIME               TTY                 TIME     
root                105562              105414              41                  20:46               ?                   00:01:51 

查看镜像的源数据

# 命令 
docker inspect 容器id

# 测试
[root@localhost ~]# docker inspect e60a77bb6685


进入当前正在运行的容器

# 我们通常容器都是通过后台方式运行的,需要进入容器,修改一些配置

# 方式一
docker exec -it 容器id bashShell

# 测试
[root@localhost ~]# docker exec -it e60a77bb6685 /bin/bash
[root@e60a77bb6685 /]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0 41 12:46 ?        00:07:16 /bin/sh -c while true;do echo GengKuangShuChu;sleel 1;don
root        853      0  0 13:03 pts/0    00:00:00 /bin/bash
root      35695    853  0 13:03 pts/0    00:00:00 ps -ef
root      35730      1  0 13:03 ?        00:00:00 [sh] <defunct>

# 方式二
docker attch 容器id

#测试
[root@localhost ~]# docker attach e60a77bb6685
正在执行当前的代码...

# docker exec		进入容器后开启新的终端,可以在里面操作(常用)
# docker attach		进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上

docker cp 容器id:容器内路径 目的的主机路径

# 测试
# 容器内新建文件
[root@localhost ~]# docker run -it centos /bin/bash
[root@c5fd93ef390b /]# cd /home
[root@c5fd93ef390b home]# touch text.java
[root@c5fd93ef390b home]# ls
text.java
[root@c5fd93ef390b home]# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                       PORTS     NAMES
c5fd93ef390b   centos    "/bin/bash"              4 minutes ago    Exited (0) 3 minutes ago               dazzling_easley
e60a77bb6685   centos    "/bin/sh -c 'while t…"   33 minutes ago   Exited (137) 5 minutes ago             silly_leakey
beb7b6ea90c4   centos    "/bin/sh -c 'while t…"   34 minutes ago   Exited (137) 4 minutes ago             brave_sinoussi
[root@localhost ~]# cd /home/
[root@localhost home]# ls
roo
# 拷贝
[root@localhost home]# docker cp c5fd93ef390b:/home/text.java /home
[root@localhost home]# ls
roo  text.java
[root@localhost home]# 

#拷贝是一个手动过程,可使用-v卷的技术实现同步

小结

Docker的常用命令_第1张图片

你可能感兴趣的:(Docker,docker,centos,运维)