doker实战
docker实战
docker 安装
-
移除以前docker相关包
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \ --add-repo \ //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
-
启动docker
systemctl enable docker --now
-
配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["//82m9ar63.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker 命令
-
拉去镜像
# 默认最新版 docker pull nginx # 指定版本 docker pull nginx:1.20.1 # 查看镜像 docker images
-
启动容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
比如,启动nginx应用容器,并映射88端口
# -d:后台运行 # -p:端口映射 # --restart=always: 开机自启 docker run --name=mynginx -d --restart=always -p 88:80 nginx
-
查看正在运行的容器
docker ps
-
停止容器
docker stop 容器id/名字
-
再次启动
docker start 容器id/名字
-
删除停止的容器
docker rm 容器id/名字 docker rm -f mynginx #强制删除正在运行中的
-
应用开机自启
docker update 容器id/名字 --restart=always
修改容器内容
-
进容器内部修改
# 进入容器内部的系统,修改容器内容 docker exec -it 容器id /bin/bash
-
挂载数据到外部修改
docker run --name=mynginx \ -d --restart=always \ -p 88:80 -v /data/html:/usr/share/nginx/html:ro \ nginx # 修改页面只需要去 主机的 /data/html
-
提交改变
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] docker commit -a "author" -m "首页变化" 341d81f7504f nginx:v1.0
推送远程仓库
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
# 把旧镜像的名字,改成仓库要求的新版名字
docker tag nginx:v1.0 author/nginx:v1.0
# 登录到docker hub
docker login
# 推送
docker push author/nginx:v1.0
docker logout(推送完成镜像后退出)
# 别的机器下载
docker pull author/nginx:v1.0
docker部署项目
-
先写一个spring boot项目,使用maven打包
-
编写Dockerfile文件
FROM openjdk:8-jdk-slim LABEL maintainer=author COPY target/*.jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"]
-
将 target 目录和 Dockerfile 文件放在一个文件夹里上传到服务器(可以把target目录里除了jar包外的文件都删除)
-
构建镜像
docker build -t java-demo:v1.0 .
-
启动容器
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0