docker自学入门教程
1 docker的安装
1.1 卸载旧版本 docker
如果有旧版本 docker可先卸载
docker remove docker*
1.2 下载相关依赖
yun install -y yum-utils
1.3 配置 docker 的安装源地址
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo (官网地址,比较慢)
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo (阿里云地址)
1.4 安装 docker
yum install -y docker-ce docker-ce-cli containerd.io(安装最新版本的docker)
yum install -y docker-ce-17.04 docker-ce-cli containerd.io(安装指定版本(17.04)的docker)
docker-ce:docker 的社区版, 还有 docker-ee:docker 的企业版(收费)
docker-ce-cli:docker 的命令行工具 containerd.io:docker 的运行环境
1.5 设置开机启动
systemctl enable docker --now
--now 表示立即重启
1.6 简单命令检验是否安装成功
docker ps -a (不加-a是查询运行中的镜像, 加-a表示查询所有镜像,不管是运行中的还是停止的)
docker info (查询docker的基本信息)
1.7 配置镜像加速器(官网属于国外网站,下载镜像会比较慢, 推荐阿里云)
临时生效:docker --registry-mirror=https://xxxxxxx.mirror.aliyuncs.com (阿里云地址可以去阿里云官网,登录之后去获取)
永久生效:复制命令执行,阿里云地址自行修改,配置多个可以以逗号分隔
相关文件配置可参考官网:https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
点击查看代码
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
1.8 docker 官网的镜像仓库地址
https://hub.docker.com/
可在该网站中,自行搜索需要安装的镜像
2 docker基本操作
2.1 docker 基本命令操作
下载 nginx 镜像:docker pull nginx 下载最新版本的nginx,docker pull nginx:1.20.1 下载指定版本的nginx
查看所有镜像:docker images
删除镜像: docker rmi 镜像名或者镜像ID
启动镜像:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run 配置项 镜像名 镜像启动运行命令(默认都有,一般不写)
举例: docker run --name=nginx -d --restart=always -p 80:80 nginx (--name表示应用名称 --restart表示应用可以开机自启 -d表示后台启动 -p表示端口映射,服务器端口和docker主机端口映射)
再次运行,也可以使用 docker start 应用名称
停止运行 docker stop 应用名称
删除容器: docker rm 名称,强制删除可以加-f
2.2 进入容器修改内容
docker exec -it 容器 /bin/bash
exec表示是在一个运行状态下的容器里执行命令,it表示交互终端,总的意思就是在某个容器的交互终端执行/bin/bash,如果bash不能用,可以尝试/bin/sh
演示一下修改 nginx 的 index.html:
2.3 挂载
作用:类似于端口的映射,就是将外部的配置内容映射到容器中
举例:nginx,将外部服务器中/home/nginx/html文件夹映射到容器中的/user/share/nginx/html中,简单说就是替换
docker run --name=nginx -d --restart=always -p 80:80 -v /home/nginx/html:/usr/share/nginx/html nginx (-v就表示文件挂载,前面部分是外部服务器的目录内容,后面部分是容器中的内容,后面还可以加:ro或:rw,表示只读或读写,可以配置多个-v挂载)
2.4 镜像保存(适用单个服务器操作)
docker 容器运行的镜像会一直进行优化,所以希望将镜像保存,方便后续的维护和使用
docker commit -a "junmo" -m "修改index.html" nginx-example nginx-module:1.0.0
-a表示提交人 -m表示提交备注 nginx-example本地容器名称(自行修改) nginx-module:1.0.0生成的镜像名称和版本号(自定义)
2.5 镜像保存(适用多个服务器之间传输)
docker save -o /home/nginx-module.tar nginx-module:1.0.0
-o表示要保存的文件地址,规则是.tar文件,nginx-module:1.0.0是要保存的镜像
文件生成之后,就可以多台服务器之间传输了(scp /home/nginx-module.tar 用户名@IP:保存的地址)
加载镜像文件:docker load -i /home/nginx-module.tar
2.6 本地镜像推送远程仓库
首先需要去docker官网注册一个账户,然后创建一个仓库(假如是junmo/myRepo)
docker tag nginx-module:1.0.0(本地镜像) junmo/myRepo:1.0.0(本地镜像改名为远程镜像)
docker login(先登录)
docker push junmo/myRepo:1.0.0(推送)
docker logout(退出)
2.7 docker其他常用命令
查看容器的日志:docker logs 容器
复制容器中的文件到本机:docker cp 容器:容器中的文件 本机的文件位置
docker cp nginxServer:/etc/nginx/nginx.conf /home/nginx/config/nginx.config
2.8 docker 启动 redis
docker run \
-v /home/redis/config/redis.config:/etc/redis/redis.config \
-v /home/redis/data:/data \
-d --name=redisServer \
-p 6379:6379 \
redis:latest \
redis-server /etc/redis/redis.config
单机启动,可参考
3 docker 构建 java 项目
3.1 准备文件
1 java项目jar包。(自行准备)
2 创建Dockerfile文件
文件内容可自行百度,这边提供个简单版:
点击查看代码
FROM openjdk:8-jdk-slim (依赖的java环境)
LABEL maintainer=作者名
COPY jar包的位置(/home/java/demo.jar) 上传到docker容器中的位置(/test.jar) (本机文件复制到docker容器中)
ENTRYPOINT["java", "-jar","/test.jar"](启动命令)
3.2 构建 java项目
docker build -t java-test:V1.0 -f Dockerfile .
-t表示镜像的标签名(自定义设置),-f表示指定Dockerfile文件,最后一个.表示当前目录下,可根据实际情况配置相关位置