流行的微服务容器
简介
- 优点:与传统虚拟机相比,Docker优势体现在启动速度快,占用体积小
- Docker是一个客户端-服务器(C/S)的架构程序
- Docker镜像与容器:镜像是用来运行容器,一个镜像可以构建多个容器
- Registry(注册中心):Docker用Registry来保存用户的镜像,用户可以在DockerHub保存自己的镜像
安装和启动
Centos7.x版本安装
1 2 3 4 5 6 7 8 9 10 11 12
| # 更新源 sudo yum update # 卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine # 安装支持devicemapper存储类型 sudo yum update sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2 # 添加软件源 sudo yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo # 安装Docker sudo yum update sudo yum install docker-ce
|
Ubuntu安装
1 2 3 4 5 6 7 8 9
| sudo apt update sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update sudo apt install docker-ce
|
设置USTC镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| vi /etc/docker/daemon.json # 输入 { "registry-mirrors": [ "https://mirror.ccs.tencentyun.com" ] } # 执行 systemctl daemon-reload systemctl restart docker # 执行 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
# 重启 service docker restart
|
Docker启动与停止
命令 |
作用 |
systemctl start docker |
启动Docker |
systemctl stop docker |
停止Docker |
systemctl restart docker |
重启Docker |
systemctl status docker |
查看Docker状态 |
systemctl enable docker |
设置开机启动 |
docker info |
查看Docker概要信息 |
docker –help |
查看Docker帮助文档 |
常用命令
镜像相关命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| # 查看本地镜像,这些镜像都存储在Docker宿主机的/var/lib/docker目录下 docker images # 镜像名称 REPOSITORY # 镜像标签 TAG # 镜像创建时间 CREATED # 镜像大小 SIZE # 搜索镜像 docker search + 镜像名称 # 仓库名称 NAME # 镜像描述 DESCRIPTION # 用户评价 STARS # 是否是官方的 OFFICIAL # 自动构建,表示是由Docker Hub自动构建形成的:AUTOMATED # 拉取镜像 docker pull + 查看到的镜像名称
# 列出所有容器 docker ps -aq # 停止所有容器 docker stop $(docker ps -aq) # 删除所有容器 docker rm $(docker ps -aq) # 删除所有的镜像 docker rmi $(docker images -q)
|
容器相关命令
- 查看正在运行的容器:docker ps,
- 加上-a查看所有容器
- 加上-l查看最后一次运行的容器
- 加上-f status-exited查看停止的容器
- 创建容器:docker run
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| # 运行容器 -i # 容器启动后会进入命令行。和-i一起用会登录进入这个容器,创建一个伪终端 -t # 为创建的容器命名 --name # 目录映射关系,把宿主机中的一个目录和容器的目录形成映射,操作宿主机目录相当于操作容器目录 -v # 创建一个守护式容器在后台运行 -d # 端口映射 -p # 退出当前容器 exit
# 交互式方式创建容器:退出容器,容器自动关闭 docker run -it --name=容器名称 镜像名称:标签 /bin/bash # 守护式方式创建容器:退出容器,容器不关闭,仍然在后台运行 docker run -di --name=容器名称 镜像名称:标签
# 进入容器 docker exec -it 容器名称 /bin/bash # 停止容器 docker stop 容器名称(或容器ID) # 启动容器 docker start 容器名称(或容器ID) # 文件拷贝到容器 docker cp 需要拷贝的文件或目录 容器名称:容器目录 # 文件拷贝出容器 docker cp 容器名称:容器目录 需要拷贝的文件或目录 # 目录挂载 docker run -di -v 宿主机目录:容器目录 --name=容器名称 镜像名称:标签 # 查看容器IP地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称 # 查看容器所有信息 docker inspect 容器名称 # 删除容器 docker rm 容器名称
|
备份与恢复
容器保存为镜像
docker commit 需要保存的容器名称 需要保存为镜像的镜像名称
镜像备份为tar文件
docker save -o 备份后镜像名称.tar 原镜像名称
镜像恢复
先删除原镜像,再执行docker load -i 需要恢复的tar镜像
Dockerfile
是一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像
1 2
| # 执行Dockerfile文件 docker build -t='镜像名称' 指定Dockerfile存在的位置
|
常用命令
命令 |
作用 |
FROM 镜像名称:标签 |
定义了使用哪个基础镜像启动构建流程 |
MAINTAINER 名字 |
声明镜像的创建者 |
ENV key value |
设置环境变量 |
RUN command |
是Docker的核心部分(可以写多条) |
ADD 源目录文件 家目录文件 |
将宿主机的文件复制到容器中 如果是一个压缩文件将会在复制后自动解压 |
COPY 源目录文件 家目录文件 |
和ADD相似,但如果有压缩文件不能解压 |
WORKDIR 目录名称 |
设置工作目录 |
书写JAVA环境搭建的Dockerfile文件
1 2 3 4 5 6 7 8 9 10
| FROM centos:7 声明基础镜像 MAINTAINER jtx 声明名称 WORKDIR /usr 设置当前目录 RUN mkdir /usr/local/java 创建一个目录 ADD jdk-8u11-linux-x64.tar.gz /usr/local/java 添加压缩文件(压缩文件必须在宿主机中)
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 设置jdk环境变量 EVN JRE_HOME $JAVA_HOME/jre 设置jre环境变量 ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOM/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH 设置CLASS环境变量 EVN PATH $JAVA_HOME/bin:$PATH 设置PATH环境变量
|
Docker私有仓库
搭建和配置
1 2 3 4 5 6 7 8 9 10
| # 拉取私有仓库镜像 docker pull registry # 启动私有仓库容器 docker run -di --name=registry -p 5000:5000 registry # 浏览器打开输入ip地址:5000/v2/_catalog # 看到{"repositories":[]}表示搭建成功,且内容为空 # 修改/etc/docker/daemon.json添加 {"insecure-registries":["ip地址:5000"]} # 重启docker systemctl restart docker
|
上传镜像到私有仓库
- 对需要上传的镜像打标签:docker tag 镜像名称 私有仓库地址:5000/镜像名称
- 启动私有仓库容器:docker start registry
- 上传:docker push 私有仓库地址:5000/镜像名称
下载私有仓库镜像
- 重复搭建的命令
- 启动私有仓库容器:docker start registry
- 执行:docker pull 私有仓库地址:5000/镜像名称
Docker出错
查看挂载信息
1
| docker inspect 容器名称 | grep Mounts -A 20
|
相关文章
Docker安装软件
Docker高级
Docker安装Alist+Aria2+Qbittorrentee
Docker设置代理
国内可用Docker镜像仓库
Docker提示没权限