文章目录
一、镜像下载
以redis操作为例
1.1 镜像下载
- redis镜像下载
- docker pull 镜像名称:tags
- 下载 redis:6.2.5 版本
- docker pull redis:6.2.5
# docker pull redis:6.2.5
6.2.5: Pulling from library/redis
33847f680f63: Pull complete
26a746039521: Pull complete
18d87da94363: Pull complete
5e118a708802: Pull complete
ecf0dbe7c357: Pull complete
46f280ba52da: Pull complete
Digest: sha256:cd0c68c5479f2db4b9e2c5fbfdb7a8acb77625322dd5b474578515422d3ddb59
Status: Downloaded newer image for redis:6.2.5
docker.io/library/redis:6.2.5
- 下载完成相当于安装完成,此时并未启动
1.2 镜像查看
- 查看镜像
- docker images
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6.2.5 aa4d65e670d6 6 days ago 105MB
- 镜像含义如下
- REPOSITORY:镜像名称
- TAG:镜像版本
- IMAGE ID:镜像id,操作时需要使用 等价于 REPOSITORY:TAG
- CREATED:镜像创建时间
- SIZE:镜像大小
1.3 镜像搜索
- 可以先搜索镜像内容
- docker search 镜像名称
- 镜像通常关注STARS(点赞数)和OFFICIAL(是否官方),通常选择官方镜像
二、镜像运行
2.1 启动容器
- 启动镜像在后台运行,镜像启动之后相当于启动了一个容器,为一个redis的完整实例
- docker run -d -p 系统端口:镜像端口 --name 镜像别名 镜像ID
- run:表示此命令为 运行镜像
- -p:指定端口,将宿主机端口映射镜像端口;可以指定映射多个端口,分别使用 -p 指定
- -d:镜像后台运行
- -P:大写P,随机分配端口
- –name:指定别名,可用于后续的容器操作,如关闭、启动、重启、删除等
- 最后为镜像id,如果不指定镜像id也可以使用REPOSITORY中的 名称:tag
- docker run -d -p 系统端口:镜像端口 --name 镜像别名 镜像ID
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6.2.5 aa4d65e670d6 6 days ago 105MB
# docker run -d --name redis -p 6379:6379 aa4d65e670d6
4004a2f58b4de822018a4fd12f7909c695b6c8f2ac512d43e6f8292512cbfe5a
- 例如此处再启动一个实例
- docker run -d --name redis2 -p 6380:6379 aa4d65e670d6
- 启动时也可以指定交互命令,参考第四节,表示启动后自动进入容器内部
- 如果只需要在前台运行,则可以将 -d 替换为 -it 参数即可
- -it:以交互模式运行
- ctrl + p, q可以暂时退出非后台的交互程序
- 如果使用exit将会停止并退出容器
- 前台和后台在退出exit指令行为有所不同
- 前台:exit执行后退出虚拟机,容器停止
- 后台:exit执行后退出虚拟机,容器不停止
2.2 容器查看
- docker ps:查看正在运行镜像,不包括未运行镜像
- docker ps -a:查看所有运行镜像,包括未运行镜像
- docker ps -s:查看容器已经使用的磁盘大小
2.3 停止容器
- 正常关闭:docker stop 容器id/容器别名
- docker stop redis2
# docker stop redis2
redis2
- 强制关闭:docker kill 容器id/容器别名
- docker kill redis2
# docker kill redis2
redis2
2.4 重启容器
- 关闭后的启动
- docker start 容器id/容器别名
# docker start redis2
redis2
- 运行中的容器重启
- docker restart 容器id/容器别名
# docker restart redis2
redis2
2.5 删除容器
- 删除已停止容器
- docker rm 容器id/容器别名
# docker rm redis2
redis2
- 强制删除:docker rm -f 容器id/容器别名
# docker rm -f redis2
redis2
- 删除多个容器
- docker rm -f $(docker ps -a -q)
- -q:只显示容器id
- docker ps -a -q | xargs docker rm -f
- docker rm -f $(docker ps -a -q)
2.6 容器日志
- 容器启动过程中可能失败,所以需要查看容器日志信息
- 查看容器日志
- docker logs -t -f 容器ID
- t:显示时间戳
- f:显示最新日志
- docker logs -t -f 容器ID
- 查看redis日志
2.7 容器重命名
- 容器可以重命名,通过下面命令完成
- docker rename <老容器id/别名> <新容器名称>
2.8 容器自启动
- 当Docker重启时容器会自动关闭,有时在服务器重启后需要对应的容器可以自动重启
- 可以通过 update 命令来配置容器自动启动
docker update redis --restart=always
三、镜像删除
- 镜像删除指定的删除 docker images 查看的镜像,也就是原始下载的数据,不要和容器删除混淆
- 删除单个:docker rmi -f 镜像id
- -f:强制删除,及时容器在执行,如果不加如果已经运行了容器则不能删除
- 删除多个:docker rmi -f 镜像id1 镜像id2
- 删除全部:docker rmi -f $(docker images -qa)
- 删除redis镜像
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 6.2.5 aa4d65e670d6 6 days ago 105MB
# docker rmi aa4d65e670d6
四、进程交互
- 每一个都是一个微型版本的linux系统,所以可以进入到每个容器中进行容器操作,例如查看等等
- 容器交互式运行,可以进入到容器内容
- docker run -it <容器id/别名> /bin/bash
- /bin/bash 标识进入容器的命令行
- 退出交互模式
- exit
- docker run -it <容器id/别名> /bin/bash
- 有些时候执行对内执行命令,但是并不想进入到容器内容,此时只需要不用 /bin/bash 替换为对应的命令即可
- 外部直接执行:docker exec -it <容器id/别名> command
- 例如下面执行执行容器内的 redis-cli 命令,而无需进入容器内部
# docker exec -it redis redis-cli
127.0.0.1:6379> set name redis
OK
127.0.0.1:6379> get name
"redis"
五、文件操作
5.1 文件拷贝
- 从容器内拷贝文件到主机
- docker cp 容器ID/别名:文件路径 主机路径
- 从主机拷贝文件到容器内
- docker cp 主机路径 容器ID:文件路径
- 区别就是容器内使用冒号分隔
六、命令结构图
七、其他命令
- docker inspect 容器
- 查看容器细节,以json格式返回
- docker attach 容器
- 直接进入容器启动命令的终端,不会启动新的进程
- docker top 容器
- 查看容器内运行的进程