docker常用容器命令

首先说下容器:

它是指当docker运行镜像时,创建了一个隔离环境,称之为 容器

这种方式优点:可以开启多个服务,服务之前是互相隔离的(比如:在一台服务器上可以开启多个mysql,可以是多个不同版本或者多个相同版本,这样如果多个项目依赖不同mysql版本,也可以部署在同一台服务器上)。

1、创建并运行一个容器

此命令会检查镜像是否存在,不存在会先远程下载,下载完之后,运行。

复制代码
docker run -d --name 自定义容器名称 -p 外网访问的端口:实际端口 运行镜像的名字

解释:
-d:后台运行;
--name: 给容器起一个名字,需要唯一;
-p 外网访问端口:容器实际的端口

运行镜像名称:镜像名称一般由:[repository]:[tag]组成,其中repository就是镜像名称,tag是镜像版本号(可以通过 docker images来查下某个镜像名称及tag)。

2、重启、停止容器进程

复制代码
// 启动容器进程,注意与run的区别
docker start 容器id
// 重启容器进程
docker restart 容器id
// 停止当前正在运行的容器进程
docker stop 容器id 
// 强制停止当前容器进程
docker kill 容器id

注:
(1)docker stop 是指停止容器进程,容器还在!不是把容器给删除掉了!
(2)docker run xxx 是指创建一个容器,而且每次run 都会创建一个新容器;
(3)docker start xxx 是指启动已经停掉的容器进程;
(4)说白了,docker start/stop/restart/kill 这几个命令是在docker run xxx 之后才会有的。

3、查看容器的进程状态

复制代码
docker ps 

4、删除容器

复制代码
// 删除有一个容器
docker rm 容器id或者容器名称

// 如果当前容器正在运行,可以强制删除
docker rm -f 容器id或者容器名称

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

5、一张图来总结上边介绍的命令:

6、小例子 - 下载nginx

下载、运行nginx

复制代码
// 下载nginx
docker pull nginx

// 运行nginx
docker run -d --name nginx -p 3782:80

查看镜像及后台运行nginx:

在物理机访问虚拟机上docker nginx容器服务:

注意:
外界只能通过3782端口访问nginx,如果直接通过80端口是访问不到的!!!

7、进入nginx容器中

容器中会有自己独立的文件系统,当然只是模拟的。

复制代码
docker exec -it nginx /bin/bash

解释:
-it:可交互的终端;
nginx:容器名称;
/bin/bash:进入容器之后使用什么命令进行交互(这里使用命令行)。

退出内部容器:exit

8、把本地镜像打包成一个tar文件

复制代码
// 镜像名称可以使用docker imags来查看
// -o 输出到哪一个文件,output
docker save -o 镜像名称.tar

9、加载本地tar镜像包

加载本地tar镜像包,相当于docker pull xxx 下载一个镜像,只不过这个镜像已经下载完了且已经打包成一个tar文件了,现在需要加载到docker 中。

复制代码
docker load -i xxx.tar

10、打印日志

复制代码
docker logs 镜像名称
相关推荐
sheji3416几秒前
【开题答辩全过程】以 基于spring boot的停车管理系统为例,包含答辩的问题和答案
java·spring boot·后端
重生之后端学习5 分钟前
21. 合并两个有序链表
java·算法·leetcode·链表·职场和发展
南屿欣风10 分钟前
Sentinel 熔断规则 - 异常比例(order & product 示例)笔记
java·开发语言
jarreyer12 分钟前
【docker的gpu加速相关问题解决记录】
运维·docker·容器
韭菜钟15 分钟前
制作自定义Docker镜像并部署使用
运维·docker·容器
u01040583616 分钟前
使用Java实现高性能的异步编程:CompletableFuture与Reactive Streams
java·开发语言
椰汁菠萝21 分钟前
docker部署gitlab
docker·容器·gitlab
知识分享小能手25 分钟前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04 中安装 Docker 容器 —— 知识点详解(26)
学习·ubuntu·docker
专注VB编程开发20年30 分钟前
c#Type数组转成字符串的名称
java·开发语言
中年程序员一枚34 分钟前
多数据源的springboot进行动态连接方案
java·spring boot·后端