镜像
概述:首先镜像它是Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起的一个文件系统,它由镜像名称和镜像版本两部分组成。
查看本地镜像
docker images
搜索镜像
docker search 镜像名称
拉取镜像
docker pull 镜像名称:版本号
导出镜像
docker save -o [保存的目标文件名称] [镜像名称:版本号 | 镜像ID]
#保存的镜像名称,后缀名为 tar
例如:
docker save -o nginx.tar nginx:latest
删除镜像
前提:该镜像没有对应的容器
docker rmi 镜像ID或者镜像名称
例如:
docker rmi nginx:latest
导入镜像
docker load -i nginx.tar
导入后如果查看不到镜像名称,可以使用 docker tag 为镜像指定名称
docker tag 镜像ID 镜像名称:tag
容器
知识点:容器是由镜像生成的。
docker run命令分析
docker run
-d #表示后台运行
-p 宿主机端口:容器端口
#在宿主机开一个端口和容器端口映射,达到访问容器内部8080的目的。
--name 容器名称
#是唯一的,
-v 宿主机目录 :容器目录
#在宿主机开一个目录和容器目录映射
-rm #停止容器后删除容器
--restart=always #表示重启
-rm和 --restart=always 不能同时使用
docker run -d -p 宿主机端口:容器端口 --name 容器名称 -v 宿主机目录 :容器目录 --rm 镜像ID
你在运行这个命令最重要的是宿主机的文件一定要设置好。
docker run -d -p 80:80 --name nginx80 -v /opt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/nginx/html:/usr/share/nginx/html --rm 605c77e624dd
当然你在运行这个命令之前一定要先检查你的nginx中的conf文件,里面的配置要和你容器的目录要对应的上。
比如:
如果对应不上的话就会产生404的错误。
查看命令
查看到的属性:
Image #是镜像IDCONTAINER ID #容器ID
docker ps 查看当前运行的容器
-a #查看所有
-aq #查看所有容器的ID
docker stop 50b6745a137a #停止容器
docker stop $(docker ps -qa) #停止所有容器
docker restart #重启容器
docker rm #删除容器 注意:只能删除停止的容器
停止容器
docker stop 容器名称或ID
docker stop $(docker ps -aq) #停止所有的容器
启动容器
docker start 容器名称或ID
重启容器
docker restart 容器名称或ID
删除容器
docker rm 容器名称或ID
#容器必须是停止状态,才能删除
进入容器
docker exec -it 容器ID或容器名称 bash
命令解读
docker exec :进入容器内部,执行一个命令
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
bash:进入容器后执行的命令,bash是一个linux终端交互命令
退出容器
exit
三个重要指学java的同学注意这三个命令一定要会
docker run -d -p 80:80 --name nginx 镜像ID
docker exec -it 容器ID或容器名称 bash
docker logs 容器ID或容器名称
数据卷
概述:可以让宿主机的目录和容器中的目录形成映射关系,实现共享数据。在容器化技术中,数据卷的挂载是指将主机上的一个目录或文件与容器内的一个目录进行关联。
一个数据卷可以在多个容器挂载
创建数据卷
docker volume create 数据卷名称
查看数据卷信息
docker volume inspect 数据卷名称
查看全部数据卷
docker volume ls
删除数据卷
#只能删除没有被容器引用的数据卷
删除全部:docker volume prune
删除指定数据卷:docker volume rm 数据卷名称
DockerCompose
第一步:
上传 docker-compose 文件到 /usr/local/bin
第二步:
chmod +x /usr/local/bin/docker-compose
第三步:
测试安装是否成功
docker-compose -v
比如我现在想要联调myqsl和tomcat,那么就要编写一个文件docker-compose.yml
放在这个/opt/docker/docker-mysql-tomcat/路径下
version: '3.7'
services:
mysql:
image: mysql:5.7.25
container_name: mysql
volumes:
- /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf
- /tmp/mysql/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=123456
ports:
- 3306:3306
restart: always
tomcat:
image: tomcat:8.5.15
container_name: tomcat
volumes:
- /tmp/tomcat/webapps:/usr/local/tomcat/webapps
ports:
- 8080:8080
restart: always
第五步:
docker ps -qa
docker stop $(docker ps -qa)
docker rm $(docker ps -qa
运行容器
docker-compose up -d
#注意:必须在docker-compose.yml文件所在的目录或者子目录下运行
最后的一些docker-compose相关命令
后台运行:docker compose up -d
停止、启动、重启:docker compose stop|start|restart [服务名]
查看日志:docker compose logs -f [服务名]
停止并删除容器:docker-compose down
本章涉及软件:VMware,CentOS 7,Docker,MobaXterm。