1.Docker安装
1.1 docker 卸载
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
1.2 docker安装
1.添加基础安装包
yum install -y yum-utils
2.设置镜像仓库 默认从国外镜像下载
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3.设置成阿里云镜像
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新yum
yum makecache fast
5.安装docker
yum install docker-ce docker-ce-cli containerd.io
6.启动docker
systemctl start docker
7.查看docker版本
docker version
8.通过运行hello-world 映像验证 Docker Engine 是否已正确安装
docker run hello-world
1.3配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://gneo1jfa.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
2 Docker 常用命令
2.1进入当前运行的容器
#第一种方式
docker exec -it 容器id/容器名称 bash
#第二种方式
docker attach 容器id
#退出容器命令
Ctrl+P+Q
2.2 docker 容器内文件拷贝出来
docker cp 容器id:/文件目录/文件 /容器外目录
2.3 docker镜像操作命令
#镜像查看
docker images
# 拉取镜像
docker pull 镜像名称:版本
#镜像推送到镜像仓库
docker push
#镜像删除
docker rmi 镜像id
#镜像打包 将 redis 镜像打包成 redis.tar
docker save -o redis.tar redis:latest
#镜像加载 将redis.tar 加载成redis镜像
docker load -i redis.tar
2.4 docker 容器操作命令
# 让容器运行命令
docker run
--name:指定容器名称
-p: 指定端口映射
-d: 让容器后台运行
# 查看容器日志命令
docker logs +容器名称 加 -f 可以持续查看日志
#查看容器状态
docker ps
-a :查询所有容器的状态包括已经停止的容器
#停止容器
docker stop 容器名/容器id
#启动停止的容器
docker start 容器名/容器id
#删除容器
docker rm
-f:强制删除容器
2.5 数据卷挂载和宿主机文件挂载
#创建数据卷
docker volume create 数据卷名称
#查看所有数据卷
docker volume ls
#查看数据卷详情
docker volume inspect 数据卷名称
#删除某个数据卷
docker volume rm 数据卷名称
#删除未使用的数据卷
docker volume prune
#数据卷挂载示例 将nginx容器中的/usr/share/nginx/html目录挂载到宿主机的 html数据卷,如果宿主机上的html不存在会自动创建
docker run --name nginx -p 80:80 -d -v html:/usr/share/nginx/html nginx
#宿主机文件和目录直接挂载到容器内容器目录和文件
docker run --name nginx -p 80:80 -d -v /var/lib/docker/volumes/html/_data:/usr/share/nginx/html nginx
数据卷挂载和宿主机目录挂载的区别是数据卷是docker帮我们创建具体位置我们不知道,目录沈不好找;宿主机目录和文件挂载是我们自己创建管理目录和文件直接挂载到容器中对应的目录。
2.6 Dockerfile自定义镜像
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction) ,用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
2.6.1基于java8构建一个java项目
虽然我们可以基于Ubuntu基础镜像,添加任意自己需要的安装包,构建镜像,但是却比较麻烦。所以大多数情况下,我们都可以在一些安装了部分软件的基础镜像上做改造。
例如,构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。
需求:基于java:8-alpine镜像,将一个Java项目构建为镜像
实现思路如下:
-
① 新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile
-
② 将user-service服务打包成app.jar拷贝到这个目录中
-
③ 编写Dockerfile文件:
-
a )基于java:8-alpine作为基础镜像
-
b )将app.jar拷贝到镜像中
-
c )暴露端口
-
d )编写入口ENTRYPOINT
Dockerfile内容如下:
FROM java:8-alpine COPY ./app.jar /tmp/app.jar EXPOSE 8081 ENTRYPOINT java -jar /tmp/app.jar
-
-
④ 使用docker build命令构建镜像
-
⑤ 使用docker run创建容器并运行
文件准备如下图
执行构建镜像命令
#构建出镜像userservice:1.0
docker build -t userservice:1.0 .
#查看镜像生成情况
docker images
可以看到userservice 镜像已经生成
启动userservice镜像
#执行容器启动命令
docker run --name userservice -p 8081:8081 -d userservice:1.0
查看容器启动情况
#查看容器启动状态
docker ps
访问userservice接口可以正常访问 镜像构建和容器启动完成!!!