Docker-第二课,Docker常用命令

Docker常用命令

1、帮助命令

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

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

2、镜像命令
docker images 查看所有本地的主机上的镜像

[root@node1 /]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
hello-world   latest    d1165f221234   5 weeks ago   13.3kB

# 解释
REPOSITORY    镜像的仓库源
TAG       	  镜像的标签
IMAGE ID	  镜像的id
CREATED       镜像的创建时间
SIZE		  镜像的大小

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

docker search 搜索镜像

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

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

[root@node1 /]# docker search mysql --filter=STARS=3000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10724     [OK]       
mariadb   MariaDB Server is a high performing open sou…   4038      [OK]       
[root@node1 /]# docker search mysql --filter=STARS=5000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql     MySQL is a widely used, open-source relation…   10724     [OK] 

docker pull 下载镜像

# 下载镜像docker pull 镜像名[:tag]
[root@node1 /]# docker pull mysql
Using default tag: latest           # 如果不写tag默认就是latest
latest: Pulling from library/mysql  
75646c2fb410: Pull complete 		# 分层下载:docker image 的核心,联合系统文件
878f3d947b10: Pull complete 
1a2dd2f75b04: Pull complete 
8faaceef2b94: Pull complete 
b77c8c445ec2: Pull complete 
074029aeaa5f: Pull complete 
5a1122545c6c: Pull complete 
6c95ccd00139: Pull complete 
60a719448fdb: Pull complete 
f31898a387a3: Pull complete 
bcf402a978dc: Pull complete 
cf0bc7da512e: Pull complete 
Digest: sha256:c35eb76bbccfd0138c8c68ccb9b4cffe42c488a27f64ddc31a2b5f65aa93fce6 # 签名:防伪
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest 													# 真实的地址

# 这两个命令是等价的
docker pull mysql
docker.io/library/mysql:latest 
# 指定版本下载
[root@node1 /]# docker pull mysql:5.6
5.6: Pulling from library/mysql
23a3602cd30c: Pull complete 
fde922a9980f: Pull complete 
5d5e58faa9a8: Pull complete 
35d7b1499787: Pull complete 
67575f8b7b80: Pull complete 
b2844490be17: Pull complete 
87f6510c6a65: Pull complete 
877a22faf2fc: Pull complete 
6259bafdad04: Pull complete 
290903455872: Pull complete 
37ba80fc86c3: Pull complete 
Digest: sha256:e6c6bdc8cff8960953db5cb42f8be2d1db2931fafbf5f217d65b99ba0edae5df
Status: Downloaded newer image for mysql:5.6
docker.io/library/mysql:5.6

在这里插入图片描述
docker rmi 删除镜像!

[root@node1 /]# docker rmi -f 33d1008b853cd      # 删除指定的镜像 33d1008b853cd 镜像id
[root@node1 /]# docker rmi -f 33d1008b853cd 33d1008b853ce 33d1008b853cf      # 删除多个镜像
[root@node1 /]# docker rmi -f $(docker images -aq) # 删除所有的镜像

3、容器命令
说明:我们有了镜像才可以创建容器,Linux,下载一个centos 镜像来测试学习

docker pull centos

新建容器并启动

docker run [可选参数] image

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

# 测试启动并进入容器
[root@node1 /]# docker run -it centos /bin/bash
[root@7689aa502e87 /]# ls    # 查看容器内的centos,基础版本,很多命令都不是完善的
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var


# 从容器中退回主机
[root@7689aa502e87 /]# exit
exit
[root@node1 /]# ls
bin  boot  cgroups_test  dev  etc  hadoop  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

列出所有运行及运行过的容器

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


[root@node1 /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@node1 /]# docker ps -a
CONTAINER ID   IMAGE          COMMAND       CREATED         STATUS                     PORTS     NAMES
7689aa502e87   centos         "/bin/bash"   7 minutes ago   Exited (0) 5 minutes ago             happy_ptolemy
d518f23393fa   d1165f221234   "/hello"      2 hours ago     Exited (0) 2 hours ago               wizardly_austin
[root@node1 /]# docker ps -q
[root@node1 /]# docker ps -aq
7689aa502e87
d518f23393fa

退出容器

exit 			# 直接容器停止并退出
Ctrl + p + q 	# 容器不停止退出

删除容器

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

启动和停止容器的操作

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

4、常用其他命令

后台启动容器

# 命令 docker run -d 镜像名!
[root@node1 /]# docker run -d centos
61fe3c68714deec66b0e7c1fd5aa0f76700bdc455ad47b62d6e4518f3853ec73
[root@node1 /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
# 问题 docker ps 发现centos没有运行,实际是他运行启动了,然后停止了
# 问题原因:docker 容器使用后台运行,就必须要有一个前台进程,docker没有发现应用,就会自动停止
# nginx,容器启动后,发现自己没有提供服务,就会立即停止,就没有应用程序了

查看日志

docker logs -f -t --tail 容器,没有日志

# 自己编写一段shell脚本
[root@node1 /]# docker run -d centos /bin/sh -c "while true;do echo xingmao;sleep 1;done"
86d3e670eec3a574e623ac4d273ea9f877c56f8c4770b03ba944ae57f5ffc873
[root@node1 /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
86d3e670eec3   centos    "/bin/sh -c 'while t…"   8 seconds ago   Up 8 seconds             wonderful_bartik

# 显示日志

-tf     		# 显示日志
--tail number	# 要显示日志条数
[root@node1 /]# docker logs -tf --tail 86d3e670eec3   		 # 显示所有的日志
[root@node1 /]# docker logs -tf --tail 10 86d3e670eec3		 # 显示10条日志

查看容器中的进程信息

# 命令 docker top 容器id
[root@node1 /]# docker top 86d3e670eec3
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                3242                32664               0                   16:51               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root                32664               32641               0                   16:45               ?                   00:00:00            /bin/sh -c while true;do echo xingmao;sleep 1;done

查看镜像的元数据

# 命令
docker  inspect  容器id

# 测试 
docker inspect 容器id
[root@node1 /]# docker inspect 86d3e670eec3

进入当前正在运行的容器

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

# 命令
docker exec -it 容器id BashShell

# 测试
[root@node1 /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
86d3e670eec3   centos    "/bin/sh -c 'while t…"   14 minutes ago   Up 14 minutes             wonderful_bartik
[root@node1 /]# docker exec -it 86d3e670eec3 /bin/bash
[root@86d3e670eec3 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@86d3e670eec3 /]#  ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 08:45 ?        00:00:00 /bin/sh -c while true;do echo xingmao;sleep 1;done
root       905     0  0 09:00 pts/0    00:00:00 /bin/bash
root       940     1  0 09:00 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root       941   905  0 09:00 pts/0    00:00:00 ps -ef

# 方式二
docker attach 容器id
# 测试
[root@node1 ~]# docker attache 86d3e670eec3
正在执行当前的代码。。。。

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

从容器拷贝文件到主机上

docker  cp 容器id:容器内路径  目的的主机路径
# 进入docker容器内部
[root@node1 /]# docker run -it centos /bin/bash
[root@c2ee05130dc2 /]# cd /home
[root@c2ee05130dc2 home]# ls
# 在容器内新建一个文件
[root@c2ee05130dc2 home]# touch test.java
[root@c2ee05130dc2 home]# ls
test.java
[root@c2ee05130dc2 home]# exit
exit
[root@node1 /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS                      PORTS     NAMES
c2ee05130dc2   centos    "/bin/bash"   About a minute ago   Exited (0) 14 seconds ago             gifted_carver
# 将文件拷贝出来到主机上
[root@node1 /]# docker cp c2ee05130dc2:/home/test.java /home
[root@node1 /]# cd home
[root@node1 home]# ll
-rw-r--r-- 1 root       root         0 Apr 11 20:14 test.java

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

5、小结

docker主要命令
在这里插入图片描述

attach		Attach 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 from container filesystem to the host path 		  # 从容器中拷贝指定文件或者目录到宿主机中 
create 		Create a new container 												  #创建一个新的容器,同 run,但是不启动容器 
diff 		Inspect changes on a container's filesystem 						  #查看docker容器的变化 
events 		Get real time events from the server 								  # 从服务获取容器实时事件 
exec 		Run a command in a running container 								  # 在运行中的容器上运行命令
export 		Stream the contens of a container's as a tar archive 				  #导出容器文件流为一个tar归档文件[对应import] 
history 	Show the history of an image 										  # 展示一个镜像历史 
images 		List images 														  #列出系统当前的镜像 
import 		Create a new filesystem image from the contents of a tarball 		  # 从tar包中的内容创建一个新的文件系统 [对应export]
info 		Display system-wide information  									  # 显示系统相关文件 
inspect 	Return low-level information on Docker objects 						  #查看容器详细信息 
kill 		Kill a running containers   										  # kill指定docker容器 
load 		Load an image from a tar archive 									  #从一个tar包中加载一个镜像[对应save] 
login 		Log in to a Docker registry     									  # 注册或者登录一个docker源服务器 
logout 		Log out from a Docker registry 										  # 从当前docker registry
logs 		Fetch the logs of a container 										  # 输出当前容器日志信息
pause 		Pause all processes within a containers  							  # 暂停容器
port 		Lookup the public-facing port which is NAT-ed to PRIVATE_PORT 		  # 查看映射端口对应的容器内部源端口 
ps 			List containers 													  # 列出容器列表
pull 		Pull an image or a repository from a registry 						  # 从docker镜像源服务器拉取指定镜像
push 		Push an image or a repository to a registry rename Rename a container # 推送指定镜像或者库镜像到docker源
restart 	Restart one or more containers 										  # 重启运行的容器
rm 			Remove one or more containers 										  # 移除一个或者多个容器
rmi 		Remove one or more images 											  # 移除一个或者多个jingx
run 		Run a command in a new container  									  # 创建一个新的容器并运行一个命令
save 		Save one or more images to a tar archive 							  # 保存一个镜像为一个tar包[对应load]
search 		Search the Docker Hub for images 									  # 在docker hub中搜索镜像
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 		tag an image into a repository 										  # 给源中镜像打标签 
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 								  # 查看docker版本号
wait 		Block until one or more containers stop, then print their exit codes  # 截取容器停止时的退休状态值
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值