10.docker

发表于 未分类 分类,标签:
------------------------------------------------
docker
卸载
sudo apt remove docker docker-engine docker.io containerd runc
安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

添加阿里云源
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
查看版本
apt-cache madison docker-ce

安装
sudo apt install docker-ce=5:26.0.0-1~ubuntu.24.04~noble \
                 docker-ce-cli=5:26.0.0-1~ubuntu.24.04~noble \
                 containerd.io
                 
apt-get install docker-ce=5:27.5.1-1~ubuntu.24.04~noble \
                docker-ce-cli=5:27.5.1-1~ubuntu.24.04~noble \
                containerd.io

apt-get install docker-ce=5:29.7.2-1~ubuntu.26.04~resolute \
                docker-ce-cli=5:29.7.2-1~ubuntu.26.04~resolute \
                containerd.io
查看版本
docker compose version

------------------------------------------------
docker加速代理pull
root@qunr:~# cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": [
    "https://docker.1panel.live",
    "https://hub.rat.dev",
    "https://dockerpull.com"
  ]
}
EOF
root@qunr:~# systemctl daemon-reload
root@qunr:~# systemctl restart docker

------------------------------------------------
docker常用命令
容器状态
docker status

容器信息
docker info

安装docker阿里源
yum -y install yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  
安装指定版本
#查看可用版本
yum list docker-ce --showduplicates | sort -r
#新版本
yum -y install docker-ce-20.10.24-3.el9 docker-ce-cli-20.10.24-3.el9 docker-ce-rootless-extras-20.10.24-3.el9 docker-ce-cli-20.10.24-3.el9
#老18版本
yum -y install docker-ce-18.06.1.ce-3.el7
#20版本
yum -y install --setopt=obsoletes=0  docker-ce-20.10.10-3.el7
#约定安装版本
yum -y install docker-ce-20.10.24-3.el7 docker-ce-cli-20.10.24-3.el7 docker-ce-rootless-extras-20.10.24-3.el7 docker-compose-plugin-20.10.24-3.el7 docker-ce-cli-20.10.24-3.el7
#新版本直接安装docker-compose
yum install -y docker-compose-plugin

官方源rocky9.5
yum install -y yum-utilssudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum list docker-ce --showduplicates | sort -r
yum clean packages
#安装指定版本
yum -y install docker-ce-20.10.24-3.el9 docker-ce-cli-20.10.24-3.el9 docker-ce-rootless-extras-20.10.24-3.el9 docker-ce-cli-20.10.24-3.el9
#新版本直接安装docker-compose
dnf install -y docker-compose-plugin


------------------------------------------------
#更改数据目录
systemctl stop docker
systemctl stop docker.socket

#移动目录
mv /var/lib/docker /data/

#创建软链
ln -s /data/docker /var/lib/docker

#启动docker
systemctl start docker


------------------------------------------------
保存images镜像
docker save 98d8bb571885 > /root/rancher.tar
导入images镜像
docker load -i  /root/rancher.tar
修改标签
docker tag 98d8bb571885 rancher/server:latest
将容器制作成images
docker commit java k8s-jingxiang-registry.cn-hangzhou.cr.aliyuncs.com/yaozh.com/centos7jdk17:v2

不需要tag改镜像名
docker save -o tkm-latest.tar my-image:latest
docker load -i tkm-latest.tar


------------------------------------------------
docker中启动所有的容器命令
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)docker中关闭所有的容器命令
docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)docker中删除所有的容器命令
docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)docker中删除所有的镜像
docker rmi $(docker images | awk '{print $3}' |tail -n +2)列出docker源
yum list docker-ce --show-duplicates
yum list docker --showduplicate(centos_8)


------------------------------------------------
docker-compose

启动方式
#旧版本
docker-compose -f s.lbu.cn up -d
docker-compose -f s.lbu.cn down
#新版本
docker compose -f s.lbu.cn up -d
docker compose -f s.lbu.cn down

s.lbu.cn的yml文件
services:
  nginx:
    container_name: s.lbu.cn
    image: registry.cn-hangzhou.aliyuncs.com/leiuvn/shilei:v1
    ports:
      - "8001:80"
    volumes:
      - /data/wwwroot/s.lbu.cn/:/var/www/html/
    restart: always

启动mysql8
mkdir -p /data/mysql8/conf.d

mysql8的yml文件
services:
  mysql:
    image: registry.cn-hangzhou.aliyuncs.com/leiuvn/mysql:8.0
    container_name: mysql8
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password  # 设置MySQL的root用户密码
      MYSQL_DATABASE: your_database           # 创建一个默认数据库(可选)
      MYSQL_USER: your_user                   # 创建一个默认用户(可选)
      MYSQL_PASSWORD: your_password           # 设置默认用户的密码(可选)
    ports:
      - "3306:3306"                           # 将3306端口映射到主机
    volumes:
      - /data/mysql8:/etc/mysql                   # 挂载MySQL配置目录
      - /data/mysql8_data:/var/lib/mysql          # 挂载MySQL数据目录
    networks:
      mynet:
        ipv4_address: 192.168.1.10           # 分配固定IP

networks:
  mynet:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.1.0/24              # 定义子网范围
   

------------------------------------------------
1.# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

2.# 添加阿里云 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 添加阿里云 Docker 软件源
sudo mkdir -p /etc/apt/sources.list.d
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

3.# 更新查看版本
sudo apt update
apt-cache madison docker-ce

4.# 安装28版本
sudo apt install -y docker-ce=5:28.0.0-1~ubuntu.24.04~noble \
                    docker-ce-cli=5:28.0.0-1~ubuntu.24.04~noble \
                    containerd.io \
                    docker-buildx-plugin \
                    docker-compose-plugin

5.# 查看版本开机启动
docker --version
docker compose version

sudo systemctl enable docker
sudo systemctl start docker   

    
------------------------------------------------
dockerfile
编写Dockerfile需要按照以下步骤进行:
选择基础镜像:根据您的应用程序需求,选择适合的基础镜像作为起点。
基础镜像通常包含操作系统和一些预安装的软件。

设置工作目录:
使用WORKDIR指令设置容器内的工作目录。

复制文件:
使用COPY或ADD指令将应用程序代码、依赖项和配置文件复制到容器内。

安装依赖:
如果您的应用程序有依赖项,可以使用适当的包管理工具(如apt-get、yum或npm)在容器内安装它们。

运行命令:
使用RUN指令在容器内执行特定的命令,例如安装软件包、运行脚本等。

暴露端口:如果您的应用程序需要监听特定的端口,可以使用EXPOSE指令声明容器要使用的端口。

定义启动命令:使用CMD或ENTRYPOINT指令定义容器启动时要运行的命令。
这可以是启动应用程序的命令或执行其他操作的脚本。

以上只是Dockerfile编写的基本步骤,具体的内容和指令取决于您的应用程序和需求。
以下是一个简单的示例Dockerfile,以帮助您入门:

Dockerfile

# 使用基础镜像
FROM ubuntu:latest

# 设置工作目录
WORKDIR /app

# 复制应用程序代码到容器内
COPY . /app

# 安装依赖
RUN apt-get update && apt-get install -y python3

# 暴露端口
EXPOSE 8000

# 定义启动命令
CMD ["python3", "app.py"]

在此示例中,我们使用了基于最新的Ubuntu镜像,将当前目录的应用程序代码复制到容器的/app目录中,安装
了Python3,并暴露了容器的8000端口。最后,我们使用CMD指令定义了启动应用程序的命令。根据您的实际需
求和应用程序的特性,您可能需要调整和扩展 Dockerfile。

了解Dockerfile的完整语法和指令,请参考Docker官方文档。
请注意Dockerfile是一个纯文本文件,您可以使用任何文本编辑器编写和编辑它。在准备好Dockerfile后,使
用docker build命令构建镜像,并使用docker run命令创建和运行容器。


------------------------------------------------
docker网络
一新建网络容器指定网络
创建自定义网络:
docker network create my_network
docker  network  rm  my_network
docker network create --subnet=172.20.0.0/16 my_custom_network
查看容器子网:
docker inspect leiuk
运行MySQL容器:
docker run -d --name mysql_container --network my_network --ip 172.20.0.2 -e MYSQL_ROOT_PASSWORD=password mysql:latest
docker run -d --name mysql_container -v /data/mysql_data:/var/lib/mysql --network my_network --ip 172.20.0.2 -e MYSQL_ROOT_PASSWORD=password mysql:latest
确认IP地址设置:
docker inspect mysql_container | grep IPAddress
确保输出中显示的IP地址是你所设置的固定IP地址。

二查看已创建网络
运行以下命令:
docker network ls
这将显示所有 Docker 网络的列表。输出可能如下所示:
NETWORK ID     NAME                DRIVER    SCOPE
5b5df6e811c1   bridge              bridge    local
d6259f974ce5   host                host      local
c1bf6b5e85fb   my_custom_network   bridge    local
命令查看详细信息:
docker network inspect my_custom_network

三查看子网信息
docker network inspect my_custom_network
可以使用网络的ID:
docker network inspect 5b5df6e811c1
这将输出关于该网络的详细信息
查找输出中的 "IPAM" 部分,其中包含子网信息。示例输出可能如下所示:
"IPAM": {
     "Driver": "default",
     "Options": null,
     "Config": [
         {
             "Subnet": "172.19.0.0/24",
             "Gateway": "172.19.0.1"
         }
     ]
 }
上面的示例中,172.19.0.0/24 是该网络的子网,172.19.0.1 是网关地址。


------------------------------------------------



0 篇评论

发表我的评论