Docker相关
# 启动docker
systemctl start docker
# 停止docker
systemctl stop docker
# 重启docker
systemctl restart docker
# 查看docker状态
systemctl status docker
# 开机启动
systemctl enable docker
# 查看docker概要信息
docker info
# 查看docker总体帮助文档
docker --help
# 查看docker命令帮助文档
docker 具体命令 --help
镜像相关
docker images # 列出本地主机上的镜像
# 列出的各个参数的说明:
# REPOSITORY:表示镜像仓库的源
# TAG:镜像的标签版本号
# IMAGE ID: 镜像ID
# CREATED : 镜像创建时间
# SIZE:镜像大小
docker search [options] 某个镜像的名字 #去远程库找镜像
# options的说明:--limit:只列出n个镜像,默认是25个
#比如: docker search --limit 5 redis 列出redis的前五个镜像。
docker pull 某个镜像的名字 # 下载镜像
# docker pull 镜像名字[:TAG]
# docker pull 进行名字:latest 拉取最新的(默认不指定拉取镜像的版本也是拉取最新的)
docker system df # 查看镜像/容器/数据卷所占的空间
docker rmi 某个镜像名字ID # 删除镜像
docker rmi -f 某个镜像名字ID # 强制删除镜像
docker rmi -f 镜像名1:TAG 镜像名2:TAG # 删除多个 TAG 表示的是版本号
docker rmi -f $(docker images -qa) # 删除全部
容器相关
① 新建或者启动容器
# 使用run关键词来生成实例
docker run [OPTIONS] IMAGE [COMMAND][ARG...]
OPTIONS 说明(有些是一个- 有些是两个 --)
--name=容器名字 为容器指定一个新名称;
-d 后台运行返回容器ID,也即启动守护式容器(后台运行)
-i 以交互模式运行容器,通常与t 同时使用 -it;
-t 为容器重新分配一个伪输入终端,通常与-i同时使用;
# 也即启动交互式容器(前台有伪终端,等待交互);
-P 随机端口映射,大写P
-p 指定端口映射 ,小写p
端口映射:
| 参数 | 说明 |
|---|---|
| -p hostProt:containerPort | 端口映射 -p 8080:80 |
| -p ip:hostPost:containerPort | 配置监听地址 -p 10.0.0.100:8080:80 |
| -p ip::containerPort | 随机分配端口 -p 10.0.0.100::80 |
| -p hostPort:containerPort:udp | 指定协议 -p 8080:80:tcp |
| -p 81:80 -p 433:433 | 指定多个 |
例子:使用交互式模式启动一个容器:docker run -it ubuntu /bin/bash
参数说明:
OPTIONS参数说明(常用)
-a :列出当前所有正在运行的容器+历史上运行过的
-l :显示最近创建的容器。
-n:显示最近n个创建的容器 docker ps -n 2
-q :静默模式,只显示容器编号。
② 退出容器
# run 关键词进入容器,使用exit退出,容器停止
exit
# run 关键词进入容器,ctrl + p+q 退出,容器不停止
ctrl+p+q
③ 容器的其他操作:
# 启动已经停止的容器
docker run [容器ID或者容器名]
# 重启容器
docker restart 容器ID或者容器名字
# 停止容器
docker stop 容器ID或者容器名
# 强制停止容器
docker kill 容器ID或者容器名
# 查看容器日志
docker logs [容器ID]
# 查看容器内运行的进程
docker top [容器ID]
# 查看容器内部细节
docker inspect 容器I
④ 删除已经停止的容器
# 删除已停止的容器,注意`docker rmi`是删除镜像
docker rm 容器ID
#一次性删除多个容器实例 -f 强制删除 $()替换命令
docker rm -f $(docker ps -a -q)
或者使用管道符 xargs 可变参数
docker ps -a -q | xargs docker rm
启动守护式容器(大部分情况下我们是希望docker的服务是在后台运行我们可以通过-d 指定容器的后台运行模式)
# 后台运行模式(启动守护式容器)启动redis容器
docker run -d [容器名]
## 解释说明
#使用镜像centos:latest以后台模式启动一个容器
docker run -d centos
# 前台交互式启动
docker run -it --name=redis01 redis
# 后台守护式启动
docker run -d --name=redis01 redis
进入正在运行的容器以命令行进行交互:
#进入正在运行的容器并以命令行交互(推荐使用第一个)
docker exec -it [容器ID] /bin/bash
或者
docker attach [容器ID] /bin/bash
exec 和 attch的区别
attach 直接进入容启动命令的终端,不会启动新的进程用exit退出,会导致容器的停止。
exec是在容器中打开新的终端,并且可以启动新的进程用exit退出,不会导致容器的停止。
例子:
docker exec -it redis容器id /bin/bash
注意此时我们只是进入了redis的容器终端,并不是redis的命令终端
redis-cli -p 6379 这个才是进入Redis的命令终端
⑥ 从容器内拷贝文件到主机上
# 从容器内拷贝文件到主机上 容器->主机
docker cp [容器ID或容器名称]:[容器内路径] [目的主机路径]
⑦ 导入导出容器
# export导出容器的内容留作为一个tar归档文件[对应import命令]
docker export [容器ID]>[文件名].tar
# import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
cat [文件名].tar|docker import -[镜像用户]/[镜像名]:[镜像版本号]
注意:导出的 .tar文件就在当前的操作目录下,导入的镜像用户可以随便写
⑧ 常用命令小结:
#当前shell 下attach 连接指定运行镜像
attach #Attach to a running container
#通过Dockerfile定制镜像
build #Build an image from a Dockerfile
#提交当前容器为新的镜像
commit #Create a new image from a container changes
#从容器中拷贝指定文件或者目录到宿主机中
cp #Copy files/folders from.the containers filesystem to the host path
#创建一个新的容器,同run,但不启动容器
create #Create a new container
#查看docker容器变化
diff #Inspect changes on a container's filesystem
#从docker服务获取容器实时事件
events #Get real time events from the server
#在已存在的容器上运行命令
exec #Run a command in an existing container
#导出容器的内容流作为一个tar归档文件[对应import]
export #Stream the contents of a container as a tar archive
#展示一个镜像形成历史
history #Show the history of an image
#列出系统当前镜像
images #List images
#从tar包中的内容创建一个新的文件系统映像[对应export]
import #Create a new filesystem image from the contents of a tarball