侧边栏壁纸
博主头像
乐子小窝 博主等级

人生如梦,安于此时此刻,享受美好,乐在其中。

  • 累计撰写 8 篇文章
  • 累计创建 13 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker安装及常用命令

乐子
2024-12-20 / 0 评论 / 0 点赞 / 10 阅读 / 0 字

Docker安装及常用命令

部署Docker

CentOS

# 移除旧版本docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

# 配置docker yum源。
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


# 安装 最新 docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 启动& 开机启动docker; enable + start 二合一
systemctl enable docker --now

# 配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://registry.dockermirror.com"
    ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Ubuntu

更新软件包列表。

sudo apt update

安装Docker所需依赖包。

sudo apt-get -y install ca-certificates curl

创建/etc/apt/keyrings目录,并下载Docker的官方GPG密钥到该目录。

sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

将Docker仓库添加到系统的软件源列表。

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新软件包列表。

sudo apt update

安装Docker。

sudo apt-get install -y docker-ce docker-ce-cli containerd.io

查看docker版本信息。

docker -v

如下图回显信息所示,表示Docker已安装成功。

img

启动Docker守护进程并设置开机自启动。

  • 执行以下命令,启动Docker服务,并设置开机自启动。
sudo systemctl start docker
sudo systemctl enable docker
  • 执行以下命令,查看Docker是否启动。
sudo systemctl status docker
镜像加速器镜像加速器地址
Docker 中国官方镜像https://registry.docker-cn.com
DaoCloud 镜像站http://f1361db2.m.daocloud.io
Azure 中国镜像https://dockerhub.azk8s.cn
科大镜像站https://docker.mirrors.ustc.edu.cn
阿里云https://ud6340vz.mirror.aliyuncs.com
七牛云https://reg-mirror.qiniu.com
网易云https://hub-mirror.c.163.com
腾讯云https://mirror.ccs.tencentyun.com

"registry-mirrors": ["https://registry.docker-cn.com"]

Docker基本操作

Docker进程管理

启动Docker守护进程

sudo systemctl start docker

查看Docker的运行状态

sudo systemctl status docker

停止Docker守护进程

sudo systemctl stop docker

重启Docker守护进程

sudo systemctl restart docker

设置Docker开机自启动

sudo systemctl enable docker
#查看运行中的容器
docker ps
#查看所有容器
docker ps -a
#搜索镜像
docker search nginx
#下载镜像
docker pull nginx
#下载指定版本镜像
docker pull nginx:1.26.0
#查看所有镜像
docker images
#删除指定id的镜像
docker rmi e784f4560448


#运行一个新容器
docker run nginx
#停止容器
docker stop keen_blackwell
#启动容器
docker start 592
#重启容器
docker restart 592
#查看容器资源占用情况
docker stats 592
#查看容器日志
docker logs 592
#删除指定容器
docker rm 592
#强制删除指定容器
docker rm -f 592
# 后台启动容器
docker run -d --name mynginx nginx
# 后台启动并暴露端口
docker run -d --name mynginx -p 80:80 nginx
# 进入容器内部
docker exec -it mynginx /bin/bash

# 提交容器变化打成一个新的镜像
docker commit -m "update index.html" mynginx mynginx:v1.0
# 保存镜像为指定文件
docker save -o mynginx.tar mynginx:v1.0
# 删除多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448
# 加载镜像
docker load -i mynginx.tar 


# 登录 docker hub
docker login
# 重新给镜像打标签
docker tag mynginx:v1.0 leifengyang/mynginx:v1.0
# 推送镜像
docker push leifengyang/mynginx:v1.0

Docker镜像管理

本文以阿里云仓库的Apache镜像为例,介绍如何使用Docker管理镜像。

拉取镜像。

sudo docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

修改标签。如果镜像名称较长,您可以修改镜像标签以便记忆区分。

sudo docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1

查看已有镜像。

sudo docker images

强制删除镜像。

sudo docker rmi -f registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

Docker容器管理

重要

下文的<镜像ID>可通过docker images命令查询。

如果您要在容器内部运行相关命令,您可以通过在容器中运行cat /etc/os-release提前确认您的容器操作系统类型及版本,以便使用合适的命令来完成您的操作。

启动一个容器。

您可以通过守护模式或者交互模式启动一个容器。

说明

  • 使用守护模式启动的容器,退出容器后容器会保持运行状态。
  • 使用交互模式启动的容器,退出容器后容器状态会变成Exited,您可以使用sudo docker start <容器ID>命令使容器恢复运行状态。

使用守护模式启动容器

sudo docker run -d --name <容器名> <镜像ID>

使用交互模式启动容器

# 使用交互模式启动一个新容器。
sudo docker run -it <镜像ID> /bin/bash

查看容器ID。

sudo docker ps -a

启动停止状态的容器。

sudo docker start <容器ID>

在一个运行中的容器中执行命令。

sudo docker exec -it <容器ID> /bin/bash

说明

如果要退出容器,可以执行exit命令。

使用Docker制作镜像

本步骤指导如何通过Dockerfile定制制作一个简单的Nginx镜像。

执行以下命令,拉取镜像。本示例以拉取阿里云仓库的Apache镜像为例。

sudo docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

修改镜像名称标签,便于记忆。

sudo docker tag registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1

执行以下命令,新建并编辑Dockerfile文件。

  1. 执行以下命令,新建并编辑Dockerfile文件。
vim Dockerfile
  1. i进入编辑模式,并添加以下内容,改造原镜像。
#声明基础镜像来源。
FROM aliweb:v1
#声明镜像拥有者。
MAINTAINER DTSTACK
#RUN后面接容器运行前需要执行的命令,由于Dockerfile文件不能超过127行,因此当命令较多时建议写到脚本中执行。
RUN mkdir /dtstact
#开机启动命令,此处最后一个命令需要是可在前台持续执行的命令,否则容器后台运行时会因为命令执行完而退出。
ENTRYPOINT ping www.aliyun.com
  1. Esc键,输入:wq并按Enter键,保存并退出Dockerfile文件。

执行以下命令,基于基础镜像nginx构建新镜像。

命令格式为docker build -t <镜像名称>:<镜像版本> .命令末尾的**.****表示Dockerfile文件的路径,不能忽略。**以构建新镜像aliweb:v2为例,则命令为:

sudo docker build -t aliweb:v2 .

执行以下命令,查看新镜像是否构建成功。

sudo docker images 

如下图回显所示,表示构建成功。

安装并使用docker-compose

docker-compose是Docker官方提供的用于定义和运行多个Docker容器的开源容器编排工具,可以使用YAML文件来配置应用程序需要的所有服务,然后使用docker-compose运行命令解析YAML文件配置,创建并启动配置文件中的所有Docker服务,具有运维成本低、部署效率高等优势。

关于docker-compose的更多信息,请参见Docker官网

重要

仅Python 3及以上版本支持docker-compose,并请确保已安装pip。

安装docker-compose

运行以下命令,安装setuptools。

sudo pip3 install -U pip setuptools

运行以下命令,安装docker-compose。

sudo pip3 install docker-compose

运行以下命令,验证docker-compose是否安装成功。

docker-compose --version

如果回显返回docker-compose版本信息,表示docker-compose已安装成功。

使用docker-compose部署应用

下文以部署WordPress为例,介绍如何使用docker-compose部署应用。

创建并编辑docker-compose.yaml文件。

  1. 运行以下命令,创建docker-compose.yaml文件。
sudo vim docker-compose.yaml
  1. (可选)配置镜像加速服务。

由于运营商网络原因,会导致您拉取Docker Hub镜像变慢,甚至下载失败。您可以使用阿里云容器镜像服务ACR提供的官方镜像加速器,加速官方镜像的下载。具体操作,请参见官方镜像加速

  1. 按下i键,进入编辑模式,新增以下内容。

本示例以安装WordPress为例。

version: '3.1'             # 版本信息

services:

  wordpress:               # 服务名称         
    image: wordpress       # 镜像名称
    restart: always        # docker启动,当前容器必启动
    ports:
      - 80:80              # 映射端口
    environment:           # 编写环境
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: 123456
      WORDPRESS_DB_NAME: wordpress
    volumes:               # 映射数据卷
      - wordpress:/var/www/html

  db:                      # 服务名称    
    image: mysql:5.7       # 镜像名称
    restart: always        # docker启动,当前容器必启动
    ports:
       - 3306:3306         # 映射端口
    environment:           # 环境变量
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: 123456
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:               # 卷挂载路径
      - db:/var/lib/mysql

volumes:
  wordpress:
  db:
  1. 按下Esc键,退出编辑模式,然后输入:wq保存并退出。

执行以下命令,启动应用。

sudo env "PATH=$PATH" docker-compose up -d

docker-compose指令

#在docker-compose.yml 文件所在目录,执行:docker-compose up就可以跑起来了。
docker-compose up
#命令参考:https://docs.docker.com/compose/reference/up/
#在后台运行只需要加一个 -d 参数
docker-compose up -d
#查看运行状态:
docker-compose ps
#停止运行:
docker-compose stop
#重启:
docker-compose restart
#重启单个服务:
docker-compose restart service-name
#进入容器命令行:
docker-compose exec service-name sh
#查看容器运行log:
docker-compose logs [service-name]
0

评论区