docker基本使用

引用自 http://blog.redrose2100.com/article/62

 

一、环境准备

(1)使用docker pull centos 下载一个centos的最新版本的镜像

  1. [root@localhost ~]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. [root@localhost ~]# docker pull centos
  4. Using default tag: latest
  5. latest: Pulling from library/centos
  6. a1d0c7532777: Pull complete
  7. Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
  8. Status: Downloaded newer image for centos:latest
  9. docker.io/library/centos:latest
  10. [root@localhost ~]# docker images
  11. REPOSITORY TAG IMAGE ID CREATED SIZE
  12. centos latest 5d0da3dc9764 3 weeks ago 231MB
  13. [root@localhost ~]#

二、docker操作常用的命令

2.1 docker run 命令

(1)docker run —help 帮助信息

(2)docker run [可选参数] 镜像名称
—name 设置docker容器的名称
-d 在后台运行docker
-it 使用交互的方式运行docker
-p 执行容器的端口,如 -p 80:80
-P 随机指定端口

如下为以交互的方式启动并进入docker容器

  1. [root@localhost ~]# docker run -it centos /bin/bash
  2. [root@3e394ae7eda7 /]#

(3)docker run -d 镜像名称 后台启动docker
如下为后台启动centos容器,这里需要注意的是,使用-d后台启动docker镜像后,如果docker镜像中没有前台进程,则docker容器停止,即当docker发现没有前台进程时就会自动停止

  1. [root@localhost ~]# docker run -d centos
  2. 3cab830ec97c4f964b62a42726e3e541f689f906e00ee2a24289f2ce44a2b94e
  3. [root@localhost ~]# docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. [root@localhost ~]# docker ps -a
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  7. 3cab830ec97c centos "/bin/bash" About a minute ago Exited (0) About a minute ago inspiring_benz
  8. [root@localhost ~]#

(4)docker run -d 镜像名称 /bin/bash -C “xxx” 后台启动一个docker容器,并且执行xxx的shell脚本
如下为后台启动一个docker,并且docker容器中循环打印hello_docker,此时可以发现docker处于运行状态

  1. [root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo hello_docker;sleep 1;done"
  2. 9f427c9ff601d31891fc947932a4e11f8e8b696dfd4a93dceea5bbfa6f465a33
  3. [root@localhost ~]# docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 9f427c9ff601 centos "/bin/sh -c 'while t…" 3 seconds ago Up 2 seconds nice_almeida
  6. [root@localhost ~]#

2.2 退出容器

(1)使用exit 命令,注意如果使用exit命令进入退出后,docker就停止了

  1. [root@3e394ae7eda7 /]# exit
  2. exit

[root@localhost ~]#
(2)使用快捷键 Ctrl p Ctrl q 快捷键可以做到退出docker容器,同时docker容器不会停止

2.3 docker ps 命令

(1)docker ps 帮助信息

  1. [root@localhost ~]# docker ps --help
  2. Usage: docker ps [OPTIONS]
  3. List containers
  4. Options:
  5. -a, --all Show all containers (default shows just running)
  6. -f, --filter filter Filter output based on conditions provided
  7. --format string Pretty-print containers using a Go template
  8. -n, --last int Show n last created containers (includes all states) (default -1)
  9. -l, --latest Show the latest created container (includes all states)
  10. --no-trunc Don't truncate output
  11. -q, --quiet Only display container IDs
  12. -s, --size Display total file sizes
  13. [root@localhost ~]#

(2)docker ps 列出正在运行的容器
如下,表示当前没有docker在运行

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. [root@localhost ~]#

(3)docker ps -a 列出正在运行和历史运行过的docker容器

  1. [root@localhost ~]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 3e394ae7eda7 centos "/bin/bash" 6 minutes ago Exited (0) 4 minutes ago unruffled_lederberg
  4. c2f1f112cbbe feb5d9fea6a5 "/hello" 10 hours ago Exited (0) 10 hours ago loving_morse
  5. 0150f4c51f21 feb5d9fea6a5 "/hello" 10 hours ago Exited (0) 10 hours ago optimistic_albattani
  6. [root@localhost ~]#

(4)docker ps -n 个数 列出最近创建的容器
如下表示最近创建的1个容器

  1. [root@localhost ~]# docker ps -n 1
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 3e394ae7eda7 centos "/bin/bash" 7 minutes ago Exited (0) 5 minutes ago unruffled_lederberg
  4. [root@localhost ~]#

(5)docker ps -aq 显示所有运行过的容器的id

  1. [root@localhost ~]# docker ps -aq
  2. 3e394ae7eda7
  3. c2f1f112cbbe
  4. 0150f4c51f21
  5. [root@localhost ~]#

2.4 docker rm -f 容器id 命令

(1)docker rm -f 容器id 删除容器

  1. [root@localhost ~]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 3e394ae7eda7 centos "/bin/bash" 14 minutes ago Up 3 minutes unruffled_lederberg
  4. c2f1f112cbbe feb5d9fea6a5 "/hello" 10 hours ago Exited (0) 10 hours ago loving_morse
  5. 0150f4c51f21 feb5d9fea6a5 "/hello" 10 hours ago Exited (0) 10 hours ago optimistic_albattani
  6. [root@localhost ~]# docker rm -f 0150f4c51f21
  7. 0150f4c51f21
  8. [root@localhost ~]# docker ps -a
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. 3e394ae7eda7 centos "/bin/bash" 14 minutes ago Up 3 minutes unruffled_lederberg
  11. c2f1f112cbbe feb5d9fea6a5 "/hello" 10 hours ago Exited (0) 10 hours ago loving_morse
  12. [root@localhost ~]#

(2)docker rm -f $(docker ps -aq) 删除所有docker容器

  1. [root@localhost ~]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 3e394ae7eda7 centos "/bin/bash" 17 minutes ago Up 6 minutes unruffled_lederberg
  4. c2f1f112cbbe feb5d9fea6a5 "/hello" 10 hours ago Exited (0) 10 hours ago loving_morse
  5. [root@localhost ~]# docker rm -f $(docker ps -aq)
  6. 3e394ae7eda7
  7. c2f1f112cbbe
  8. [root@localhost ~]# docker ps -a
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. [root@localhost ~]#

(3)docker ps -aq|xargs docker rm -f 也可以删除所有的容器

  1. [root@localhost ~]# docker ps -a
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 2fe6ca22d978 centos "/bin/bash" 4 seconds ago Exited (0) 3 seconds ago centos02
  4. 40dbe1daff99 centos "/bin/bash" 12 seconds ago Exited (0) 12 seconds ago centos01
  5. [root@localhost ~]# docker ps -aq|xargs docker rm -f
  6. 2fe6ca22d978
  7. 40dbe1daff99
  8. [root@localhost ~]# docker ps -a
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. [root@localhost ~]#

2.5 启动和停止容器

(1)docker start 容器id 启动容器

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. [root@localhost ~]# docker ps -a
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. aa2976a9dbb1 centos "/bin/bash" 19 seconds ago Exited (0) 15 seconds ago blissful_kirch
  6. [root@localhost ~]# docker start aa2976a9dbb1
  7. aa2976a9dbb1
  8. [root@localhost ~]# docker ps
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. aa2976a9dbb1 centos "/bin/bash" 33 seconds ago Up 2 seconds blissful_kirch
  11. [root@localhost ~]#

(2)docker restart 容器id 重启重启

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. aa2976a9dbb1 centos "/bin/bash" 7 minutes ago Up 6 minutes blissful_kirch
  4. [root@localhost ~]# docker restart aa2976a9dbb1
  5. aa2976a9dbb1
  6. [root@localhost ~]# docker ps
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. aa2976a9dbb1 centos "/bin/bash" 7 minutes ago Up 1 second blissful_kirch
  9. [root@localhost ~]#

(3)docker stop 容器id 停止容器

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. aa2976a9dbb1 centos "/bin/bash" 8 minutes ago Up 30 seconds blissful_kirch
  4. [root@localhost ~]# docker stop aa2976a9dbb1
  5. aa2976a9dbb1
  6. [root@localhost ~]# docker ps
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. [root@localhost ~]# docker ps -a
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. aa2976a9dbb1 centos "/bin/bash" 8 minutes ago Exited (0) 4 seconds ago blissful_kirch
  11. [root@localhost ~]#

(4)docker kill 容器id 停止容器(当使用docker stop 无法停止时,可以使用docker kill 直接杀掉)

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. aa2976a9dbb1 centos "/bin/bash" 9 minutes ago Up 9 seconds blissful_kirch
  4. [root@localhost ~]# docker kill aa2976a9dbb1
  5. aa2976a9dbb1
  6. [root@localhost ~]# docker ps
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. [root@localhost ~]# docker ps -a
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. aa2976a9dbb1 centos "/bin/bash" 9 minutes ago Exited (137) 5 seconds ago blissful_kirch
  11. [root@localhost ~]#

2.6 启动和停止容器

(1)docker start 容器id 启动容器

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. [root@localhost ~]# docker ps -a
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. aa2976a9dbb1 centos "/bin/bash" 19 seconds ago Exited (0) 15 seconds ago blissful_kirch
  6. [root@localhost ~]# docker start aa2976a9dbb1
  7. aa2976a9dbb1
  8. [root@localhost ~]# docker ps
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. aa2976a9dbb1 centos "/bin/bash" 33 seconds ago Up 2 seconds blissful_kirch
  11. [root@localhost ~]#

(2)docker restart 容器id 重启重启

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. aa2976a9dbb1 centos "/bin/bash" 7 minutes ago Up 6 minutes blissful_kirch
  4. [root@localhost ~]# docker restart aa2976a9dbb1
  5. aa2976a9dbb1
  6. [root@localhost ~]# docker ps
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. aa2976a9dbb1 centos "/bin/bash" 7 minutes ago Up 1 second blissful_kirch
  9. [root@localhost ~]#

(3)docker stop 容器id 停止容器

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. aa2976a9dbb1 centos "/bin/bash" 8 minutes ago Up 30 seconds blissful_kirch
  4. [root@localhost ~]# docker stop aa2976a9dbb1
  5. aa2976a9dbb1
  6. [root@localhost ~]# docker ps
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. [root@localhost ~]# docker ps -a
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. aa2976a9dbb1 centos "/bin/bash" 8 minutes ago Exited (0) 4 seconds ago blissful_kirch
  11. [root@localhost ~]#

(4)docker kill 容器id 停止容器(当使用docker stop 无法停止时,可以使用docker kill 直接杀掉)

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. aa2976a9dbb1 centos "/bin/bash" 9 minutes ago Up 9 seconds blissful_kirch
  4. [root@localhost ~]# docker kill aa2976a9dbb1
  5. aa2976a9dbb1
  6. [root@localhost ~]# docker ps
  7. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  8. [root@localhost ~]# docker ps -a
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. aa2976a9dbb1 centos "/bin/bash" 9 minutes ago Exited (137) 5 seconds ago blissful_kirch
  11. [root@localhost ~]#

2.7 docker logs 查看日志命令

(1)docker logs —help 查看docker logs 的帮助信息

  1. [root@localhost ~]# docker logs --help
  2. Usage: docker logs [OPTIONS] CONTAINER
  3. Fetch the logs of a container
  4. Options:
  5. --details Show extra details provided to logs
  6. -f, --follow Follow log output
  7. --since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or
  8. relative (e.g. 42m for 42 minutes)
  9. -n, --tail string Number of lines to show from the end of the logs (default "all")
  10. -t, --timestamps Show timestamps
  11. --until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or
  12. relative (e.g. 42m for 42 minutes)
  13. [root@localhost ~]#

(2)docker logs -tf —tail num 容器id 可以查看启动容器的最新num行的日志
如下查看10行日志,并且会一直更新。类似linux中的tail -f 的效果

  1. [root@localhost ~]# docker run -d centos /bin/sh -c "while true;do echo hello_docker;sleep 1;done"
  2. 9f427c9ff601d31891fc947932a4e11f8e8b696dfd4a93dceea5bbfa6f465a33
  3. [root@localhost ~]# docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 9f427c9ff601 centos "/bin/sh -c 'while t…" 3 seconds ago Up 2 seconds nice_almeida
  6. [root@localhost ~]# docker logs -tf --tail 10 9f427c9ff601
  7. 2021-10-10T15:27:02.215242337Z hello_docker
  8. 2021-10-10T15:27:03.218393417Z hello_docker
  9. 2021-10-10T15:27:04.220812877Z hello_docker
  10. 2021-10-10T15:27:05.223520640Z hello_docker
  11. 2021-10-10T15:27:06.226058326Z hello_docker
  12. 2021-10-10T15:27:07.229459499Z hello_docker
  13. 2021-10-10T15:27:08.232441670Z hello_docker
  14. 2021-10-10T15:27:09.235056718Z hello_docker
  15. 2021-10-10T15:27:10.238007922Z hello_docker
  16. 2021-10-10T15:27:11.240768549Z hello_docker

2.8 docker top 查看容器的进程信息

(1)docker top 容器id 查看容器中的进程信息

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 9f427c9ff601 centos "/bin/sh -c 'while t…" 8 minutes ago Up 8 minutes nice_almeida
  4. [root@localhost ~]# docker top 9f427c9ff601
  5. UID PID PPID C STIME TTY TIME CMD
  6. root 68199 68179 0 23:24 ? 00:00:00 /bin/sh -c while true;do echo hello_docker;sleep 1;done
  7. root 70194 68199 0 23:32 ? 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1
  8. [root@localhost ~]#

2.9 docker inspect 查看容器内部信息

(1)docker inspect 容器id 查看容器的内部信息

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 9f427c9ff601 centos "/bin/sh -c 'while t…" 11 minutes ago Up 11 minutes nice_almeida
  4. [root@localhost ~]# docker inspect 9f427c9ff601
  5. # 这里显示内容比较多,就不在此显示了

2.10 进入docker容器的命令

(1)docker exec -it 容器id bash 重新打开一个终端的方式进入docker
如下为进入docker后重新打开一个终端,这种方式可以通过exit方式退出docker

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 9f427c9ff601 centos "/bin/sh -c 'while t…" 17 minutes ago Up 17 minutes nice_almeida
  4. [root@localhost ~]# docker exec -it 9f427c9ff601 bash
  5. [root@9f427c9ff601 /]#

(2)docker attach
进入容器中正在运行的终端

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 9f427c9ff601 centos "/bin/sh -c 'while t…" 19 minutes ago Up 19 minutes nice_almeida
  4. [root@localhost ~]# docker attach 9f427c9ff601
  5. hello_docker
  6. hello_docker
  7. hello_docker
  8. hello_docker
  9. hello_docker
  10. hello_docker
  11. hello_docker
  12. hello_docker
  13. hello_docker
  14. hello_docke

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

(1)docker cp 容器id:容器文件路径 本地文件路径

    1. [root@localhost ~]# docker ps
    2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    3. d1df9f4c810d centos "/bin/sh -c 'while t…" 16 minutes ago Up 16 minutes confident_franklin
    4. [root@localhost ~]# docker exec -it d1df9f4c810d bash
    5. [root@d1df9f4c810d /]# ls
    6. bin etc lib lost found mnt proc run srv tmp var
    7. dev home lib64 media opt root sbin sys usr
    8. [root@d1df9f4c810d /]# cd /opt
    9. [root@d1df9f4c810d opt]# ls
    10. [root@d1df9f4c810d opt]# echo 'hello docker' >> test.txt
    11. [root@d1df9f4c810d opt]# ls
    12. test.txt
    13. [root@d1df9f4c810d opt]# exit
    14. exit
    15. [root@localhost ~]# docker cp d1df9f4c810d:/opt/test.txt /opt/test.txt
    16. [root@localhost ~]# cat /opt/test.txt
    17. hello docker
    18. [root@localhost ~]#
posted @   我是YINGZI  阅读(144)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示