【Docker】基本命令详解

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 【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 交互路径

运行容器

docker run [可选参数] image

#参数说明
--name="名字"           指定容器名字
-d                     后台方式运行
-it                    使用交互方式运行,进入容器查看内容
-p                     指定容器的端口
(
-p ip:主机端口:容器端口  配置主机端口映射到容器端口
-p 主机端口:容器端口
-p 容器端口
)
-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

删除容器

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

进入容器

1 exec 方式(推荐)

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

2.attch方式

docker attach 容器名/容器ID

退出容器

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

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

停止容器
docker stop 容器ID/容器名
重启容器
docker restart 容器ID/容器名
启动容器
docker start 容器ID/容器名
kill 容器
docker kill 容器ID/容器名

容器文件拷贝

#从容器内 拷出
docker cp 容器ID/名称: 容器内路径  容器外路径
#从外部 拷贝文件到容器内
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 宿主机文件存储位置:容器内文件位置

示例

# 运行一个docker redis 容器 进行 端口映射 两个数据卷挂载 设置开机自启动
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镜像 并持久化运行 且设置与宿主机进行端口映射

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



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

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

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

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

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
mysql         latest    7e7e458be53c   4 days ago     444MB
nginx         latest    605c77e624dd   6 months ago   141MB
tomcat        latest    fb5657adc892   6 months ago   680MB
hello-world   latest    feb5d9fea6a5   9 months ago   13.3kB
centos        latest    5d0da3dc9764   9 months ago   231MB
[root@localhost user]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                       NAMES
e956083500f6   tomcat    "catalina.sh run"        38 minutes ago   Up 38 minutes   0.0.0.0:9999->8080/tcp, :::9999->8080/tcp   tom
7137c16a9164   nginx     "/docker-entrypoint.…"   46 minutes ago   Up 46 minutes   0.0.0.0:3344->80/tcp, :::3344->80/tcp       ng01
[root@localhost user]# docker commit -a="xiaobai" -m="xiaobai-tom" e956083500f6 tom:1.0
sha256:f6387f05c42f0e21cd5c305b458465f09da9c099454d8753f96c268a7b5b7dd8
[root@localhost user]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED          SIZE
tom           1.0       f6387f05c42f   12 seconds ago   684MB
mysql         latest    7e7e458be53c   4 days ago       444MB
nginx         latest    605c77e624dd   6 months ago     141MB
tomcat        latest    fb5657adc892   6 months ago     680MB
hello-world   latest    feb5d9fea6a5   9 months ago     13.3kB
centos        latest    5d0da3dc9764   9 months ago     231MB

[root@localhost user]# docker run -d -p 9000:8080 --name my_tom tom:1.0  
45f388e9212c1ed50308736ce16356b0eec0448693885ace10d631d11f3fc986
[root@localhost user]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                       NAMES
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
e956083500f6   tomcat    "catalina.sh run"        44 minutes ago   Up 44 minutes   0.0.0.0:9999->8080/tcp, :::9999->8080/tcp   tom
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快速

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8天前
|
安全 Docker 容器
|
8天前
|
网络安全 数据安全/隐私保护 Docker
|
7天前
|
存储 监控 安全
|
2月前
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
189 56
|
7天前
|
存储 关系型数据库 MySQL
|
15天前
|
网络协议 Docker 容器
docker pull命令拉取镜像失败的解决方案
docker pull命令拉取镜像失败的解决方案
315 0
|
16天前
|
安全 网络安全 开发者
Docker学习笔记(一):Docker命令总结
本文介绍了Docker的基本概念、优点以及常用命令。Docker是一个开源的应用容器引擎,它通过容器打包应用程序及其依赖项,实现快速部署和迁移。主要优点包括轻量级、可移植性、易于管理、安全性和开源性。文章还区分了镜像和容器的概念,并提供了构建镜像、查看容器、运行容器、停止和删除容器等常用Docker命令的示例。
109 0
|
22天前
|
Linux 网络安全 Docker
安装后无法使用 Docker 命令
【10月更文挑战第3天】
70 2
|
28天前
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令
|
28天前
|
运维 数据库 开发者
docker回顾--docker compose详细解释,安装,与常用命令
docker回顾--docker compose详细解释,安装,与常用命令