docker常用命令介绍

文章目录

      • 1. 查看帮助
        • 1. 官方文档
        • 2. 查看docker 版本信息
        • 3. 查看docker系统的详细信息
        • 4. 帮助命令
      • 2. 镜像命令
        • 1. 查看镜像
        • 2. 搜索镜像
        • 3. 拉取镜像
        • 4. 删除镜像
      • 3. 容器命令
        • 1. 查看容器
        • 2. 新建容器
        • 3. 退出容器
        • 4. 进入容器
        • 5. 停止容器
        • 6. 删除容器
        • 7. 启动、重启容器
        • 8. 查看容器资源使用
        • 9. 查看容器日志
        • 10. 查看容器中的进程
        • 11 . 容器与主机之间的文件拷贝
        • 12. 数据同步(卷挂载)
        • 13. 主机与容器端口映射

1. 查看帮助

1. 官方文档
https://docs.docker.com/reference/
2. 查看docker 版本信息
# 简单信息
docker -v
# 详细信息
docker version
3. 查看docker系统的详细信息
docker info
4. 帮助命令
# 查看所有命令
docker --help
# 查看某个命令的帮助信息
docker COMMAND --help

2. 镜像命令

1. 查看镜像
# 查看当前本地所有镜像,不包含中间层镜像
docker images
# 查看所有镜像,包含中间层镜像
docker images -a 
# 查看所有镜像id
docker images -q 
# -a 和 -q可以连用
docker images -aq# 查看指定仓库和TAG(版本)的镜像 
docker images [REPOSITORY[:TAG]]  
# 如
docker images mysql:latest
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
mysql        latest    c0cdc95609f1   28 hours ago   556MB
2. 搜索镜像

# docker search 能显示的内容有限,网络允许的话,直接去dockerhub官网去查询较好
# https://registry.hub.docker.com/# 搜索mysql镜像
docker search mysql# 设置筛选条件 # --filter stars=num 筛选标星不少于30个的镜像# --filter is-automated=true/false 是否自动构建# --filter is-official=true/false 是否为官方镜像
docker search --filter stars=30 mysql# 设置镜像显示格式# .Name 镜像名称# .Description 描述# .StarCount 星标数# .IsOfficial 是否官方# .IsAutomated 是否自动构建
docker search --format="table {{.Name}}\t{{.IsAutomated}}\t{{.IsOfficial}}\t{{.StarCount}}"  mysql
# 命令中table 表示以表格形式展示结果
3. 拉取镜像
# docker pull [OPTIONS] NAME[:TAG|@DIGEST]
docker pull tomcat:9.0
4. 删除镜像
# 删除镜像 docker rmi 镜像名[:tag]/镜像ID
docker rmi  centos# -f 强制删除# 根据镜像ID删除所有镜像
docker rmi -f  $(docker images -aq)

3. 容器命令

1. 查看容器
# 查看当前正在运行的容器
docker ps # -a 查看所有的容器 # -s 显示容器磁盘占用# -n=3 显示最近三条创建的所有容器# -l 显示最新创建的容器# -q 只显示容器ID
2. 新建容器
# docker run 镜像ID COMMAND
docker run -it centos /bin/bash # -i 交互式操作,通常与 -t连用# -t 终端# centos 镜像名# /bin/bash  镜像后的命令,用于启用交互式shell# docker run 其他常用参数# -d 后台运行# --name 给容器命名# -e 设置环境变量# -m 设置使用的内存最大值# -v 绑定一个卷# -p 指定端口映射 主机端口号:容器端口号# --rm 创建临时容器(exit容器即被删除)
3. 退出容器
exit #在容器内执行该语句,会退出该终端、退出并停止容器
ctrl +P +Q # 退出容器,但不关闭该终端,不停止容器
4. 进入容器
docker attach 镜像ID   # 进入容器,在这里使用exit退出容器,则容器会停止运行
docker exec [OPTIONS] 镜像ID [COMMAND] # 进入容器,并重启一个新的终端,因此可以使用很多docker run的参数
# 如
docker exec -it 3b04532af311 /bin/bash
# 由于 docker exec 相当于在容器中新开一个终端,因此在该终端中退出容器,容器仍处于运行状态
5. 停止容器
docker stop 容器ID# 如果stop失败,可以尝试使用 docker kill命令强制停止
docker kill 容器ID
6. 删除容器
# 删除容器
docker rm CONTAINER# -f 强制刪除运行中的容器# -v 连同关联的匿名卷一块删除
# 强制删除所有容器
docker rm -f $(docker ps -aq)# 删除所有状态为断开的容器
docker rm $(docker ps --filter status=exited -q)
7. 启动、重启容器
# 启动容器
docker start 容器ID
# 重启容器
docker restart 容器ID
8. 查看容器资源使用
docker stats 
# 默认显示实时显示所有正在运行的容器的资源占用
CONTAINER ID   NAME               CPU %     MEM USAGE / LIMIT     MEM %     NET I/O      BLOCK I/O         PIDS
2492b06944ce   centos01           0.00%     3.605MiB / 1.777GiB   0.20%     1.1kB / 0B   19.4MB / 57.3kB   1
3b04532af311   reverent_ritchie   0.00%     532KiB / 1.777GiB     0.03%     926B / 0B    0B / 0B           1
9f754a7abfd3   clever_albattani   0.00%     536KiB / 1.777GiB     0.03%     746B / 0B    0B / 0B           1# 也可以查看指定容器ID或者容器名的状态
docker stats  2492b06944ce clever_albattaniCONTAINER ID   NAME               CPU %     MEM USAGE / LIMIT     MEM %     NET I/O      BLOCK I/O         PIDS
2492b06944ce   centos01           0.00%     3.605MiB / 1.777GiB   0.20%     1.1kB / 0B   19.4MB / 57.3kB   1
9f754a7abfd3   clever_albattani   0.00%     536KiB / 1.777GiB     0.03%     746B / 0B    0B / 0B           1# 其他参数# --all 显示所有容器的状态数据(默认只显示运行中容器的状态)# --no-stream 只获取一次当前的占用情况,后续不实时获取# --format 指定输出格式# .Container    容器ID/容器名# .Name         容器名# .ID           容器ID# .CPUPerc      CPU 百分比# .MemUsage     当前内存使用# .NetIO        网络IO# .BlockIO      块设备IO# .MemPerc      内存使用占比(Windows不可用)# .PIDs         容器创建的进程或者线程数 (Windows不可用)docker stats --all --format  "table {{.ID}}\t{{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDs}}"  2492b06944ce clever_albattaniCONTAINER ID   NAME               CPU %     MEM USAGE / LIMIT     MEM %     NET I/O      BLOCK I/O         PIDS
2492b06944ce   centos01           0.00%     3.605MiB / 1.777GiB   0.20%     1.1kB / 0B   19.4MB / 57.3kB   1
9f754a7abfd3   clever_albattani   0.00%     536KiB / 1.777GiB     0.03%     746B / 0B    0B / 0B           1
9. 查看容器日志
docker logs 容器ID/容器名# --details  显示更多信息# --follow 跟踪实时日志# --since  显示某个开始时间(2013-01-02T13:23:37Z、 42m for 42 minutes)的所有日志 # --tail  显示最近n条日志# -t 显示日志时间戳#  --until 显示某个时间(2013-01-02T13:23:37Z、 42m for 42 minutes)之前的所有日志 docker logs --follow --timestamps  --since '2021-03-01'  --until '2021-05-18'  --tail 2 2492b06944ce
2021-05-14T03:34:11.150879981Z exit
2021-05-14T05:45:27.175175999Z [root@2492b06944ce /]# exit
10. 查看容器中的进程
docker top 容器ID/容器名docker top 2492b06944ce
UID    PID   PPID    C    STIME      TTY      TIME        CMD
root   1853  1833    0    09:44    pts/0   00:00:00   /bin/bash
11 . 容器与主机之间的文件拷贝
# 将容器中的路径(文件或目录)拷贝至主机
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
# 将主机中的路径(文件或目录)拷贝至容器
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH# 如果SRC_PATH是文件# DEST_PATH 不存在, 需要手动新建目录,文件会保存至该DEST_PATH下docker cp 3b04532af311:/root/dockerfile.txt ./hostfolder  # 将dockerfile.txt保存到本地 ./hostfolder文件中,会覆盖同名文件# DEST_PATH 不存在且以‘/’结尾, 则会报错,提示需要新建目录[root@codetest ~]# docker cp 3b04532af311:/root/dockerfile.txt ./1/2/invalid output path: directory "/root/1" does not exist# DEST_PATH 存在,且是个文件,则会将SRC_PATH内容写进DEST_PATHdocker cp 3b04532af311:/root/dockerfile.txt ./hostfolder/test.txt# DEST_PATH 存在,且是个目录,会在DEST_PATH新建跟SRC_PATH同名的文件docker cp 3b04532af311:/root/dockerfile.txt ./hostfolder/ # 会在./hostfolder/下新建‘dockerfile.txt’文件# 如果SRC_PATH是目录# DEST_PATH 不存在,会自动新建该 DEST_PATHdocker cp 3b04532af311:/root/dockerfolder ./hostfolder456 # 在主机上新建 ./hostfolder456 目录# DEST_PATH 存在,但是个文件,会报错,提示 'cannot copy directory'docker cp 3b04532af311:/root/dockerfolder dockerfile.txt# DEST_PATH 存在,且是个目录# 如果 SRC_PATH 以'/.' 结尾, 则会将SRC_PATH目录下的文件拷贝至DEST_PATHdocker cp 3b04532af311:/root/dockerfolder/. ./hostfolder# 如果不是SRC_PATH 以'/.' 结尾, 会在DEST_PATH下创建SRC_PATH目录docker cp 3b04532af311:/root/dockerfolder/ ./hostfolder # 在本机./hostfolder下新建dockerfolder路径,并拷贝其中的文件至主机./hostfolder/dockerfolder目录
12. 数据同步(卷挂载)
# 主机目录:容器目录
docker  run  -v `pwd`:`pwd` -w `pwd` -i -t  --name centos centos  /bin/bash[root@37fc626995b1 synctest]# lssync.txt[root@37fc626995b1 synctest]# cat sync.txt from host[root@37fc626995b1 synctest]# # 此时在主机修改文件会直接同步至容器,在容器中修改该文件,内容也会被同步至本地,主机和容器的对应目录 会保持一直
# 关闭容器,在主机修改目录,依然可以同步至容器。 删除容器,主机目录依然存在,不会被删除。# 通过docker inspect命令,可查看容器的挂载信息
docker inspect 37fc626995b1"Mounts": [{"Type": "bind","Source": "/root/synctest","Destination": "/root/synctest","Mode": "","RW": true,"Propagation": "rprivate"}],# 若果主机目录不存在,则会在主机自动新建该目录
docker run  -v /doesnt/exist:/foo -w /foo -i -t  --name centos centos  /bin/bash#--read-only 表示容器只对同步的目录具有写权限,其他目录均为只读权限,无法修改
docker run --read-only  -v `pwd`:`pwd` -w `pwd` -i -t  --name centos centos  /bin/bash# 在容器目录添加 :ro 表示容器对该同步目录只有读权限,无写权限,要修改该目录,只能使用主机进行修改。 事实上,该设置会让容器对其他路径也只有读权限
docker run -v `pwd`:`pwd`:ro -w `pwd` -i -t  --name centos centos  /bin/bash# 可以不指定主机目录位置
docker run -v /foo -w /foo -i -t  --name centos centos  /bin/bash
# 使用 docker inspect 命令查看容器详细信息,找到Mount模块,发现在不指定主机目录时,会在主机上生成随机路径
# /var/lib/docker/volumes/随机目录串/_data   ,用于和容器进行同步"Mounts": [{"Type": "volume","Name": "925b2e8d73485053924dcd5d53e148142400bfb2164262247daf4e8ccb1be717","Source": "/var/lib/docker/volumes/925b2e8d73485053924dcd5d53e148142400bfb2164262247daf4e8ccb1be717/_data","Destination": "/foo","Driver": "local","Mode": "","RW": true,"Propagation": ""}]# 不指定主机目录时,可以指定挂载的名字
docker run  -v tongbu:/foo -w /foo -i -t  --name centos centos  /bin/bash
# 使用 docker inspect 命令查看容器详细信息,找到Mount模块,发现在不指定主机目录时,会在主机上生成指定路径
# /var/lib/docker/volumes/挂载名/_data   ,用于和容器进行同步"Mounts": [{"Type": "volume","Name": "tongbu","Source": "/var/lib/docker/volumes/tongbu/_data","Destination": "/foo","Driver": "local","Mode": "z","RW": true,"Propagation": ""}],# 可通过docker volume ls 命令,查看不指定主机目录时的挂载信息
docker volume lsDRIVER    VOLUME NAMElocal     925b2e8d73485053924dcd5d53e148142400bfb2164262247daf4e8ccb1be717local     tongbu# 使用 --volumes-from  可以从其他的容器中挂载卷
docker run --volumes-from 25731f8e331d --volumes-from 7b3e43cd66f7 -i -t ubuntu /bin/bash
13. 主机与容器端口映射
# -p 主机端口:容器端口
docker run  -d -p 8080:80 nginx
# -P 将主机的随机端口映射到容器端口
docker run  -d -P nginx# docker port CONTAINER 查看容器的端口映射情况


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部