docker学习2------docker的常用命令(9-13集)

 

目录

 

docker的常用命令

帮助命令

镜像命令

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

docker search 搜索镜像

docker pull 下载镜像

docker rmi删除镜像

容器命令

新建容器并启动

列出所有运行的容器

退出容器

删除容器

启动和停止容器的操作

常用的其他命令

后台启动容器

查看日志

查看容器中进程信息 ps

查看镜像的元数据

 进入当前正在运行的容器

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

拷贝是一个手动过程,未来我们使用-v 卷的技术,可以实现,自动同步  /home  /home 

小结


docker的常用命令

帮助命令

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

docker帮助文档

 Reference documentation | Docker Documentation

镜像命令

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

[root@k2 ~]# docker images
REPOSITORY    TAG                IMAGE ID       CREATED        SIZE
hello-world   latest             feb5d9fea6a5   8 months ago   13.3kB

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

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

docker search 搜索镜像

Docker Hub

[root@k2 ~]# docker search mysql
NAME                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                          MySQL is a widely used, open-source relation…   12635     [OK] 

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

[root@k2 ~]# docker search redis --filter=STARS=5000
NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis     Redis is an open source key-value store that…   10937     [OK] 

docker pull 下载镜像

[root@k2 ~]# docker pull --help

Usage:  docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Pull an image or a repository from a registry

Options:
  -a, --all-tags                Download all tagged images in the repository
      --disable-content-trust   Skip image verification (default true)
      --platform string         Set platform if server is multi-platform capable
  -q, --quiet                   Suppress verbose output
# 下载镜像 docker pull 镜像名[:tag]
[root@k2 ~]# docker pull mysql
Using default tag: latest		如果不写tag,默认是latest
latest: Pulling from library/mysql
72a69066d2fe: Pull complete 	分量下载,docker image的核心 联合文件系统
93619dbc5b36: Pull complete 
99da31dd6142: Pull complete 
626033c43d70: Pull complete 
37d5d7efb64e: Pull complete 
ac563158d721: Pull complete 
d2ba16033dad: Pull complete 
688ba7d5c01a: Pull complete 
00e060b6d11d: Pull complete 
1c04857f594f: Pull complete 
4d7cfa90e6ea: Pull complete 
e0431212d27d: Pull complete 
Digest: sha256:e9027fe4d91c666666666666666f7738b66666666709
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest		真实地址

# 等价于
docker pull mysql
docker pull docker.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)		删除全部镜像	

容器命令

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

[root@k2 ~]# docker pull centos

新建容器并启动

docker run [可选参数] image 

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


# 测试,启动并进入容器
[root@k2 ~]# docker run -it mysql /bin/bash		
[root@6ae3c9bb6a51 /]# ls					#	查看容器内的mysql,基础版本,很多命令都是不完整的
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@6ae3c9bb6a51 /]# exit
exit
[root@k2 /]# ls
bin   data  etc   lib    media  mydata  proc  run   srv  tmp  var
boot  dev   home  lib64  mnt    opt     root  sbin  sys  usr

列出所有运行的容器

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



[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@k2 /]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                      PORTS     NAMES
6ae3c9bb6a51   centos         "/bin/bash"              6 minutes ago   Exited (0) 3 minutes ago              adoring_vaughan
1c1c8a07c2ed   feb5d9fea6a5   "/hello"                 14 hours ago    Exited (0) 14 hours ago               quirky_mahavira
[root@k2 /]# docker ps -n=1
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
6ae3c9bb6a51   centos    "/bin/bash"   9 minutes ago   Exited (0) 5 minutes ago             adoring_vaughan
[root@k2 /]# docker ps -aq
6ae3c9bb6a51
1c1c8a07c2ed

退出容器

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




[root@k2 /]# docker run -it centos /bin/bash
[root@2bc63e25611d /]# [root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
2bc63e25611d   centos    "/bin/bash"   17 seconds ago   Up 17 seconds             competent_almeida

删除容器

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


[root@k2 /]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS     NAMES
2bc63e25611d   centos         "/bin/bash"              3 minutes ago    Up 3 minutes                          competent_almeida
6ae3c9bb6a51   centos         "/bin/bash"              16 minutes ago   Exited (0) 12 minutes ago             adoring_vaughan
1c1c8a07c2ed   feb5d9fea6a5   "/hello"                 14 hours ago     Exited (0) 14 hours ago               quirky_mahavira
7f40b43e271b   feb5d9fea6a5   "/hello"                 16 hours ago     Exited (0) 16 hours ago               youthful_northcutt
10b62dbb98ac   fe363d9a6ba4   "java -jar /app.jar …"   19 hours ago     Exited (143) 15 hours ago             66-springboot-web
[root@k2 /]# docker rm 2bc63e25611d			# 不能删除正在运行的容器
Error response from daemon: You cannot remove a running container 2bc63e25611dea862ad877730bc87b2dc9ee7bcb5bfb50dc604dc146700f1b41. Stop the container before attempting removal or force remove
[root@k2 /]# docker rm 6ae3c9bb6a51
6ae3c9bb6a51
[root@k2 /]# docker ps -aq
2bc63e25611d
1c1c8a07c2ed
7f40b43e271b
10b62dbb98ac
[root@k2 /]# docker rm -f $(docker ps -aq)
2bc63e25611d
1c1c8a07c2ed
7f40b43e271b
10b62dbb98ac
[root@k2 /]# docker ps -aq

启动和停止容器的操作

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




[root@k2 /]# docker run -it centos /bin/bash
[root@990384ccba9f /]# exit
exit
[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@k2 /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS                      PORTS     NAMES
990384ccba9f   centos    "/bin/bash"   25 seconds ago   Exited (0) 18 seconds ago             funny_elgamal
[root@k2 /]# docker start 990384ccba9f
990384ccba9f
[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS         PORTS     NAMES
990384ccba9f   centos    "/bin/bash"   About a minute ago   Up 7 seconds             funny_elgamal
[root@k2 /]# docker stop 990384ccba9f
990384ccba9f
[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

常用的其他命令

后台启动容器

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

# 问题docker ps 发现,centos停止了

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




[root@k2 /]# docker run -d centos
ed05d164f186f33599a6fc557632fac4fae02d6ab83e2aaec22ea5cca554640d
[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@k2 /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
ed05d164f186   centos    "/bin/bash"   3 minutes ago   Exited (0) 3 minutes ago             condescending_mcnulty
990384ccba9f   centos    "/bin/bash"   8 minutes ago   Exited (0) 7 minutes ago             funny_elgamal

查看日志

docker logs -tf --tail 容器,没有日志   (tail后面需要跟显示日志条数,否则不显示)

# 自己编写一段shell脚本
[root@k2 /]# docker run -d centos /bin/sh -c "while true;do echo hello;sleep 2;done"

[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS     NAMES
e705ce9ef994   centos    "/bin/sh -c 'while t…"   About a minute ago   Up About a minute             priceless_lichterman

# 显示日志
--tf 			显示日志
--tail number 	要显示日志条数
[root@k2 /]# docker logs -tf --tail 10 e705ce9ef994 



[root@k2 /]# docker run -d centos /bin/sh -c "while true;do echo hello;sleep 2;done"
e705ce9ef994919a5749b594269ca6fb3dec38d1b1b03aa7b732e42faeb75030 
[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
e705ce9ef994   centos    "/bin/sh -c 'while t…"   13 seconds ago   Up 12 seconds             priceless_lichterman
[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED              STATUS              PORTS     NAMES
e705ce9ef994   centos    "/bin/sh -c 'while t…"   About a minute ago   Up About a minute             priceless_lichterman
[root@k2 /]# docker logs -tf --tail 10 e705ce9ef994 
2022-05-26T09:42:34.542832791Z hello
2022-05-26T09:42:36.544598561Z hello
2022-05-26T09:42:38.546502476Z hello
2022-05-26T09:42:40.548252395Z hello
^Z
[2]+  已停止               docker logs -tf --tail 10 e705ce9ef994
[root@k2 /]# docker logs -tf  e705ce9ef994 
2022-05-26T09:41:18.474030912Z hello
2022-05-26T09:41:20.476489047Z hello

查看容器中进程信息 ps

# 命令    docker top 容器id
[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
e705ce9ef994   centos    "/bin/sh -c 'while t…"   8 minutes ago   Up 8 minutes             priceless_lichterman
[root@k2 /]# docker top e705ce9ef994 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                5624                27182               0                   17:50               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 2
root                27182               27163               0                   17:41               ?                   00:00:00            /bin/sh -c while true;do echo hello;sleep 2;done

查看镜像的元数据

# 命令    docker inspect 容器id

# 测试
[root@k2 /]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                        PORTS     NAMES
e705ce9ef994   centos    "/bin/sh -c 'while t…"   13 minutes ago   Up 13 minutes                           priceless_lichterman
199564832c3e   centos    "/bin/sh -C 'while t…"   14 minutes ago   Exited (127) 14 minutes ago             recursing_lewin
[root@k2 /]# docker inspect e705ce9ef994

 进入当前正在运行的容器

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

# 命令 
docker exec -it 容器id bashshell 

# 测试	
[root@k2 /]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
e705ce9ef994   centos    "/bin/sh -c 'while t…"   21 minutes ago   Up 21 minutes             priceless_lichterman
[root@k2 /]# docker exec -it e705ce9ef994 /bin/bash
[root@e705ce9ef994 /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@e705ce9ef994 /]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 09:41 ?        00:00:00 /bin/sh -c while true;do echo hello;sleep 2;done
root       674     0  0 10:03 pts/0    00:00:00 /bin/bash
root       698     1  0 10:03 ?        00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 2
root       699   674  0 10:03 pts/0    00:00:00 ps -ef

# 方式二
docker attach 容器id
# 测试
[root@k2 /]# docker attach  e705ce9ef994 
正在执行当前代码.......
[root@k2 ~]# docker rm -f $(docker ps -aq)    # 前面循环没停,直接全停了

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

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

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


[root@k2 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@k2 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       latest    5d0da3dc9764   8 months ago   231MB
[root@k2 ~]# docker run -it centos /bin/bash
[root@k2 ~]# docker run -it centos /bin/bash
[root@93823941b78c /]# [root@k2 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
93823941b78c   centos    "/bin/bash"   16 seconds ago   Up 15 seconds             romantic_sinoussi
[root@k2 ~]# cd /home/
[root@k2 home]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED              STATUS              PORTS     NAMES
93823941b78c   centos    "/bin/bash"   About a minute ago   Up About a minute             romantic_sinoussi
# 进入容器内部
[root@k2 home]# docker attach 93823941b78c
[root@93823941b78c /]# cd /home/
[root@93823941b78c home]# ls
# 在容器内新建一个文件
[root@93823941b78c home]# touch  test.java
[root@93823941b78c home]# ls
test.java  
[root@93823941b78c home]# exit
exit
[root@k2 home]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@k2 home]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS                     PORTS     NAMES
93823941b78c   centos    "/bin/bash"   3 minutes ago   Exited (0) 7 seconds ago             romantic_sinoussi
# 查看当前主机目录
[root@k2 home]# ls
idea  kuan.java
# 将文件拷贝到主机上
[root@k2 home]# docker cp 93823941b78c:/home/test.java /home/
[root@k2 home]# ls
idea  kuan.java  test.java

拷贝是一个手动过程,未来我们使用-v 卷的技术,可以实现,自动同步  /home  /home 

小结

 

attach	 	Attach to a running Container 		# 当前 shell下 attach 连接指定运行镜像
build	 	Build an image from a Dockerfile 	# 通过 Dockerfile 定制镜像
commit	 	Create a new image from a container changes 	# 提交当前容器为新的镜像
cp 		 	Copy files/folders from the containers 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 form the server 	# 从 docker 服务获取容器实时事件
exec 	 	Run a command in an existing container	# 在已存在的容器上运行命令
export	 	Stream the containers of a container 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 infomation		# 显示系统相关信息
inspect	 	return low-level infomation on a container		# 查看容器详细信息
kill	 	kill a running container			# kill 指定 docker 容器
load	 	load an image from a tar archive	# 从一个 tar 包中加载一个镜像【对应 save】
login	 	register or login to the docker registry server		# 注册或者登陆一个 docker 源服务器
logout	 	log out from a docker registry server	# 从当前 docker registry退出
logs 	 	fetch the logs of a container		# 输出当前容器日志信息
port 	 	lookup the public-facing port which is NAT-ed to PRIVATE_PORT 	# 查看映射端口对应的容器内部源端口
pause	 	pause all processes within a container		# 暂停容器
ps		 	list containers						# 列出容器列表
pull 	 	pull an image or a repository from the docker registry server	# 从docker镜像源服务器拉取指定镜像或者库镜像
push	 	push an image or a repository to the docker registry server		# 推送指定镜像或者库镜像至docker源服务器
restart	 	restart a running container			# 重启运行的服务器
rm 		 	remove one or more containers		# 移除一个或者多个容器
rmi 	 	remove one or more images			# 移除一个或者多个镜像(无容器使用该镜像才可以删除,否则需删除相关容器才可继续或 -f 强制删除)
run 	 	run a command in a new container	# 创建一个新的容器并运行一个命令
save	 	save an image to a tar archive 		# 保存一个镜像为一个tar包【对应 load】
search 	 	search for an image on the docker hub 		# 在 docker hub 中搜索镜像
start	 	start a stopped container			# 启动容器
stop	 	stop a running container			# 启动容器
tag 	 	tag an image into a repository		# 给源镜像搭标签
top		 	lookup the running processes of a container		# 查看容器中运行的进程信息
unpause	 	unpause a paused container			# 取消暂停容器
version	 	show the docker version infomation		# 查看 docker 版本号
wait 	 	block until a container stops,then print its exit code 		# 截取容器停止时间的退出状态值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值