当前位置:   article > 正文

Docker命令详解

docker命令详解

1.基础命令

systemctl start docker        启动docker

systemctl stop docker        关闭docker

systemctl enable docker        开机自启动docker

2.镜像命令

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

docker search   (镜像名)     搜索镜像

docker pull 镜像名[:tag]       下载镜像

docker run 镜像名[:tag]        运行镜像

删除镜像命令

#删除一个
docker rmi -f 镜像名/镜像ID

#删除多个 其镜像ID或镜像用空格隔开即可 
docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID

#删除全部镜像  -a 意思为显示全部, -q 意思为只显示ID
docker rmi -f $(docker images -aq)

#强制删除镜像

docker image rm 镜像名称/镜像ID

保存镜像(将我们的镜像保存为tar 压缩文件 这样方便镜像转移和保存

docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字

示例:docker save tomcat -o /myimg.tar

加载镜像(任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像

docker load -i 镜像保存文件位置

示例:docker load -i /myimg.tar(然后用docker images命令即可看到已加载该镜像了)

镜像标签~

3.容器命令    

容器:通过run 镜像 来构建 自己的容器实例 

docker ps [-a]        查看运行容器列表(-a为列出所有容器)

# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器 起的名字 /bin/bash 交互路径

运行容器

  1. docker run [可选参数] image
  2. #参数说明
  3. --name="名字" 指定容器名字
  4. -d 后台方式运行
  5. -it 使用交互方式运行,进入容器查看内容
  6. -p 指定容器的端口
  7. (
  8. -p ip:主机端口:容器端口 配置主机端口映射到容器端口
  9. -p 主机端口:容器端口
  10. -p 容器端口
  11. )
  12. -P 随机指定端口(大写的P)

docker run -it -d --name 要取的别名 镜像[:tag] /bin/bash

注意

1.这里的端口和本地机上的端口没有关系, 若相产生关联,需要使用上面提到的容器端口映射

示例:docker run -itd --name redis002 -p 8888:6379 redis:5.0.5 /bin/bash

2.docker容器后台运行,必须要有一个前台的进程,否则会自动停止

停止容器

docker stop 容器名/容器ID       

删除容器

  1. #删除一个容器
  2. docker rm -f 容器名/容器ID
  3. #删除多个容器 空格隔开要删除的容器名或容器ID
  4. docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID
  5. #删除全部容器
  6. docker rm -f $(docker ps -aq)

进入容器

1 exec 方式(推荐)

docker exec -it 容器名/容器ID /bin/bash

2.attch方式

docker attach 容器名/容器ID

退出容器

#exit 停止并退出容器(后台方式运行则仅退出)

#Ctrl+P+Q 不停止容器退出

  1. 停止容器
  2. docker stop 容器ID/容器名
  3. 重启容器
  4. docker restart 容器ID/容器名
  5. 启动容器
  6. docker start 容器ID/容器名
  7. kill 容器
  8. docker kill 容器ID/容器名

容器文件拷贝

  1. #从容器内 拷出
  2. docker cp 容器ID/名称: 容器内路径 容器外路径
  3. #从外部 拷贝文件到容器内
  4. docker cp 容器外路径 容器ID/名称: 容器内路径

查看容器日志

docker logs [--tail number] 容器id或容器名 #num为要显示的日志条数

查看容器进程信息

docker top id或名

查看容器元数据

docker inspect id或名

开机自启动容器

启动容器时,使用docker run命令时 添加参数--restart=always 便表示,该容器随docker服务启动而自动启动

更换容器名

docker rename 容器ID/容器名 新容器名

3.数据挂载

简单来讲,就是将容器内的数据与外部宿主机文件绑定起来,类似一个双持久化,当容器删除时,宿主机文件数据目录仍在,下次启动容器只要将数据目录指向宿主机数据所在位置即可恢复!

格式:-v 宿主机文件存储位置:容器内文件位置

示例

  1. # 运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动
  2. docker run -d -p 6379:6379 --name redis505 --restart=always -v /var/lib/redis/data/:/data -v /var/lib/redis/conf/:/usr/local/etc/redis/redis.conf redis:5.0.5 --requirepass "password"

容器数据卷

首先启动容器1,volume01、volume02为挂载目录。

[root@iZwz99sm8v95sckz8bd2c4Z ~]# docker run -it --name cnetos01 ethan/centos:1.0


然后启动容器2,通过参数--volumes-from,设置容器2和容器1建立数据卷挂载关系。

[root@iZwz99sm8v95sckz8bd2c4Z /]# docker run -it --name centos02 --volumes-from cnetos01 ethan/centos:1.0

4.提交镜像

docker commit -m="提交信息" -a="作者信息" 容器名/容器ID 提交后的镜像名:Tag

示例:

我们拉取一个tomcat镜像 并持久化运行 且设置与宿主机进行端口映射

  1. [root@localhost user]# docker pull tomcat
  2. [root@localhost user]# docker run -d --name tom -p 9999:8080 tomcat
  3. [root@localhost user]# curl -I localhost:9999
  4. HTTP/1.1 404
  5. Content-Type: text/html;charset=utf-8
  6. Content-Language: en
  7. Transfer-Encoding: chunked
  8. Date: Sun, 10 Jul 2022 13:39:42 GMT
  9. #我们发现是404,这是因为还需要进行如下操作才可以真正启动tomcat
  10. #进入容器
  11. [root@localhost user]# docker exec -it tom /bin/bash
  12. root@e956083500f6:/usr/local/tomcat# cp -r webapps.dist/* webapps
  13. #退出容器
  14. [root@localhost user]# docker exec -it tom /bin/bash
  15. root@e956083500f6:/usr/local/tomcat# ls
  16. BUILDING.txt NOTICE RUNNING.txt lib temp work
  17. CONTRIBUTING.md README.md bin logs webapps
  18. LICENSE RELEASE-NOTES conf native-jni-lib webapps.dist
  19. root@e956083500f6:/usr/local/tomcat# cp -r webapps.dist/* webapps
  20. root@e956083500f6:/usr/local/tomcat# exit
  21. exit
  22. [root@localhost user]# curl -I localhost:9999
  23. HTTP/1.1 200
  24. Content-Type: text/html;charset=UTF-8
  25. Transfer-Encoding: chunked
  26. Date: Sun, 10 Jul 2022 13:42:40 GMT
  27. #200 成功

若想在本地机中访问虚拟机中的tomcat服务

虚拟机中使用ifconfig查看虚拟机ip

 浏览器中访问:http://192.168.159.138:9999        成功

使用 提交命令 将在运行的tomcat 容器 打包为一个全新的镜像 名字为tom Tag为1.0

  1. REPOSITORY TAG IMAGE ID CREATED SIZE
  2. mysql latest 7e7e458be53c 4 days ago 444MB
  3. nginx latest 605c77e624dd 6 months ago 141MB
  4. tomcat latest fb5657adc892 6 months ago 680MB
  5. hello-world latest feb5d9fea6a5 9 months ago 13.3kB
  6. centos latest 5d0da3dc9764 9 months ago 231MB
  7. [root@localhost user]# docker ps
  8. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  9. e956083500f6 tomcat "catalina.sh run" 38 minutes ago Up 38 minutes 0.0.0.0:9999->8080/tcp, :::9999->8080/tcp tom
  10. 7137c16a9164 nginx "/docker-entrypoint.…" 46 minutes ago Up 46 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp ng01
  11. [root@localhost user]# docker commit -a="xiaobai" -m="xiaobai-tom" e956083500f6 tom:1.0
  12. sha256:f6387f05c42f0e21cd5c305b458465f09da9c099454d8753f96c268a7b5b7dd8
  13. [root@localhost user]# docker images
  14. REPOSITORY TAG IMAGE ID CREATED SIZE
  15. tom 1.0 f6387f05c42f 12 seconds ago 684MB
  16. mysql latest 7e7e458be53c 4 days ago 444MB
  17. nginx latest 605c77e624dd 6 months ago 141MB
  18. tomcat latest fb5657adc892 6 months ago 680MB
  19. hello-world latest feb5d9fea6a5 9 months ago 13.3kB
  20. centos latest 5d0da3dc9764 9 months ago 231MB
  1. [root@localhost user]# docker run -d -p 9000:8080 --name my_tom tom:1.0
  2. 45f388e9212c1ed50308736ce16356b0eec0448693885ace10d631d11f3fc986
  3. [root@localhost user]# docker ps
  4. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  5. 45f388e9212c tom:1.0 "catalina.sh run" 15 seconds ago Up 13 seconds 0.0.0.0:9000->8080/tcp, :::9000->8080/tcp my_tom
  6. e956083500f6 tomcat "catalina.sh run" 44 minutes ago Up 44 minutes 0.0.0.0:9999->8080/tcp, :::9999->8080/tcp tom
  7. 7137c16a9164 nginx "/docker-entrypoint.…" 53 minutes ago Up 53 minutes 0.0.0.0:3344->80/tcp, :::3344->80/tcp ng01

完成~~~

参考资料:

Docker快速入门总结笔记_Code0cean的博客-CSDN博客_docker快速

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号