欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker常用基本命令

程序员文章站 2024-01-31 14:20:10
...

docker安装

帮助命令

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

镜像命令

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

----------------------------------------------------------------------------------------
➜  ~ docker images -a   
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              bf756fb1ae65        8 months ago        13.3kB
--------------------------------------------------------------------------------------
# 表头
REPOSITORY    镜像的仓库源
TAG 		  镜像的标签
IMAGE ID  	  镜像的id
CREATED       镜像的创建时间
SIZE		  酱香的大小

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

docker search:搜索镜像

➜  ~ docker search mysql
NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   9974                [OK]                
mariadb                           MariaDB is a community-developed fork of MyS…   3651                [OK]                
mysql/mysql-server                Optimized MySQL Server Docker images. Create…   728                                     [OK]
......
--------------------------------------------------------------------------------------------
# 主要可选项
-f, --filter filter  根据提供的条件过滤输出        
使用方法:docker search mysql-f=stars=3000 #mysql下载量大于三千的,没错就是用-f=stars=3000我没写错 

docker pull:拉取镜像

docker pull mysql #最新版本
docker pull 镜像:版本号 #指定版本 docker pull mysql:5.7

docker rmi:删除镜像

docker rmi -f 镜像id #带f是强制删除不带的话运行中是不能删除的
# 使用方法
➜  ~ docker images -a # 查看所有镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              84c5f6e03bf0        10 days ago         104MB
mysql               5.7                 ef08065b0a30        10 days ago         448MB
mysql               latest              e1d7dc9731da        10 days ago         544MB
hello-world         latest              bf756fb1ae65        8 months ago        13.3kB
# 删除一个
➜  ~ docker rmi -f e1d7dc9731da                                                      

# 删除多个
➜  ~ docker rmi -f 84c5f6e03bf0 ef08065b0a30
# 删除所有
➜  ~ docker rmi -f $(docker images -aq) 

容器命令

准备:使用docker 下载一个centos镜像

docker pull centos

Docker常用基本命令

新建容器并启动docker run
Docker常用基本命令

docker run -可选项 image
# 可选项说明 一试就知道
--name="Name"	用来区分容器,比如我要启动2个centos的容器一个name给他叫做c1 一个叫做 c2 没毛病吧
-d				使用后台方式运行 
-it				使用交互方式运行,进入容器查看内容 
-P(大写)			自定义指定容器端口,就是自定义映射主机(物理机)的端口 | -P 8080:9090
					-P 主机端口:容器端口
					-P ip:主机端口:容器端口
-p(小写)		随机指定容易端口
----------------------------------------------------------------------------------------
# 测试
# 启动并进入centos的容器
➜  ~ docker run -it centos /bin/bash
-------------------------------  一下为centos容器内的内容 ---------------------
[aaa@qq.com /]# ls	 # 注意:查看容器内的centos ,为基础版本,很多命令都是不完善的!
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[aaa@qq.com /]# 
[aaa@qq.com /]# exit  # 退出容器 从容器退到主机
exit
➜  ~ 
----------------------------------------------------------------------------
----------------------------------------------------------------------------

列出是所有运行的容器:docker ps

# 可选项说明 一试就知道
-a		# 列出当前正在运行的容器 + 历史运行的过的容器
-n?		# 显示最新创建的容器 -n1 最近一个 -n2 最近俩
-q		# 只显示容器CONTAINER ID(容器id)
----------------------------------------------------------------------------------------
➜  ~ docker ps                      
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
➜  ~ docker ps -a 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
b36e776e43a0        centos              "/bin/bash"         8 minutes ago       Exited (0) 3 minutes ago                       mystifying_meninsky
543b76d47a8b        bf756fb1ae65        "/hello"            39 hours ago        Exited (0) 39 hours ago                        gallant_matsumoto
➜  ~ 
➜  ~ docker ps -aq
b36e776e43a0
543b76d47a8b

退出容器

exit # 停止运行容器并退出
Ctrl + P + Q # 退出不停止运行

删除容器 :docker rm

# 删除一个
docker rm -f 容器id
# 删除多个
docker rm -f 容器id 容器id
# 全部删除
docker rm -f $(docker ps -aq)
docker ps -aq | xargs docker rm -f # 利用linux管道 将查询出来的id作为参数递归删除
## 测试 ##
➜  ~ docker ps -aq | xargs docker rm -f 
91f8c360cacb
c1da758ef69e
18ec27bc18ec
➜  ~ docker ps                          
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
➜  ~ 

启动&停止容器

docker start 容器id		# 启动容器
docker restart 容器id	# 重启容器
docker stop 容器id		# 停止容器
docker kill 容器id		# 强制停止容器
  • 演示:
➜  ~ docker ps   
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
➜  ~ docker run -it centos /bin/bash
[aaa@qq.com /]# #                                                                                                                                                                                                                         
➜  ~ docker ps                      
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
927804ea4e80        centos              "/bin/bash"         16 seconds ago      Up 15 seconds                           relaxed_mclaren
➜  ~ docker stop 927804ea4e80              
927804ea4e80
➜  ~ docker ps               
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
➜  ~ 

常用命令

查看日志:
docker logs -f -t --tail -f 容器id

➜  ~ docker run -d -it centos /bin/sh -c "while true;do echo 'testlogs';sleep 1;done" # 后台运行centos 并使用脚本生产日志
0d6e0411161cec5e20e483a99ae08bda76b829f8d2a0cd429a87cf36dc3ba5d1
➜  ~ docker ps                                                                       
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
0d6e0411161c        centos              "/bin/sh -c 'while t…"   5 seconds ago       Up 4 seconds                            hopeful_curran
➜  ~ 
➜  ~ docker logs -ft --tail -f 0d6e0411161c    # 实时查看日志       
2020-09-21T03:10:15.242388978Z testlogs
2020-09-21T03:10:16.243911818Z testlogs
2020-09-21T03:10:17.245877509Z testlogs
2020-09-21T03:10:18.247900311Z testlogs
2020-09-21T03:10:19.259762925Z testlogs

Docker常用基本命令
容器中的进程:docker top 容器id

➜  ~ docker top 0d6e0411161c
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                1591                27623               0                   11:35               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
root                27623               27604               0                   11:10               ?                   00:00:00            /bin/sh -c while true;do echo 'testlogs';sleep 1;done
➜  ~ 

查看容器的原数据:docker inspect 容器id

Docker常用基本命令

进入当前正在运行的容器:

  1. docker exec -it 容器id 外壳 (开启一个新的会话)
➜  ~ docker exec -it 0d6e0411161c /bin/bash
-------------------------------------------------------------------------------------------------------------
                                                                                                                                                                                                                                                 ➜  ~ docker exec -it 0d6e0411161c /bin/bash
[aaa@qq.com /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[aaa@qq.com /]# 

  1. docker attach 容器id (进入正在运行的会话)
docker  attach 0d6e0411161c
-------------------------------------------------------------------------------------------------------------
# 测试
➜  ~ docker attach 0d6e0411161c   
testlogs
testlogs
testlogs
testlogs
testlogs
testlogs......

从容器内拷贝到主机上:docker cp 容器id:容器内的路径 目的的主机路径
注意:从主机上拷贝到容器内 就是反过来呗docker cp 本地主机路径 目的容器id:容器内的路径

➜  ~ docker run -it centos /bin/bash			# 创建一个新容器
[aaa@qq.com /]# touch /home/test.java	# 创建一个test.java测试文件用于cp
[aaa@qq.com home]# exit 					# 退出(不管这个容器有没有都可以cp,只要这个容器存在数据就存在)
exit
➜  ~ docker ps -a								# 查看容器id
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
299e981aef3d        centos              "/bin/bash"         4 minutes ago       Exited (0) 22 seconds ago                       sleepy_rosalind
➜  ~ docker cp 299e981aef3d:/home/test.java  /home			# 进行copy操作
➜  ~ ls /home												# 查看是否copy成功
test.java  www
➜  ~ 

docker安装
docker的命令是非常多的,先记住这些基本命令多练,关注我其它docker相关博客我们一起来学习O(∩_∩)O~~
下一篇部署Nginx。