Docker的安装及使用摘要

发布于:2024-07-06 ⋅ 阅读:(30) ⋅ 点赞:(0)

本文分享一些在docker安装及使用过程中的部分要点,会持续更新,供参考。

1. docker安装

1.1 在ubuntu系统安装

安装指定版本的docker。

# 更新时间:2024年6月23日

# docker官方的源无法安装,采用阿里云的源安装docker
# 更新软件包索引:
sudo apt-get update
# 安装依赖包以使apt能够通过HTTPS使用仓库:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
# 添加阿里云Docker官方的GPG密钥:
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# 向sources.list中添加Docker仓库地址:
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# 再次更新软件包索引:
sudo apt-get update
# 安装最新版本或指定版本的Docker CE:
sudo apt-get install docker-ce
# 指定版本:docker-ce=<VERSION_STRING>
# 要替换<VERSION_STRING>为23.0.1版本的实际版本字符串,可以通过以下命令查找可用版本:
apt list -a docker-ce
# 找到23.0.1对应的版本字符串后,将其替换到上述命令中。
# 输出如下:
# ...
# docker-ce/jammy 5:23.0.1-1~ubuntu.22.04~jammy amd64
# docker-ce/jammy 5:23.0.0-1~ubuntu.22.04~jammy amd64
# ...
# 
# 选择字符串:5:23.0.1-1~ubuntu.22.04~jammy

sudo apt-get install docker-ce=5:23.0.1-1~ubuntu.22.04~jammy docker-ce-cli=5:23.0.1-1~ubuntu.22.04~jammy

1.2 在centos系统安装

安装指定版本的docker。

# 更新时间:2024年7月2日

# 卸载旧版本的 Docker(如果有)
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# 更新yum源
sudo yum update -y

# 安装docker依赖包
sudo yum install -y yum-utils

# 设置docker仓库源,阿里云
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新缓存
sudo yum makecache fast

# 安装
# 指定版本
# sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
yum install docker-ce-23.0.1 docker-ce-cli-23.0.1 containerd.io

# 启动Docker服务
sudo systemctl start docker

# 使Docker服务开机自启
sudo systemctl enable docker

# 验证Docker安装
sudo docker --version

1.3 镜像仓库设置

镜像使用优先级:官方地址 > 镜像地址 > 阿里云地址

2024年6月8日:国内大量docker镜像站被关闭。

以下可参考:

小陈的容器镜像站 (qq.com)

使用 Docker Hub 官方镜像,可以加入到 daemon.json 文件中。

这样就可以使用正常的命令进行拉取镜像,系统会自动使用代理进行拉取。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.chenby.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2. 常用指令

docker run 安装
docker ps 查看当前运行中的容器
docker rm container-id 删除指定 id 的容器
docker stop/start container-id 停止/启动指定 id 的容器
# 删除容器前,一定要先停止容器

docker image 镜像相关操作
docker images 查看镜像列表
docker rmi image-id [image-id] 删除指定 id 的镜像,可以是多个 -f 强制删除

docker volume ls 查看 volume 列表
docker network ls 查看网络列表
docker network prune 删除所有无用的网络
docker network rm xxx  删除某个网络


# 传输文档到docker容器内
docker cp xxx mycontainer:/xxxx/
# https://blog.51cto.com/u_16213393/8992972 

# 参数含义
docker -p 宿主端口:容器端口
# 外部访问时,采用宿主端口

docker --name xxxx  # 指定容器的名称
       -d # 后台模式运行容器


docker logs -ft --tail -F xxxx(容器id)

# 进入容器内部 容器ID
docker exec -it fee23dbcad6a /bin/bash

3. docker网络配置

常用网络相关指令:

# 查看网络
docker network ls
# 查看bridge底层细节
docker network inspect xxxx(network_id / name)
# 创建单机桥接网络,名为localnet
docker network create -d bridge localnet
# 指定ip网段创建
docker network create xxxx --subnet 172.20.0.0/16  # 根据需要调整
# 删除网络
docker network rm xxxx

关于为容器创建自定义网络时出现:user specified IP address is supported only when connecting to networks with user configured subnets。错误的解决办法。

docker中,只有使用 --subnet创建的网络才能指定静态IP。因此在使用docker-compose或者docker run命令创建容器时,如果需要指定,则可以使用 :

    --subnet创建网络(用来指定ip段)

    --gateway(用来指定网关)

要指定静态IP,可以先通过network create来创建,然后在docker-compose.yml 文件中配置添加到这个网络。

也可以在 docker-compose.yml 文件中直接配置 network 网络。

但要注意相关IP网段是否与已有网段重复。

参考脚本:

tbgfastgpt2:
    container_name: tbgfastgpt2
    # image: ghcr.io/labring/fastgpt:v4.8.5 # git
    # image: registry.cn-hangzhou.aliyuncs.com/xxxxx/xxxxx:v4.8.x # 阿里云
    image: registry.cn-hangzhou.aliyuncs.com/xxxx/xxxx:4.8.x.xxx.xxx
    ports:
      - 3005:3000
    networks:
      tbgfastgpt2:
        ipv4_address: 172.20.0.8
    ......

networks:
  tbgfastgpt2:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/24  # 定义网络的子网范围


网站公告

今日签到

点亮在社区的每一天
去签到