Docker使用教程

本文介绍了Docker的基础知识,包括Docker Host、Docker Daemon、Client、Registry等核心概念。详细讲解了在CentOS上安装Docker的步骤,并提供了常用Docker命令,如下载镜像、启动容器、管理容器和数据持久化。还讨论了镜像的保存、传输及推送至远程仓库的操作流程。
摘要由CSDN通过智能技术生成
Docker基础
  1. Docker基本概念
    ● Docker_Host:
    ○ 安装Docker的主机
    ● Docker Daemon:
    ○ 运行在Docker主机上的Docker后台进程
    ● Client:
    ○ 操作Docker主机的客户端(命令行、UI等)
    ● Registry:
    ○ 镜像仓库
    ○ Docker Hub
    ● Images:
    ○ 镜像,带环境打包好的程序,可以直接启动运行
    ● Containers:
    ○ 容器,由镜像启动起来正在运行中的程
  2. centos下安装docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
  1. 启动docker
systemctl enable docker --now
  1. 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://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常用命令
  1. 下载镜像 以nginx为例
docker pull nginx  #下载最新版

镜像名:版本名(标签)

# 下载nginx镜像
docker pull nginx:1.20.1
# 下载redis镜像
docker pull redis  #下载最新
docker pull redis:6.2.4  版本号
## 下载来的镜像都在本地
docker images  #查看所有镜像
redis = redis:latest
docker rmi 镜像名:版本号/镜像id
  1. 启动容器
# -d:后台运行
# --restart=always: 开机自启 
docker run --name=mynginx   -d  --restart=always -p  88:80   nginx
  1. 常用命令
# 查看正在运行的容器
docker ps
# 查看所有
docker ps -a
# 删除停止的容器
docker rm  容器id/名字
docker rm -f mynginx   #强制删除正在运行中的
#停止容器
docker stop 容器id/名字
#再次启动
docker start 容器id/名字
#应用开机自启
docker update 容器id/名字 --restart=always
# 进入容器内部的系统,修改容器内容
docker exec -it 容器id  /bin/bash
  1. 挂载数据到外部修改
docker run --name=mynginx   \
-d  --restart=always \
-p  88:80 -v /data/html:/usr/share/nginx/html:ro  \
nginx

# 修改页面只需要去 主机的 /data/html
  1. 提交改变
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit -a "yonghuming"  -m "首页变化" 341d81f7504f guignginx:v1.0


  1. 镜像传输
# 将镜像保存成压缩包
docker save -o abc.tar guignginx:v1.0
# 别的机器加载这个镜像
docker load -i abc.tar
# 离线安装
  1. 推送远程仓库
# 把旧镜像的名字,改成仓库要求的新版名字
docker tag guignginx:v1.0 wangzhengkai/guignginx:v1.0

# 登录到docker hub
docker login       


docker logout(推送完成镜像后退出)

# 推送
docker push wangzhengkai/guignginx:v1.0


# 别的机器下载
docker pull wangzhengkai/guignginx:v1.0

补充

docker logs 容器名/id   排错

docker exec -it 容器id /bin/bash


# docker 经常修改nginx配置文件
docker run -d -p 80:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx


#把容器指定位置的东西复制出来 
docker cp 5eff66eec7e1:/etc/nginx/nginx.conf  /data/conf/nginx.conf
#把外面的内容复制到容器里面
docker cp  /data/conf/nginx.conf  5eff66eec7e1:/etc/nginx/nginx.conf

java 打包Dockerfile

FROM openjdk:8-jdk-slim
LABEL maintainer=wangzhengkai

COPY target/*.jar   /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t java-demo:v1.0 .

每个应用每次打包,都需要本地编译、再上传服务器、再进行docker构建,如果有1000个应用要打包镜像怎么办?有没有更好的方式?

启动容器

docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

分享镜像

# 登录docker hub
docker login

#给旧镜像起名
docker tag java-demo:v1.0  wangzhengkai/java-demo:v1.0

# 推送到docker hub
docker push wangzhengkai/java-demo:v1.0

# 别的机器
docker pull wangzhengkai/java-demo:v1.0

# 别的机器运行
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

就到此结束了 ,下篇更新k8s

Docker是一个开源的容器化平台,它可以帮助开发人员将应用程序及其依赖项打包成一个独立的容器,以便在不同的环境中进行部署和运行。Docker的出现主要是为了解决应用程序在不同环境中部署和运行的问题。通过使用Docker,开发人员可以将应用程序及其依赖项打包成一个容器,然后在任何支持Docker的环境中运行,而不需要担心环境差异导致的问题。\[1\] 对于Docker的常用命令,可以使用以下命令来获取帮助信息: - docker version:显示Docker的版本信息。 - docker info:显示Docker的系统信息,包括镜像和容器的数量。 - docker 命令 --help:显示特定命令的帮助信息。\[2\]\[3\] 这些命令可以帮助你了解Docker的版本和系统信息,并提供了一些常用命令的帮助信息,以便你更好地使用Docker进行容器应用程序的管理和部署。 #### 引用[.reference_title] - *1* *2* [Docker最新超详细版教程通俗易懂(基础版)](https://blog.csdn.net/qq_38140292/article/details/123256877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Docker入门教程(详细)](https://blog.csdn.net/qq_54729417/article/details/127913536)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值