Docker images:
Docker 镜像,容器运行的只读模板,操作系统+软件运行环境+用户程序
Docker containers:
Docker 容器,包含某个应用运行所需要的全部环境
Docker Stash:
Docker 仓库,用来保存镜像,有公有和私有仓库
什么是Dokcer
百科:一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
简单来说:
就是可以快速部署启动应用,实现虚拟化,完整资源隔离。
一次编写,四处运行
# 更新yum源。
yum update
# 安装Docker
yum install docker-io -y
# 运行Docker
systemctl start docker
# 运行Docker守护进程
systemctl start docker
# 查看Docker状态
systemctl status docker
# 查看Docker信息
docker info
# 停止Docker守护进程
systemctl stop docker
# 重启Docker守护进程
systemctl restart docker
# 运行 nginx 镜像的容器
docker run --name mydocker-nginx -p 8080:80 -d nginx
# 其中:
--name mydocker-nginx:容器的名字叫做mydocker-nginx,名字自己定义
-p: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
-d:容器启动后,在后台运行
# 运行 mysql 镜像的容器
docker run --name mysql5.7 --restart always -p 3307:3306 -e MYSQL_ROOT_PASSWORD=12345 -v /home/vagrant/mysql5.7/data:/var/lib/mysql -d mysql:5.7
运行 mysql 镜像容器 命令行截图:
连接容器中的 mysql 数据库 截图:
访问成功哦!
我们可以发现,其实本地开发环境如果需要用到 mysql、ng等等是不是可以直接用 docker 启动对应容器呢,这样可以随时迁移我们的开发环境。
一、 创建目录 DockerStudy
二、 目录中创建一个 index.html 文件,内容如下
...
Hello docker
Hello docker
Hello docker
...
FROM nginx
COPY ./index.html /usr/share/nginx/html/index.html
EXPOSE 80
此时 DockerStudy 目录如下
DockerStudy
|____index.html
|____Dockerfile
cd /usr/local/DockerStudy
docker image build ./ -t docker-study:1.0.1
docker images
index.html 和 dockerfile 的内容:
我是本地写好再上传到 Linxu 终端
进入对应目录,打包镜像,查看镜像的命令行截图:
docker container create -p 12555:80 docker-study:1.0.1
# 刚刚使用 Dockerfile 创建了一个镜像,根据刚刚创建的镜像,创建一个容器
docker start a18bd2a88d14
# 运行容器, a18bd2a88d14 为你自己的容器 id
根据镜像创建容器 的截图:
去对应端口验证一下我们自己写的 DockerFile创建的镜像容器是否运行成功
搜索镜像:
docker search xxx
列出当前系统存在的镜像:
docker images
拉取镜像:
docker pull xxx
运行容器
docker run --name xdclass-nginx -p 8080:80 -d nginx
docker run - 运行一个容器, name 或者 containerId
-d 后台运行
-p 端口映射
--name "xxx" 容器名称
列举当前正在运行的容器:
docker ps
列举全部容器:
docker ps -a
检查容器内部信息:
docker inspect name/containerId
删除镜像:
docker rmi IMAGE_NAME/containerId
停止某个容器:
docker stop 容器名称
启动某个容器:
docker start 容器名称
移除某个容器:
docker rm 容器名称 (容器必须是停止状态)
查看容器启动日志
docker logs -f 容器 id