Ubuntu22 下 Docker 安装,VS Code Docker配置

1. Docker 安装

1. 卸载旧版本的 Docker(如果有):

sudo apt-get remove docker docker-engine docker.io containerd runc

2. 更新软件包:

sudo apt-get update
sudo apt-get upgrade

3. 安装 Docker 依赖项:

sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common

4. 添加 Docker 官方 GPG 密钥: (国内可能访问慢,或无法访问,可按后续步骤里添加国内镜像源)

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

注:因为apt - key机制存在一些安全隐患,旧的添加秘钥方式“curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -”在较新的系统中不推荐使用。

5. 添加国内Docker 软件源:

注:近期国内镜像源大量失效,有传闻是docker hub打算收费。下面是笔者 2024.11.22日时使用的镜像源,如无法访问,继续找可用镜像源。

sudo tee /etc/docker/daemon.json <<-'EOF'

{
"registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com",
    "https://dockerhub.azk8s.cn",
    "https://registry.cn-hangzhou.aliyuncs.com",
    "https://docker.m.daocloud.io",
    "https://noohub.ru",
    "https://huecker.io",
    "https://dockerhub.timeweb.cloud"
]
}

EOF

注:修改文件后,需要重启docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

6. 安装 Docker

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

安装指定版本 Docker:

sudo apt-get install docker-ce=5:20.10.13~3-0~ubuntu-jammy docker-ce-cli=5:20.10.13~3-0~ubuntu-jammy containerd.io

7.验证 Docker 是否安装成功:

systemctl start docker
sudo docker run hello-world

成功的话,会打印 “Hello from Docker” 

2. 修改 Docker 服务权限

允许非Root用户执行docker 命令
当我们安装好了Docker之后,有两种方式来执行 docker 命令

在docker命令前加上sudo, 比如:sudo docker ps
sudo -i 切换至root用户,再执行docker 命令
是否可以让当前用户在不切root,或者不加sudo 的情况下正常使用 docker 命令呢?答案是有的。


第一步:创建组

sudo groupadd docker

第二步: 添加到用户组

sudo usermod -aG docker ${USER}

第三步: 文件赋权限

sudo chmod 666 /var/run/docker.sock

第四步:重启docker服务

 sudo systemctl restart docker

第五步:更新.bashrc文件
我们需要编辑 ~/.bashrc文件,并在文件末尾增加如下一行。如果不在.bashrc文件中增加下面这一行命令,你会发现,当你每次打开新的终端,你都必须先执行一次 “newgrp docker” 命令
否则当前用户还是不可以执行docker命令

groupadd -f docker

3. Docker 安装遇到错误

1.错误描述

dpkg: error processing package docker-ce (--configure):
 installed docker-ce package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 docker-ce
E: Sub-process /usr/bin/dpkg returned an error code 

2.原因

/etc/docker/daemon.json 格式不正确

3.解决

笔者 daemon.json 文件如下:

  {
  "registry-mirrors": [
          "https://ox288s4f.mirror.aliyuncs.com",
          "https://registry.docker-cn.com",
          "http://hub-mirror.c.163.com",
          "https://mirror.ccs.tencentyun.com"
  ]
}

4. 使用 VScode Docker 开发 

安装成功的话,VS Code 左侧就会出现 Docker插件图标:

参考文档:

Ubuntu20.04 解决Docker连接超时+拉取镜像超时+VScode docker开发准备_docker超时-优快云博客 Ubuntu 22.04下Docker安装(最全指引)_ubuntu22.04 docker 分区-优快云博客

### 使用 DockerVS Code 中进行开发 #### 安装必要的扩展 为了在 Visual Studio Code (VS Code) 中高效利用 Docker 进行开发,安装官方提供的 **Docker 扩展** 是必不可少的。该扩展简化了容器化应用的创建、管理和调试过程。 #### 配置工作区环境 通过配置 `.dockerignore` 文件可以优化镜像构建速度并减少最终镜像大小。此文件定义哪些文件应该被忽略不纳入 Docker 上下文中[^2]。 ```plaintext node_modules/ npm-debug.log .DS_Store .git/ ``` 对于 PHP 或其他语言项目,则需调整上述路径匹配实际项目的结构特点。 #### 编写 `docker-compose.yml` 编写一个合适的 `docker-compose.yml` 文件来描述应用程序的服务依赖关系和服务本身。例如,在启动 WordPress 应用程序时使用的命令为: ```yaml version: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data: ``` 这段 YAML 脚本会设置 MySQL 和 WordPress 的运行环境,并使它们能够相互通信[^1]。 #### 启动与管理容器 一旦完成了以上准备工作,就可以直接从终端执行 `docker compose up` 命令来启动整个应用堆栈;而停止则只需输入 `docker compose down` 即可完成操作。 #### 开发期间热重载功能支持 为了让开发者享受更流畅的工作流体验,可以在 `docker-compose.override.yml` 中加入额外配置项实现代码更改后的自动重启效果。这对于前端框架尤其有用,因为这些工具通常自带监视器监听源码变化事件触发编译流程。 ```yaml version: '3' services: app: build: . volumes: - ./:/app command: php artisan serve --host=0.0.0.0 --port=9000 ``` 这里假设正在处理的是 Laravel 项目,因此指定了特定于它的 CLI 参数作为默认启动指令的一部分。 #### 利用远程解释器特性 借助 Remote-Containers 功能插件的支持,可以直接在一个隔离的安全沙盒内打开现有项目副本或基于预设模板新建空白工程。这不仅有助于保持主机系统的干净整洁,同时也让团队成员之间共享一致化的编码标准成为可能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值