安装Docker
一、安装与配置
-
安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-
设置阿里云镜像
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
重建Yum缓存
yum clean all yum makecache #升级包 yum update -y
-
安装Docker-CE
sudo yum install -y docker-ce
-
启动Docker-CE
sudo systemctl enable docker sudo systemctl start docker
-
为Docker建立用户组【可选操作】
docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问。docker安装的时候,会建立docker用户组。若没有,可自己建立
-
建立Docker用户组
#查看是否建立用户组 cat /etc/group |grep docker # 新建Docker用户组 sudo groupadd docker
-
添加当前用户到docker用户组
sudo usermod -aG docker $USER
-
-
镜像加速设置
这里使用的是 阿里云提供的镜像加速 ,登录并且设置密码之后可以找到专属加速器地址,复制下来。执行如下命令
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["你的加速器地址"] } EOF #重新加载配置,并且重启 Docker 服务 sudo systemctl daemon-reload sudo systemctl restart docker
二、Docker常用命令
拉取镜像
#拉取mysql5.7的镜像
docker pull mysql:5.7
docker pull <镜像名:tag>
# 例如以下代码
docker pull sameersbn/redmine:latest
##从非官方的仓库下载,需要在仓库名称前指定完整的仓库地址。如:
docker pull hub.c.163.com/public/ubuntu:18.04
删除容器
docker rm <容器ID或名称>
查看容器日志
docekr logs -f <容器名 or ID>
查看正在运行的容器
docker ps # 查看正在运行的容器
docker ps -a # 查看所有的容器,包括已经停止的
删除所有容器
docker rm $(docker ps -a -q)
停止、启动、杀死指定容器
docker start <容器名 or ID> # 启动容器
docker stop <容器名 or ID> # 停止容器
docker kill <容器名 or ID> # 杀死容器
查看所有镜像
## 列出本地主机上已有镜像的基本信息
docker images
docker image ls
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2MY3kpqR-1615166660541)(E:\工作文档\image-20210220111928898.png)]
列出的信息:
- REPOSITORY:来自于那个仓库
- TAG:镜像的标签信息
- IMAGE ID:镜像的ID
- CREATED:创建时间
- SIZE:镜像的大小
后台运行
docker run -d <Other Parameters>
# 例如
docker run -d -p 127.0.0.1:33301:22 centos6-ssh
暴露端口
# 一共有三种形式进行端口映射
docker -p ip:hostPort:containerPort # 映射指定地址的主机端口到容器端口
# 例如:docker -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口
docker -p ip::containerPort # 映射指定地址的任意可用端口到容器端口
# 例如:docker -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口
docer -p hostPort:containerPort # 映射本机的指定端口到容器的指定端口
# 例如:docker -p 3306:3306 # 映射本机的3306端口到容器的3306端口
映射数据卷
docker -v /home/data:/opt/data # 这里/home/data 指的是宿主机的目录地址,后者则是容器的目录地址
创建镜像
创建镜像的方法主要有三种:基于已有的镜像的容器创建,基于本地模板导入、基于Dockerfile创建
-
基于已有容器创建
该方法主要使用docker [container] commit 命令
命令格式为
docker [container] commit [options] container [repository[:TAG]]
主要选项如下:
- -a,–author="":作者信息
- -c,–change=[]:提交的时候执行Dockerfile指令。包括CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILID|USER|VOLUME|WORKDIR等
- -m,–message="":提交消息
- -p,–pause=true:提交时暂停容器的运行
-
基于Dockfile创建
基于Dockfile创建是最常见的方式。Dockerfile是一个文本文件,利用给定的指令描述基于某个父镜像创建新镜像的过程。下面提供一个基于debian:stretch-slim镜像安装Python3环境:
FROM debian:stretch-slim LABEL version="1.0" maintainer="docker user " RUN apt-get update&&apt-get install -y python3&& apt-get clean && rm -rf /var/lib/apt/lists/*
docker build -t name path
存出和载入镜像
-
存出镜像
使用docke [image] save命令,可以导出镜像到本地文件。
## 指定imageID docker save -o spark.tar 2fd855b8adbd #指定repository和tag docker save -o spark-2.3.0-hadoop-2.8.tar gettyimages/spark:2.3.0-hadoop-2.8
-
载入镜像
使用
docker [image] load
将导出的tar文件在导入到本地镜像库。使用方法如下docker load -i spakr.tar ##或者 docker load < spark.tar
上传镜像
上传镜像使用push
子命令实现。默认上传到Docker Hub官方仓库。命令格式如下
docker [image] push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
导入和导出容器
-
导出容器
将一个已经创建的容器导出到一个文件,不管此时这个容器是否处于运行状态。使用如下命令:
docker [container] export [-o|--output[=""]] container ##示例,ce5是容器id的开头 docker export -o test.tar ce5 docker export ce5 > test.tar
-
导入容器
导出的文件可以使用
docker [container] import
命令导入变成镜像,该命令的格式如下:docker import [-c|--change[=[]]] [-m|--message[=MESSAGE]] file|URL|-[REPOSITORY[:TAG]]
从容器内复制文件到宿主机以及从宿主机复制文件到容器
##从容器内复制文件或文件夹到宿主机
docker cp 容器名(或者容器ID):要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
##从宿主机复制文件到容器内
docker cp 要拷贝的文件路径 容器名(或者容器ID):要拷贝到容器里面对应的路径
三、 Dockerfile创建镜像详解
-
指令说明
Dockerfile中的指令一般格式为INSTRUCTION arguments,包括“配置指令(配置指令信息)"和”操作指令“(具体执行操作。
配置指令
指令 说明 ARG 定义创建镜像过程中使用的变量 FROM 指定创建镜像的基础镜像 LABEL