docker 命令
常用命令
1、拉取镜像
docker pull mysql:8.0.24
2、查看镜像列表
docker images
3、run命令
帮助信息 run 命令注解
docker run
- –name 设置docker容器的名称
- -d 在后台运行docker
- -it 使用交互的方式运行docker
- -p 执行容器的端口,如 -p 80:80
- -P 随机指定端口
3.1、创建容器并且运行, 最基本的创建运行
命令解释:使用镜像 mysql:8.0.24
创建一个容器,名称为 some-mysql
docker run --name some-mysql -d mysql:8.0.24
3.2、创建容器并且运行, 容器端口绑定宿主机端口
命令解释:使用镜像 mysql:8.0.24
创建一个容器,名称为 some-mysql
,将容器 3306
端口与宿主机1967
相互绑定,在访问宿主机1967
端口的时候,会映射到 对应3306
端口容器
docker run --name some-mysql -p 1967:3306 -d mysql:8.0.24
3.3、创建容器并且运行, 启动容器传递参数
命令解释:
- -d mysql:8.0.24:使用镜像
mysql:8.0.24
创建一个容器 - –name some-mysql:名称为
some-mysql
- -p 1967:3306:将容器
3306
端口与宿主机1967
相互绑定,在访问宿主机1967
端口的时候,会映射到 对应3306
端口容器 - -e MYSQL_ROOT_PASSWORD=123456:通过
-e
传递环境变量参数,MYSQL_ROOT_PASSWORD=123456
运行容器后设置 MYSQLroot
密码为123456
docker run --name some-mysql -p 1967:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.24
3.4、创建容器并且运行, 将宿主机目录挂载到容器目录
命令解释:
- -d mysql:8.0.24:使用镜像
mysql:8.0.24
创建一个容器 - –name some-mysql:名称为
some-mysql
- -p 1967:3306:将容器
3306
端口与宿主机1967
相互绑定,在访问宿主机1967
端口的时候,会映射到 对应3306
端口容器 - -e MYSQL_ROOT_PASSWORD=123456:通过
-e
传递环境变量参数,MYSQL_ROOT_PASSWORD=123456
运行容器后设置 MYSQLroot
密码为123456
- -v /docker/mysql/data:/var/lib/mysql:将宿主机
/docker/mysql/data
目录挂载到 容器/var/lib/mysql
目录,/var/lib/mysql
目录 是MySQL容器数据目录(对应windows版本MySQL根目录的data)这样就可以在宿主机上操作mysql数据
MySQL Docker容器目录说明:
/var/lib/mysql
mysql数据目录
/etc/mysql
mysql配置文件目录
docker run --name some-mysql -p 1967:3306 -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.24
4、ps命令
帮助信息 ps命令注解
4.1、查看当前正在运行的容器列表
docker ps
4.1、查看所有的docker容器
docker ps -a
4.3、列出最近创建的容器
示例 查看最近创建的两个容器
docker ps -n 2
4.4、 显示所有运行过的容器的id
docker ps -aq
5、容器操作
操作指定容器,容器(CONTAINER ID
)ID使用 docker ps
查看
5.1、进入容器终端(需要容器是启动状态)
命令解释: 进入容器(CONTAINER ID
)ID为8fcde2ad015a
的终端
docker exec -it 8fcde2ad015a bash
使用容器别名
docker exec -it tomcat1102 bash
退出容器
exit
5.2、停止容器
docker stop 8fcde2ad015a
5.3、强制停止容器
当使用docker stop 无法停止时,可以使用docker kill 直接杀掉
docker kill 8fcde2ad015a
5.4、启动容器
docker start some-mysql
5.5、重启容器
docker restart some-mysql
5.6、删除容器
删除容器需要先停止容器
docker rm some-mysql
5.7、删除所有容器
确保所有容器都是停止状态
docker rm -f $(docker ps -aq)
或者
docker ps -aq|xargs docker rm -f
5.8、查看容器的运行日志
docker logs [OPTIONS] CONTAINER
帮助信息:logs 命令注解
其中,OPTIONS
可以是以下选项:
-f
:跟踪容器日志输出,类似于tail -f
命令。--tail
:仅显示最近的几行日志。例如,--tail 10
仅显示最近的 10 行日志。--since
:仅显示指定时间之后产生的日志。例如,--since 2020-01-01
仅显示 2020 年 1 月 1日之后产生的日志。--until
:仅显示指定时间之前产生的日志。例如,--until 2020-01-01
仅显示 2020 年 1 月 1日之前产生的日志。CONTAINER
是容器的名称或 ID
实时日志
docker logs -tf 容器id
可以查看启动容器的实时运行日志
docker logs -tf 3f5c420113ef
或者
docker logs -tf tomcat
部分日志
示例查看指定容器最新10行日志内容
docker logs -tf --tail 10 my_mysql
日志过滤
在服务器上使用日志排查问题的时候,一般我们会对日志进行过滤
下面是一些常用的过滤方法
1、使用关键词进行过滤:使用grep
命令或者其他文本搜索工具,进行关键字的过滤
docker logs <容器id> | grep “关键词”
2、时间范围的过滤:使用–since
和–until
参数,可以查看指定时间段内的日志
docker logs --since "2023-10-31T00:00:00" --until "2023-10-31T23:59:59" <容器id>
since
为显示指定时间之后的日志,until
为显示指定时间之前的日志
3、日志输出
如果我们想将容器日志输出到某个文件,方便我们查看分析,可以使用>进行重定向输出
docker logs <容器id> > container_logs.txt
5.9、查看容器的进程信息
docker top 容器id
查看容器中的进程信息
docker top my_mysql
5.10、查看容器内部信息
docker inspect 容器id
查看容器内部信息
docker inspect my_mysql
5.11、从容器内拷贝文件到宿主机
docker cp <container_id>:/path/to/file /path/on/host
<container_id>
是要拷贝文件的容器ID,/path/to/file
是容器中要拷贝的文件路径,/path/on/host
是宿主机上要保存文件的路径。
例如,要将容器名称为tomcat
的容器中的/usr/local/tomcat/RUNNING.txt
文件拷贝到宿主机上的/usr/local/tomcat/
目录下,可以运行以下命令:
docker cp tomcat:/usr/local/tomcat/RUNNING.txt /usr/local/tomcat/
5.12、从宿主机拷贝文件到容器内
docker cp <container_id>:/path/to/file /path/on/host
/path/on/host
是要拷贝到容器中的文件路径,<container_id>
是要拷贝到的容器ID,/path/inside/container
是容器内要保存文件的路径。
例如,要将宿主机上的/usr/local/tomcat/RUNNING.txt文件拷贝到容器名称为tomcat
的容器中的/usr/local/tomcat/
目录下,可以运行以下命令:
docker cp RUNNING.txt tomcat:/usr/local/tomcat/
完成拷贝后,你可以在容器内的/usr/local/tomcat/
路径下找到文件。
6、数据卷命令
帮助信息 volume 命令注解
6.1、创建数据卷
docker volume create my_jenkins
6.2、查看数据卷
docker volume ls
6.3、查看数据卷详细信息
docker volume inspect my_jenkins
6.4、删除数据卷
docker volume rm tomcat-jforum
7、docker命令
Docker镜像常用操作命令,整合如下:
docker pull:从Docker Hub或其他注册服务器上拉取镜像。
docker push:将镜像推送到Docker Hub或其他注册服务器上。
docker image:列出、删除和管理本地镜像。
docker tag:为镜像添加标签。
docker rmi:删除本地镜像。
docker load:从tar文件中加载镜像。
docker commit:将运行中的容器提交为新镜像。
docker build:使用Dockerfile构建镜像。
docker exec:在运行的容器中执行命令。
docker logs:查看容器的日志。
docker pause / docker unpause:暂停和恢复容器的运行。
docker rename:重命名容器。
docker rm:删除容器。
docker stats:查看容器的资源使用情况。
docker swarm:管理Docker集群。
docker service:管理Docker服务。
docker stack:管理Docker应用栈。
docker system:查看系统级别操作的信息。
docker version:查看Docker版本信息。
8、Docker推送镜像到Docker Hub仓库
首先,需要在本地机器上登录Docker Hub
账户。打开终端或命令提示符,运行以下命令
docker login
然后输入Docker Hub
用户名和密码
7.2、推送Docker镜像到Docker Hub
假设我本地机器有一个镜像名称为 liyangit/springboot-test
tag
标签为 0.0.1
, 我需要将这个镜像推送到账户 springboot-test
仓库
运行推送命令
docker push liyangit/springboot-test:0.0.1
liyangit/springboot-test
: 是镜像名称,如果要推送到仓库,镜像名称前缀必须是 用户名/ 开头
0.0.1
: 标签版本号