Docker 常用命令

落日映苍穹つ 2023-02-14 01:29 110阅读 0赞

一、常用命令

基本命令

  1. docker version
  2. docker info
  3. docker --help

官方文档:https://docs.docker.com/reference/

镜像命令

查看镜像:

  1. // 查看所有的镜像
  2. docker images
  3. // 可选参数
  4. Options:
  5. -a, --all Show all images (default hides intermediate images)
  6. --digests Show digests
  7. -f, --filter filter Filter output based on conditions provided
  8. --format string Pretty-print images using a Go template
  9. --no-trunc Don't truncate output
  10. -q, --quiet Only show numeric IDs
  11. [root@wsuo ~]# docker images
  12. REPOSITORY TAG IMAGE ID CREATED SIZE
  13. hello-world latest bf756fb1ae65 4 months ago 13.3kB
  • REPOSITORY:镜像的仓库源;
  • TAG:镜像的标签;
  • IMAGE ID:镜像的 ID;
  • CREATED:镜像的创建时间;
  • SIZE:镜像的大小。

比较常用的是显示全部镜像但是只显示 ID:

  1. [root@wsuo ~]# docker images -aq
  2. bf756fb1ae65

搜索镜像:

  1. docker search
  2. 可选参数:
  3. Options:
  4. -f, --filter filter Filter output based on conditions provided
  5. --format string Pretty-print search using a Go template
  6. --limit int Max number of search results (default 25)
  7. --no-trunc Don't truncate output

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk0MTM2NA_size_16_color_FFFFFF_t_70

  1. 搜索大于 3000 star 的镜像:
  2. docker search mysql --filter=stars=3000

拉取镜像:

  1. docker pull
  2. 下载 mysql
  3. docker pull mysql
  4. 后面可以加上版本信息,如果不写版本则默认是最新版。
  5. docker pull mysql:5.7 # 下载5.7版本的mysql

下载一个 centOS 镜像来测试:

  1. [root@wsuo ~]# docker pull centos
  2. Using default tag: latest # 默认标签
  3. latest: Pulling from library/centos # 仓库位置
  4. 8a29a15cefae: Pull complete
  5. Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700 # 镜像的 ID 号
  6. Status: Downloaded newer image for centos:latest
  7. docker.io/library/centos:latest

删除镜像:

  1. docker rmi
  2. # 指定 ID:
  3. docker rmi -f ID
  4. # 删除所有镜像
  5. docker rmi -f $(docker images -aq)

容器命令

有了镜像才可以创建容器:

  1. docker pull centos

创建容器并启动:

  1. docker run [可选参数] image
  2. --name: 容器名字 tomcat1, tomcat2 用来区分容器
  3. -d 后台方式运行
  4. -it 使用交互方式运行,进入容器查看内容
  5. -p 指定端口 -p 8080
  6. -p: 主机端口:容器端口 映射
  7. -p: 容器端口
  8. -P 随机指定端口

执行:

  1. [root@wsuo ~]# docker run -it centos /bin/bash
  2. [root@e25d08956b4a /]#

这其实就是一个套娃,我们目前使用的是容器,但是它不太完善。

从容器中退出到主机:

  1. exit # 直接停止并退出
  2. Ctrl+P+Q # 容器不停止退出

列出所有运行中的容器:

  1. docker ps # 列出正在运行的容器
  2. docker ps -a # 列出历史运行的容器
  3. docker ps -a -n=2 # 显示最近运行的俩个容器
  4. docker ps -q # 显示编号
  5. [root@wsuo ~]# docker ps
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  7. [root@wsuo ~]# docker ps -a
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. e25d08956b4a centos "/bin/bash" 2 minutes ago Exited (0) 29 seconds ago inspiring_khayyam
  10. 291fe9863e6a hello-world "/hello" 45 hours ago Exited (0) 45 hours ago peaceful_fermi

删除容器:

  1. docker rm 容器ID # 删除指定的容器,不能删除正在运行的容器
  2. docker rm $(docker ps -aq) # 删除所有的容器

启动和停止容器的操作:

  1. dokcer start 容器 ID # 启动容器
  2. docker restart 容器 ID # 重启容器
  3. docker stop 容器 ID # 停止容器

其他命令

后台启动容器

  1. docker run -d 镜像名

查看日志命令

  1. docker logs -tf --tail 10 容器ID # f 是 format 带上时间戳, 10 是显示10条日志信息

查看容器中的进程信息

  1. docker top 容器ID

进入当前正在运行的容器

进入正在运行的容器,并开启一个新的终端:

  1. docker exec -it 容器 ID bashshell

进入正在运行的命令行,而不是开启一个新的终端:

  1. docker attach 容器 ID bashshell

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

  1. docker cp 容器ID:/home/demo.java /home

二、练习

1、部署 Nginx

首先在 https://hub.docker.com/ 搜索 nginx。

然后 docker pull nginx

  1. docker run -d --name nginx01 -p 3344:80 nginx
  2. # p 表示端口映射,即访问主机的 3344 端口相当于访问 nginx 的 80 端口。
  3. # d 表示后台启动
  4. # name 给容器命名

测试:

  1. curl localhost:3344

返回结果:
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk0MTM2NA_size_16_color_FFFFFF_t_70 1

  1. # 进入容器修改配置文件
  2. docker exec -it nginx01 /bin/bash
  3. whereis nginx
  4. cd /etc/nginx;ls
  5. 就可以修改 nginx.conf 文件了.

2、部署 Tomcat

下载镜像:

  1. docker pull tomcat:9.0

后台启动并映射端口:

  1. docker run -d -p 2000:8080 --name tomcat01 tomcat:9.0

访问之后:
20200530144559390.png
这说明 Tomcat 是不完整的,没有默认访问路径。

因为我们拉取的默认是最小的镜像,将没有必要的都剔除了。

3、部署 ES+Kibana

  • ES 十分的耗内存;
  • ES 暴露的端口比较多;
  • ES 的数据需要挂载到安全目录。

    docker run -d —name elasticsearch -p 2001:9200 -p 2002:9300 -e “discovery.type=single-node” elasticsearch:7.6.2

这里没有先 pull,因为如果本地没有该镜像,他会自动去下载并运行。

直接访问 2001 端口:
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk0MTM2NA_size_16_color_FFFFFF_t_70 2

发表评论

表情:
评论列表 (有 0 条评论,110人围观)

还没有评论,来说两句吧...

相关阅读