Docker安装
yum install -y yum-utils 配置镜像 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache 安装docker yum install docker-ce docker-ce-cli containerd.io 启动docker systemctl start docker 查看版本 docker version 启动镜像run docker run hello-world
(一)docker 基础命令
启动docker
systemctl start docker
关闭docker
systemctl stop docker
重启docker
systemctl restart docker
docker设置随服务启动而自启动
systemctl enable docker
查看docker 运行状态
------如果是在运行中 输入命令后 会看到绿色的active systemctl status docker
查看docker 版本号信息
docker version docker info
docker 帮助命令
忘记了某些命令便可使用此进行查看与回顾
docker --help
比如 咱忘记了 拉取命令 不知道可以带哪些参数 咱可以这样使用
docker pull --help
(二)docker 镜像命令
查看自己服务器中docker 镜像列表
docker images #获取所有镜像的 名称:版本:id:创建时间:大小 docker images -a #获取所有镜像的id docker images -q
搜索镜像
docker search 镜像名 docker search --filter=STARS=9000 mysql 搜索 STARS(收藏数)>9000的 mysql 镜像
拉取镜像 (就像应用市场下载软件)不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本
docker pull 镜像名 docker pull 镜像名:tag
下载的策略是分层下载
docker官方镜像搜索
运行镜像
docker run 镜像名 docker run 镜像名:Tag --name="Name" 给容器起名 -d 后台方式运行 -it 使用交互方式,进入容器查看内容 -p 指定容器端口 -p 8080:8080 -p ip主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 容器端口 -P 随机指定端口
删除镜像
当前镜像没有被任何容器使用才可以删除
#删除一个 docker rmi -f 镜像名/镜像ID #删除多个 其镜像ID或镜像用用空格隔开即可 docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID #删除全部镜像 -a 意思为显示全部, -q 意思为只显示ID docker rmi -f $(docker images -aq)
强制删除镜像
docker image rm 镜像名称/镜像ID
保存镜像
将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像
命令:
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字
exmaple:
docker save tomcat -o /myimg.tar
加载镜像
任何装 docker 的地方加载镜像保存文件,使其恢复为一个镜像
docker load -i 镜像保存文件位置
(三)容器命令
列出容器
docker ps # 列出当前正在运行的容器 -a # 列出当前正在运行的容器+历史运行过的容器 -n=? # 显示最近创建的容器 -q # 只显示容器的编号
新建容器并启动
docker run [可选参数] image # 参数说明 --name="Name" #给容器命名 -d #后台方式运行,ja nohup -it #使用交互方式运行 -p 指定容器端口 -p 8080:8080 -p ip主机端口:容器端口 -p 主机端口:容器端口(常用) -p 容器端口 容器端口 -P 随机指定端口
退出容器
exit # 直接容器停止并退出 Ctrl + P + Q # 容器不停止并推出
删除容器
docker rm 容器id #删除指定容器,不能删除正在与运行中的容器 docker rm -f $(docker ps -aq) #删除所有容器 docker ps -a -q|xargs docker rm #删除所有容器
容器开启关闭
docker start 容器id #开启容器 docker restart 容器id #重新开启容器 docker stop 容器id #关闭容器 docker kill 容器id #杀死容器
后台启动容器
docker run -d centos #后台启动centos #问题:使用docker ps查看发现centos停止了 #常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止 #Nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了
查看日志
docker logs #docker logs -tf --tail 行数 容器id docker logs -tf --tail 10 d2656f3c2a62 -tf #显示日志 --tail 数量 #显示指定数量
查看进程
docker top 容器id
查看容器累不信息
docker inspect 容器id
进入正在运行的容器
#进入容器开启一个新的终端,可以在里面操作 docker exec -it(以交互模式) 容器id 容器启动行(COMMAND) #进入容器正在执行的终端,不会启动新的线程 docker attach 容器id
从容器内拷贝文件
docker cp 容器id:容器内路径 目的地主机路径 #例子 docker cp d2656f3c2a62:/home/hello.txt /home
commit镜像
docker commit 提交容器成为一个新的副本 # 命令和git原理类似 docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名:[版本] #例如提交修改过webapps的docker镜像 docker commit -a="ling" -m="add new tomcat2" 43ffc0462269 tomcat02:1.0
容器数据卷:
什么是容器数据卷
数据卷是存在于一个或多个容器中的特定文件或文件夹,这个文件或文件夹以独立于 docker 文件系统的形式存在于宿主机中。数据卷的最大特定是:其生存周期独立于容器的生存周期。
使用数据卷的最佳场景:
-
在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载同一个数据卷,从而共享数据卷中的数据。
-
当宿主机不能保证一定存在某个目录或一些固定路径的文件时,使用数据卷可以规避这种限制带来的问题。
-
当你想把容器中的数据存储在宿主机之外的地方时,比如远程主机上或云存储上。
-
当你需要把容器数据在不同的宿主机之间备份、恢复或迁移时,数据卷是很好的选择。
容器的持久化和同步操作,容器间也可以数据共享。当我们在容器内部操作数据,那么数据卷就会自动同步到操作系统相应映射的位置,完成持久化操作。
docker run -it -v 主机文件:容器文件 镜像文件名 工作目录 #例如将容器centos的home目录下的文件挂载到主机的home/ceshi目录下 docker run -it -v /home/ceshi:/home centos /bin/bash #启动后可以使用inspect查看挂在状态mounts属性 docker inspect 容器id
初始Dockerfile
Dockerfile就是用来构建docker镜像文件的构建文件,命令脚本。
通过这个脚本可以自动生成镜像,镜像是一层一层的,脚本一个个命令,每个命令都是一层。
#创建一个dockerfile文件 #文件中的内容 指令(大写) 参数 #表示该镜像是基于centos的 FROM centos #指出挂载文件的挂在卷(这时就会在容器中创建这两个文件夹,属于匿名挂在,所以映射的主机文件目录需要使用inspect命令查看mounts属性中的主机挂载地址) VOLUME ["volume01","volume02"] #命令行 CMD echo "----end----" #命令行 CMD /bin/bash
挂载镜像命令:
docker build -f dockerfile文件名 -t 镜像命名