ubuntu使用Docker笔记

一、参考资料

以下是本人的折腾实践。

二、Docker的安装

  • 2.1、使用清华源安装docker,清华源官方教程
    本人是在ubuntu20.04下安装的。

    • 1、如果你过去安装过 docker,先删掉:
    for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
    
    • 2、安装依赖:
    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg
    
    • 3、信任 Docker 的 GPG 公钥并添加仓库:
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    • 4、开始安装
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  • 2.2、手动安装Docker(适用于无法联网的电脑)

    • 1、打开清华大学docker-ce开源镜像
    • 2、选择操作系统。根据自己的系统选择,我这里选linux。
    • 3、选择ubuntu版本,进入dists/focal/pool/stable/amd64/目录。
    • 4、下载deb文件: Docker Engine, CLI, containerd, Docker Compose:
      • containerd.io_{version}_{arch}.deb
      • docker-ce_{version}_{arch}.deb
      • docker-ce-cli_{version}_{arch}.deb
      • docker-buildx-plugin_{version}_{arch}.deb
      • docker-compose-plugin_{version}_{arch}.deb
    • 5、安装deb
    sudo dpkg -i ./containerd.io_{version}_{arch}.deb \
    ./docker-ce_{version}_{arch}.deb \
    ./docker-ce-cli_{version}_{arch}.deb \
    ./docker-buildx-plugin_{version}_{arch}.deb \
    ./docker-compose-plugin_{version}_{arch}.deb
    
  • 2.3、如果使用清华源无法获取证书,可以采用阿里云源的安装办法
    阿里云源Docker CE镜像安装,步骤如下:

    # step 1: 安装必要的一些系统工具
    sudo apt update
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    
    # step 2: 安装GPG证书
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    
    # Step 3: 写入软件源信息
    sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    
    # Step 4: 更新并安装Docker-CE
    sudo apt update
    sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  • 2.4、如果你不想每次使用docker时都输入sudo,你可以将你的用户添加到docker组:

    sudo usermod -aG docker $USER
    

    然后,你需要注销并重新登录,或者重新启动系统,以便更改生效。之后,你就可以直接使用Docker命令,不需要再加sudo。

  • 2.5、ubuntu24.04下的特殊处理
    在ubuntu24.04下安装时,在sudo apt update时,可能会出现以下警告:

    W: https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/noble/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
    

    这是ubuntu24.04下新的apt配置导致的,可以通过下面的命令解决此警告:

    sudo cp /etc/apt/trusted.gpg /etc/apt/trusted.gpg.d
    

三、Docker Hub镜像加速

如果执行docker pull时,无法拉取到镜像,可以通过修改Docker Hub的源为国内源来进行加速。

  • 3.1、临时使用指定的源拉取镜像,可使用:

    docker pull 镜像名称 -–registry-mirror=国内镜像源地址
    
  • 3.2、永久使用指定的源

    • 1、需新增或编辑 Docker 的服务文件:
    sudo vim /etc/docker/daemon.json
    
    • 2、在该文件中添加以下内容:
    {
    	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
    }
    
  • 3.3、重启 Docker 服务以应用更改:

    sudo systemctl daemon-reload
    sudo systemctl restart docker
    
  • 3.4、附上国内Docker Hub 镜像加速器列表:

    镜像加速器镜像加速器地址是否专属加速器是否其它加速
    Docker 中国官方镜像https://registry.docker-cn.comDocker Hub
    DaoCloud 镜像站http://f1361db2.m.daocloud.io可登录,系统分配Docker Hub
    Azure 中国镜像https://dockerhub.azk8s.cnDocker Hub、GCR、Quay
    科大镜像站https://docker.mirrors.ustc.edu.cnDocker Hub、GCR、Quay
    阿里云https://<your_code>.mirror.aliyuncs.com需登录,系统分配Docker Hub
    七牛云https://reg-mirror.qiniu.comDocker Hub、GCR、Quay
    网易云https://hub-mirror.c.163.comDocker Hub
    腾讯云https://mirror.ccs.tencentyun.comDocker Hub
  • 3.5、检查加速器是否生效

    docker info
    

    如果从结果中看到了如下内容,说明配置成功:

    Registry Mirrors:
     [...]
    https://registry.docker-cn.com/
    
  • 3.6、Docker Hub 镜像测速
    使用镜像前后,可使用time统计所花费的总时间。测速前先移除本地的镜像,如测试拉取ubuntu20.04的镜像:

    time docker pull ubuntu:20.04	
    

四、Docker的卸载

  • 4.1、卸载 Docker Engine, CLI, containerd, and Docker Compose packages:
    sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
    
  • 4.2、删除残留的配置文件
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
    

五、Docker的简单使用

	# 拉取ubuntu20.04镜像:
	docker pull ubuntu:20.04

	# 以ubuntu20.04镜像运行一个容器:
	# 参数说明:
	# -i: 以交互式操作运行; -t: 以终端方式运行; -d: 后台运行;
	# -p 主机端口:容器端口 (建立主机和容器之间的端口映射);
	# --name: name (指定容器的名字);
	docker run -itd -p 15901:5901 --name ubuntu-test ubuntu:20.04 /bin/bash

	# 进入后台运行的容器
	docker exec -it  ubuntu-test /bin/bash

六、Docker常用命令

  • 6.1、帮助、启动类命令

    • 1、启动docker
    # 启动dokcer
    sudo systemctl start docker
    
    # 停止docker
    sudo systemctl stop docker
    
    # 查看docker状态
    sudo systemctl status docker
    
    # 开机启动
    sudo systemctl enable docker
    
    • 2、查看docker信息
    # 查看docker概要信息
    docker info
    
    # 查看docker总体帮助文档
    docker --help
    
    # 查看具体命令帮助
    docker 具体命令 --help
    
  • 6.2、镜像命令

    • 6.2.1、列出本地主机上的镜像
    # 查看已有镜像
    docker images
    
    # 列出镜像所有信息
    docker images -a
    
    # 只列出镜像id
    docker images -q
    
    • 6.2.2、从docker-hub中查找指定的镜像
    docker search 镜像名
    
    • 6.2.3、从docker-hub拉取镜像
    docker pull 镜像名[:TAG]
    
    • 6.2.4、查看镜像/容器/数据卷所占的空间
    docker system df
    
    • 6.2.5、删除镜像
    docker rmi 镜像名字/镜像id
    
    # 删除多个
    docker rmi -f img1:tag img2:tag
    
    # 删除全部
    docker rmi -f $(docker images -qa)
    
    • 6.2.6、提交容器副本使其成为一个新的镜像
    docker commit -m "提交描述信息" -a "作者" 容器id 要创建的img:[tag]
    
    • 6.2.7、镜像导出和导入
      • 导出镜像:
      # 以ubuntu为例:
      docker save -o ubuntu_latest.tar ubuntu:latest
      
      • 导入镜像:
      # 以ubuntu为例:
      docker load -i ubuntu_latest.tar
      
  • 6.3、容器命令

    • 6.3.1、启动并运行一个容器
    docker run [options] IMAGE [command] [args...]
    

    options说明:
    --name 容器名: 给容器指定一个名字
    -d: 后台运行容器并返回容器id,也即启动守护式容器(后台运行)
    -i: 以交互式模式运行容器,通常与-t同时使用
    -t: 为容器重新分配一个伪输入终端,通常与-i同时使用(也即启动交互式容器,前台有伪终端,等待交互)
    -P: 随机端口映射
    -p 主机端口:容器端口: 指定端口映射

    • 6.3.2、列出当前所有运行的容器
    docker ps [options]
    

    options说明:
    -a: 列出当前所有正在运行的容器 + 历史上运行过的容器
    -l: 显示最近创建的容器
    -n: 显示最近n个创建的容器
    -q: 静默模式,只显示当前运行的容器id

    • 6.3.3、退出容器
      两种退出方式:

    • run进入容器,exit退出,容器停止

    • run进入容器,ctrl+p+q退出,容器不停止

    • 6.3.4、启动已停止运行的容器

    docker start 容器id/容器名
    
    • 6.3.5、重启容器
    docker restart 容器id/容器名
    
    • 6.3.6、停止容器
    docker stop 容器id/容器名
    
    • 6.3.7、强制停止容器
    docker kill 容器id/容器名
    
    • 6.3.8、删除已停止的容器
    docker rm 容器id/容器名
    

    强制删除(不管是否在运行)

    docker rm -f 容器id/容器名
    
    • 6.3.9、启动守护式容器(后台服务器)
    docker run -d 容器id/容器名
    
    • 6.3.10、查看容器日志
    docker logs 容器id/容器名
    
    • 6.3.11、查看容器内运行的进程
    docker top 容器id/容器名
    
    • 6.3.12、查看容器内部细节
    docker inspect 容器id/容器名
    
    • 6.3.13、进入正在运行的容器并以命令行交互
    docker exec -it 容器id/容器名 shell
    

    docker exec退出后,不会导致容器停止。

    重新进入容器

    docker attach 容器id/容器名
    

    退出后,会导致容器停止。

    • 6.3.14、容器和主机之间拷贝文件
    # 从容器拷贝到主机
    docker cp 容器id:容器内路径 目的主机路径
    
    # 从主机拷贝到容器
    docker cp 主机路径 容器id:容器内路径
    
    • 6.3.15、导出容器
    docker export 容器id/容器名 > xxx.tar
    
    • 6.3.16、导入容器
    cat xxx.tar | docker import - 镜像仓库路径/镜像名:镜像版本号
    

七、Docker容器和主机之间的映射

  • 7.1、创建容器卷映射

    docker run -it --privileged=true -v 宿主机绝对路径:容器内路径 镜像名
    

    上述命令的作用:通过容器数据卷的方式,完成容器内的数据备份以及持久化到本地主机目录。将容器内的数据保存进宿主机的磁盘中。
    示例:

    docker run -it --name=u1 --privileged=true -v /tmp/host_data:/tmp/docker_data ubuntu:20.04
    

    执行后,容器u1的/tmp/docker_data目录和主机的/tmp/host_data目录将实现映射,两者之间可以相互访问、读写。

  • 7.2、增加映射的读写权限

    docker run -it --name=u1 --privileged=true -v /tmp/host_data:/tmp/docker_data:rw ubuntu:20.04
    

    rw: 代表容器内的权限是读写。

  • 7.3、容器卷之间的继承

    docker run -it --name=u2 --privileged=true --volumes-from u1 ubuntu:20.04
    

    --volumes-from: 代表容器u2继承了容器u1的数据卷。

八、创建Docker私有镜像仓库

Docker私有镜像仓库可以通过registry镜像来实现。步骤如下:

  • 8.1、拉取registry镜像
    docker pull registry
    
  • 8.2、基于镜像registry,创建容器卷映射,用于作为私有镜像库
    默认情况下,Docker Registry会在容器的本地文件系统上的/var/lib/registry目录存储镜像。如果您想要知道如何定位或配置Docker Registry的存储位置,您可以通过修改Docker Registry的配置文件来实现。通常,您可以通过在启动Docker Registry容器时设置环境变量或挂载卷来改变存储位置。
    docker run -d -p 5000:5000 --net=host --privileged=true -v /home/zhangge/data/docker:/var/lib/registry registry
    
    注: 这里可以通过查看/home/zhangge/data/docker目录查看提交的镜像。
  • 8.3、创建一个新容器u1
    docker run -it --name=u1 ubuntu:20.04
    
  • 8.4、提交容器u1副本使其成为一个新的镜像
    docker commit -m "提交描述信息" -a "作者" 容器id 要创建的img:[tag]
    
  • 8.5、将新的镜像打tag到私有镜像库上
    docker tag 镜像:tag Host:Port/Repository:Tag
    
    示例:
    docker tag myubuntu:u1 127.0.0.1:5000/myubuntu:u1
    
  • 8.6、将新的镜像推送到私有镜像库上
    docker push Host:Port/Repository:Tag
    
    示例:
    docker push 127.0.0.1:5000/myubuntu:u1
    
  • 8.7、查看私有镜像库上有什么镜像
    curl -XGET http://127.0.0.1:5000/v2/_catalog
    
  • 8.8、pull私有库镜像到本地运行
    docker pull 127.0.0.1:5000/myubuntu:u1
    
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker是一个开源的容器化平台,可以帮助开发人员将应用程序及其依赖打包成一个独立的容器,实现快速部署和可移植性。通过使用Docker,可以在不同的环境中运行应用程序,而无需担心环境差异和依赖冲突。 在Ubuntu上安装Docker可以按照以下步骤进行操作: 1. 首先,在终端中运行以下命令设置Docker的软件源: echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 2. 更新软件包列表: sudo apt-get update 3. 卸载之前安装的旧版本Docker(如果有): sudo apt-get remove docker docker-engine docker.io containerd runc 4. 添加Docker的官方GPG密钥: curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - 5. 安装Docker Engine: sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin 以上是在Ubuntu上安装Docker的基本步骤,你可以根据实际情况进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [UbuntuDocker的安装与使用教程](https://blog.csdn.net/CZD__CZD/article/details/120485685)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Docker安装Ubuntu详细过程(个人学习笔记)](https://blog.csdn.net/sjy072411/article/details/125025159)[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^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值