Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。
Docker架构,Docker包括三个基本概念:
-
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
-
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
-
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker安装
1.安装环境
当前操作在Linux环境进行安装
2.安装
2.1 安装运行
2.1.1 使用Yum源安装
# 把yum包更新到最新
sudo yum update
# 查看是否已安装docker
yum list installed | grep docker
# 安装docker
yum install docker
# 查看安装后版本
docker version
2.1.2 启动docker
# 开机自启
sudo systemctl enable docker
# 启动docker服务
sudo systemctl start docker
# 停止docker服务
sudo systemctl stop docker
2.1.3 查看docker服务状态
# 查看docker服务状态
systemctl status docker
# 查看日志状态成功日志
systemctl status docker.service
2.1.4 添加docker用户组(可选)
# 建立 Docker 用户组
sudo groupadd docker
# 添加当前用户到 docker 组
sudo usermod -aG docker $USER
2.1.5 镜像加速配置
# 加速器地址 :
# 阿里云控制台搜索容器镜像服务
# 进入容器镜像服务, 左侧最下方容器镜像服务中复制加速器地址
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["你的加速器地址"]
}
EOF
# 重启docker
sudo systemctl daemon-reload
sudo systemctl restart docker
*列:
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://cr.console.aliyun.com/"
]
}
2.2 常用docker运行命令
# 拉取docker镜像(从Docker hub上下载某个镜像);
docker pull image_name<镜像名称>
# 查找Docker Hub上的nginx镜像;
docker search image_name<镜像名称>
# 查看宿主机上的镜像,Docker镜像保存在/var/lib/docker目录下;
docker images
# 删除镜像
docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30<镜像id>
# 查看当前正在运行容器
docker ps
# 查看所有容器
docker ps -a
# 启动、停止、重启容器命令(container_name:容器名、container_id:容器id)
docker start container_name/container_id
docker stop container_name/container_id
docker restart container_name/container_id
# 后台启动一个容器后,如果想进入到这个容器,可以使用attach命令(如果从这个容器退出,会导致容器的停止。)
docker attach container_name/container_id
# 进入一个已经在运行的容器(推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。)
sudo docker exec -it 775c7c9ee1e1 /bin/bash
# 退出容器
exit
# 删除容器的命令(container_name:容器名、container_id:容器id)
docker rm container_name/container_id
# 删除所有停止的容器
docker rm $(docker ps -a -q)
# 查看当前系统Docker信息
docker info
# 查看容器的日志命令(container_name:容器名、container_id:容器id)
docker logs container_name/container_id
2.3 安装目录详情
docker默认安装目录:
/var/lib/docker
docker启动后日志会在以下位置:
/var/lib/docker/containers/容器ID/容器ID-json.log
2.4 Docker从容器拷贝文件到宿主机操作案例
案例一:
# 以elasticsearch容器为例
# 运行es
docker run -d -p 9200:9200 elasticsearch:5.4
# 查看已运行的容器
docker ps
# 进去容器内部,找到需要拷贝的文件及目录
docker exec -it 2c2600fb60f8 /bin/bash
# 从容器中退出
exit
# 将container id为4db8edd86202的容器内elasticsearch.yml文件拷贝到宿主机指定目录下:
docker cp 4db8edd86202:/usr/share/elasticsearch/config/elasticsearch.yml /home/haopeng/es
【把docker中容器时db002里面的my.cnf文件拷贝到根目录下】
docker cp db002:/etc/mysql/my.cnf ~/root/
【把根目录下my.cnf文件拷贝到docker中容器时db002里面】
docker cp ~/root/my.cnf db002:/etc/mysql/my.cnf
2.5 端口映射问题(易忽略)
*列:
0.0.0.0:5000->5000/tcp
说明:容器内部的 5001 端口映射到我们本地主机的 5000 端口上。
3.Docker Dockerfile
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
4.Docker Compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
网友评论