Docker基础命令使用
今天主要是学习Docker的第二步,了解Docker的基础命令使用(几乎涵盖了所有工作所使用的指令);接下来依旧会持续更新全部Docker的学习,感兴趣的可以关注;
1、Docker应用级别命令
1、启动docker
systemctl start docker
2、查看docker运行状态
systemctl status docker
3、重新启动docker
systemctl restart docker
4、查看docker版本
docker -v 或 docker version 或 docker info
5、查看docker详细信息
docker info
6、停止docker运行
systemctl stop docker
2、Docker 镜像命令
1、查看所有镜像
docker images
docker images -a #列出本地所有的镜像(含中间镜像层)
docker images -q #查看所有镜像id
2、搜索镜像
docker search [OPTIONS] #镜像名字
docker search redis
3、拉取镜像
docker pull
docker pull redis #没有指定版本则默认最新版本
首先,需要了解下,上面的这种方式是获取最新版本的镜像,如果你需要拉取指定版本的镜像文件,就需要先去Docker Hub (hub.docker.com) 查询所支持的版本,然后再去拉取;但是,Docker官方的Docker Hub 经常出现访问不了,所以在这里我提供一个替代版(不承担任何风险,只做推荐)
地址: https://hub.atomgit.com/repos/
docker pull redis:7.2.1 #指定版本拉取
4、上传镜像
docker push zwline/redis:1.0.0 #上传镜像
5、查看docker镜像详细信息
docker inspect 7614ae9453d1 #镜像id
6、删除docker镜像
docker rmi -f 7614ae9453d1 #镜像id (单个删除)
docker rmi -f $(docker images -aq) 批量删除全部镜像,操作需要注意!!!
3、Docker 容器命令
1、查看容器运行状态
docker ps #查看正在运行的容器
docker ps -a #列出所有容器,包含正在运行和运行过的
docker ps -q #查看正在运行的容器id
docker ps -aq #列出所有容器,包含正在运行和运行过的容器id
2、运行容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
常用参数:
--name=NAME #为容器指定名字为NAME,不使用的话系统自动为容器命名
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
也即启动交互式容器(前台有伪终端,等待交互,一般连用,即-it);
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
# 创建并允许 Nginx 容器
docker run -p 6379:6379 --name myRedis \
-v /app/redis/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data -d redis:6.0.8 \
redis-server /etc/redis/redis.conf \
解释:
docker run 容器运行指令;
-p 6379:6379 指定端口映射;
myRedis是我起的本容器实例名字;
使用了容器卷所以/app/redis/redis.conf和/app/redis/data是宿主机的绝对路径,/etc/redis/redis.conf和/data是redis1容器实例的绝对路径;
redis-server /etc/redis/redis.conf使他启动时就加载此配置文件;
综上就完成了容器卷对容器实例配置和数据的持久化,即使容器被删掉,数据仍然保存在宿主机中。
3、启动容器
docker start e67ee9ede8d8 #容器的ID/名称
4、停止容器
docker stop e67ee9ede8d8 #容器的ID/名称
5、强制停止容器
docker kill e67ee9ede8d8 #容器的ID/名称
6、查看容器详细信息
docker inspect e67ee9ede8d8 #容器的ID
7、查看容器进程信息
docker top e67ee9ede8d8 #容器的ID
8、查看容器日志
docker logs e67ee9ede8d8 #容器的ID
docker logs -f e67ee9ede8d8 #容器的ID 查看实时日志信息
docker logs --tail 50 e67ee9ede8d8 #容器的ID 查看最后50条日志信息
9、进入正在运行的容器
第一种(常用方式):
docker exec -it #容器id bashshell
docker exec -it #容器id /bin/bash
第二种:
docker attach #容器id
顺便说下退出:
Ctrl+P+Q # 不停止容器退出(常用)
exit # 会停止容器运行(使用时候需注意,一般不用这个)
10、删除容器
docker rm -f e67ee9ede8d8 #容器的ID
docker rm -f $(docker ps -aq) #删除所有的容器,操作需谨慎!!!
11、查看docker消耗的资源状态
docker stats e67ee9ede8d8 #容器的ID
12、宿主机文件与容器文件复制(拷贝命令)
将宿主机文件复制到容器中
格式:docker cp 文件路径 容器id:目录
#当前目录下有一个test.txt文件 复制到容器里
docker cp ./test.txt e67ee9ede8d8:/opt
将容器文件复制到宿主机中
格式:docker cp 容器id:文件路径 目标目录
#当前容器有一个test.txt文件 复制到宿主机data文件夹里
docker cp 38b5218ca96f:/opt/test.txt /root/data
4、Docker数据卷
Docker数据卷是用来在主机和容器之间共享数据的一种机制。通过挂载数据卷,可以让容器中的文件持久化,即使容器删除或重启也不会丢失数据。数据卷可以是主机上的一个目录,也可以是Docker容器内的一个目录,卷的设计目的就是数据的持久化、完全独立于容器的生存周期,因此docker不会在容器删除时删除其挂载的数据卷
白话文,所谓的容器数据卷,就是为了有两个作用:
1、实现数据持久化,防止容器删除后,数据直接丢失
2、实现数据共享(方便操作容器内文件,比如,我们需要修改通过docker部署的redis的配置文件,那么我们在启动redis的时候,就直接把redis的配置文件挂载到本地,这样直接去在本地修改配置文件即可,不用进入redis容器)
接下来讲下如何使用以及容器卷的分类(不想看的可以直接跳过到下面查看相关命令):
使用方式:
启动容器的时候使用-v
docker run -it --name myRedis -v /宿主机绝对路径目录:/容器内绝对路径目录 redis:7.2.1
数据卷的分类和使用:
1、路径挂载:
docker run -it -v /home/ceshi:/home centos /bin/bash
#-v类似于端口映射,这里就是挂载路径映射,本机的路径映射容器文件的路径
测试宿主机上是否新创建了一个ceshi文件
[root@test ~]# cd /
[root@test /]# cd home/
[root@test home]# ls
11.txt 1.png ceshi
2、具名挂载(本质就是给容器卷起一个名字):
docker run -d -P --name 容器名称 -v 卷名:容器内路径
3、匿名挂载(采用随机名称):
docker run -d -P --name 容器名称 -v 容器内路径 容器名
1、查看数据卷
docker volume ls
2、查看数据卷详情
docker volume inspect 数据卷名
docker volume inspect redis_conf
3、删除数据卷
docker volume rm 数据卷名
docker volume rm redis_conf
本篇完结(下一篇,DockerFile介绍使用、Docker网络学习、Docker compose使用)