Ubuntu安装Docker和Docker Compose

文章目录

Docker官网

Docker镜像仓库

Docker安装

安装curl(可选)

如果已经安装了curl,则跳过此步骤

shell 复制代码
# 更新包缓存
sudo apt update
sudo apt install curl

使用安装脚本自动安装

安装命令如下

sh 复制代码
# 方式一
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 方式二
export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
# 如您使用 curl
curl -fsSL https://get.docker.com/ | sh
# 如您使用 wget
wget -O- https://get.docker.com/ | sh

# 方式三
curl -fsSL https://test.docker.com -o test-docker.sh
sh test-docker.sh

Docker 在 get.docker.comtest.docker.com 上提供了方便脚本,用于将快速安装 Docker Engine-Community 的边缘版本和测试版本。脚本的源代码在 docker-install 仓库中。 不建议在生产环境中使用这些脚本,在使用它们之前,您应该了解潜在的风险:

  • 脚本需要运行 root 或具有 sudo 特权。因此,在运行脚本之前,应仔细检查和审核脚本。
  • 这些脚本尝试检测 Linux 发行版和版本,并为您配置软件包管理系统。此外,脚本不允许您自定义任何安装参数。从 Docker 的角度或您自己组织的准则和标准的角度来看,这可能导致不支持的配置。
  • 这些脚本将安装软件包管理器的所有依赖项和建议,而无需进行确认。这可能会安装大量软件包,具体取决于主机的当前配置。
  • 该脚本未提供用于指定要安装哪个版本的 Docker 的选项,而是安装了在 edge 通道中发布的最新版本。
  • 如果已使用其他机制将 Docker 安装在主机上,请不要使用便捷脚本。

本示例使用 get.docker.com上的脚本在 Linux 上安装最新版本的Docker Engine-Community。要安装最新的测试版本,请改用 test.docker.com。在下面的每个命令,取代每次出现 get 用 test。

复制代码
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

验证安装

shell 复制代码
docker -v

配置镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

安装阿里云镜像加速器

访问阿里云官网,通过点击产品 -容器与中间件 -容器镜像服务-镜像加速器,找到镜像工具-镜像加速器,找到Ubuntu对应的Docker安装说明,

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

shell 复制代码
# 请在 vim /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://zdzuxfik.mirror.aliyuncs.com"
  ]
}
EOF

# 重新加载
sudo systemctl daemon-reload
# 之后重新启动服务:
sudo systemctl restart docker
# 查看日志
grep docker /var/log/syslog
tailf /var/log/messages

检查加速器是否生效

检查加速器是否生效配置加速器之后,如果拉取镜像仍然十分缓慢,请手动检查加速器配置是否生效,在命令行执行 docker info,如果从结果中看到了如下内容,说明配置成功。

sh 复制代码
docker info
docker info | grep "Registry Mirrors"
Registry Mirrors:
    https://reg-mirror.qiniu.com

指定使用代理下载镜像

shell 复制代码
docker pull registry.cn-hangzhou.aliyuncs.com/image_name:tag_name

常用命令

shell 复制代码
# 列出当前正在运行的容器
docker ps
# 列出所有容器,包括未运行的
docker ps -a
# 运行一个新容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 停止一个或多个正在运行的容器
docker stop CONTAINER [CONTAINER...]
# 强制停止一个或多个正在运行的容器
docker kill CONTAINER [CONTAINER...]
# 删除一个或多个容器
docker rm CONTAINER [CONTAINER...]
# 删除一个或多个镜像
docker rmi IMAGE [IMAGE...]
# 启动一个或多个已经被停止的容器
docker start CONTAINER [CONTAINER...]
# 重启容器
docker restart CONTAINER [CONTAINER...]
# 进入正在运行的容器
docker exec -it CONTAINER COMMAND
# 构建一个镜像
docker build -t IMAGE PATH
# 将当前目录的Dockerfile上下文发送给守护进程,并在那里构建镜像
docker build -t IMAGE .
# 拉取一个镜像或仓库
docker pull NAME[:TAG]
# 推送一个镜像或仓库到仓库
docker push NAME[:TAG]
# 查看镜像信息
docker inspect IMAGE|ID [OPTIONS]
# 查看容器信息
docker inspect CONTAINER [CONTAINER...]
# 查看Docker的守护进程状态
docker info
# 删除所有容器
docker container prune -f
# 删除所有未使用的镜像
docker image prune -a -f
# 清理不再使用的镜像、容器、网络和卷
docker system prune
docker system prune -a -f
# 查看Docker守护进程的日志
docker logs -f

Docker Compose安装

下载安装包

sh 复制代码
# 最新版本
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 指定版本v2.21.0
curl -L "https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

设置权限

sh 复制代码
chmod +x /usr/local/bin/docker-compose

设置软链

sh 复制代码
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功

sh 复制代码
docker-compose version

常用命令

shell 复制代码
# 列出由Compose管理的正在运行的容器
docker-compose ps
# 自动完成包括构建镜像,(重新)创建服务,启动服务
docker-compose up
# 后台执行
docker-compose up -d
# 启动指定组件
docker-compose up mysql
docker-compose up -d my_service
# 此命令将会停止 up 命令所启动的容器,并移除网络
docker-compose down 
# -v删除所有卷的选项
docker-compose down -v
# 将根据 docker-compose.yml 文件中的 build 部分 重构所有服务的镜像。
docker-compose build
# 使用 --build 参数将重新构建服务的镜像,然后启动服务。
docker-compose up --build
# 重启所有服务
docker-compose restart
docker-compose start
docker-compose stop

示例

前端Dockerfile示例

node历史版本安装网址

node-sass和node版本

ini 复制代码
node版本: 16.13.2
node-sass版本: cnpm i [email protected] -S
sass-loader版本: cnpm i [email protected] -S

node版本: 12.16.0
node-sass版本: cnpm i [email protected] -S
sass-loader版本: cnpm i [email protected] -S

更换淘宝镜像
yarn config set registry https://registry.npmmirror.com
npm install -g cnpm --registry=https://registry.npmmirror.com
npm config set registry https://registry.npmmirror.com

Dockerfile

dockerfile 复制代码
# 打包
FROM node:16.17.1 as build-stage

RUN mkdir /opt/easy-admin
WORKDIR /opt/easy-admin

COPY /easy-admin/package.json /opt/easy-admin/package.json

RUN yarn config set registry https://registry.npmmirror.com
RUN yarn config set ignore-engines true
RUN yarn install

COPY /easy-admin /opt/easy-admin

RUN npm run build

# 部署nginx
FROM nginx:1.25.2 as production-stage

COPY --from=build-stage /opt/easy-admin/dist /opt/dist
# 替换配置文件
RUN rm /etc/nginx/conf.d/default.conf
RUN rm /etc/nginx/nginx.conf
COPY /docker/nginx.conf /etc/nginx/

CMD ["nginx", "-g", "daemon off;"]

nginx.conf

nginx 复制代码
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include  /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile    on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen  8088;
        charset utf-8;
        server_name  localhost;
        root /opt/dist;
        index index.html;
        location / {
           try_files $uri $uri/ /index.html;
        }
   }
}
相关推荐
小锋学长生活大爆炸30 分钟前
【教程】Docker更换存储位置
运维·docker·容器
川石教育4 小时前
测试工程师如何学会Kubernetes(k8s)容器知识
云原生·容器·kubernetes·kubernetes容器·kubernetes教程
THMAIL6 小时前
mac M芯片运行docker-desktop异常问题
macos·docker·容器
两点王爷8 小时前
IDEA中springboot项目中连接docker
spring boot·docker·intellij-idea
家庭云计算专家8 小时前
还没用过智能文档编辑器吗?带有AI插件的ONLYOFFICE介绍
服务器·人工智能·docker·容器·编辑器
云手机管家10 小时前
CDN加速对云手机延迟的影响
运维·服务器·网络·容器·智能手机·矩阵·自动化
孤的心了不冷10 小时前
【Docker】CentOS 8.2 安装Docker教程
linux·运维·docker·容器·eureka·centos
头疼的程序员11 小时前
docker学习与使用(概念、镜像、容器、数据卷、dockerfile等)
学习·docker·容器
IT小郭.11 小时前
使用 Docker Desktop 安装 Neo4j 知识图谱
windows·python·sql·docker·知识图谱·database·neo4j
淡水猫.11 小时前
hbit资产收集工具Docker(笔记版)
运维·docker·容器