Docker学习(上)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Docker学习

我的docker环境

Ubuntu 20.04.6 LTS

替换apt软件包镜像源

修改/etc/apt/source.list中所有的

http://cn.archive.ubuntu.com/ubuntu

->

https://mirrors.tuna.tsinghua.edu.cn/ubuntu

cd /etc/apt
# 备份文件
cp source.list source.list.package
# 替换镜像源
sed -i 's/http:\/\/cn\.archive\.ubuntu\.com\/ubuntu\//https:\/\/mirrors\.tuna\.tsinghua\.edu\.cn\/ubuntu\//g' source.list

docker安装

apt包管理器安装docker

sudo apt install docker.io
卸载

如果要卸载

sudo apt-get purge docker.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

docker官方存储库安装

  1. 更新 apt 包索引,并且安装一些软件使得apt可以通过HTTPS协议访问软件库。
sudo apt-get update
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
  1. 添加docker官方的GPG秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  1. 设置一个标准的docker软件仓库。
# 会在/etc/apt/source.list.d/添加一个叫docker.list的文件
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/dockerarchive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  1. 更新apt 包索引并查看docker 可用版本列表
sudo apt-get update
apt-cache madison docker-ce
  1. 安装docker
  1. 安装特定版本docker语法,例如:5:24.0.2-1~ubuntu.18.04~bionic
sudo apt-get install docker-ce=<VERSION_STRING> \
docker-ce-cli=<VERSION_STRING> \
containerd.io=<VERSION_STRING> \
docker-compose-plugin=<VERSION_STRING>
  1. 使用具体版本号代替
sudo apt-get install docker-ce=5:24.0.5-1~ubuntu.20.04~focal \
docker-ce-cli=5:24.0.5-1~ubuntu.20.04~focal \
containerd.io=1.6.21-1 \
docker-compose-plugin=2.20.2-1~ubuntu.20.04~focal
  1. 或者直接安装最新版docker-ce及相关软件
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 检查docker engine是否安装正确
sudo docker run hello-world
卸载
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

删除相关目录

sudo rm -rf /var/lib/docker && sudo rm -rf /var/lib/containerd && sudo rm -rf /etc/docker/

添加某用户到docker

为了不让每次输入docker指令都输入sudo

我们讲用户添加到docker

// 将用户从docker用户组中移除 gpasswd -d <username> docker
// 将用户添加到docker 用户组
sudo addgroup -a <username> docker
sudo service docker restart
// 查看用户信息
id <username>

配置docker镜像

/etc/docker/daemon.json添加镜像源

{
 "registry-mirrors": [
  "https://hub-mirror.c.163.com",
  "https://docker.mirrors.ustc.edu.cn",
  "https://registry.docker-cn.com"
 ]
}

docker命令学习

操作守护进程相关命令

systemctl 操作 docker
systemctl enable docker # 开机启动docker

操作镜像相关命令

查看镜像

docker images
docker images -q  # 显示所有的镜像id
REPOSITORY TAG IMAGE ID CREATED SIZE
仓库(镜像名称) 版本 镜像id(删除时会用) 创建时间 大小

搜索镜像

docker search xxxx

在网络上搜索镜像包

拉取镜像

docker pull redis:7.0
  • 可以指定版本也可以不指定,不指定的话默认latest

删除镜像

docker rmi redis
  • 可以写名称:版本,也可以写image id

操作容器相关命令

查看容器

docker ps

显示出正在运行的容器列表

docker ps -a

显示出历史所有运行过的容器列表

docker ps -aq

显示出所有历史运行过的容器列表id

创建容器

docker run -it --name=c1 redis:latest /bin/bash
  • -i表示保持容器运行,如果不加的话容器默认状态就为exit
  • -t为容器重新分配一个伪输入终端,exit后容器关闭
  • --name=xx分配名字
  • redis:latest指定镜像
  • /bin/bash进入容器的初始化指令
docker run --id --name=c2 redis:latest

返回容器id

  • -d以守护模式运行容器。创建一个容器在后台运行,使用exit退出后容器不会关闭

-it创建一个交互式容器,-id创建一个守护式容器

进入容器

docker exec -it c2 /bin/bash
  • 以交互的终端方式进入c2

启动容器

docker start c2
  • 启动exit状态的容器

停止容器

docker stop c2
  • 关闭已经启动的容器

删除容器

docker rm c1
  • 从容器列表中删除容器
docker rm `docker ps -aq`
  • 删除所有容器

查看容器信息

docker inspect c2

容器的数据卷

数据卷的概念以及作用

概念

宿主机上有数据卷目录,容器内部也有数据卷目录,容器内部的数据卷目录挂载的是宿主机上的数据卷目录。所以可以回答下面三个问题

  • docker容器删除后,在容器中产生的数据也会随之销毁吗
  • 相当于不挂载了,只要宿主数据卷还在就行
  • docker容器和外部机器可以直接交换文件吗
  • 外部机器与宿主的数据卷进行交互间接修改docker容器数据
  • 容器之间想要进行数据交互
  • 不同容器间挂载可以挂载同一个宿主数据卷

一个数据卷可以被多个容器挂载

一个容器可以挂载多个数据卷

Docker学习(下)+https://developer.aliyun.com/article/1416644

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
7月前
|
运维 虚拟化 开发者
Docker-全面详解(学习总结---从入门到深化)
Docker-全面详解(学习总结---从入门到深化)
122 1
|
7月前
|
分布式计算 Java Linux
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
Docker 是一套构建在 Linux 内核之上的高级工具,旨在帮助开发人员和运维人员更轻松地交付应用程序和依赖关系,实现跨系统和跨主机的部署。使用安全且轻量级的容器环境来实现这一目标。容器可以手动创建,也可以通过编写 Dockerfile 自动创建。开发人员和运维人员可以将应用程序及其依赖打包到容器中,实现应用程序的可移植性和环境一致性。
261 5
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
|
2月前
|
存储 Ubuntu Linux
学习docker
学习docker
35 1
|
2月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
320 3
|
2月前
|
运维 Kubernetes 开发者
Docker Swarm学习
【10月更文挑战第5天】
40 3
|
2月前
|
Kubernetes Linux 持续交付
docker容器学习
【10月更文挑战第1天】
41 1
|
3月前
|
存储 Ubuntu Docker
Docker学习
Docker学习
65 4
|
2月前
|
Linux 应用服务中间件 Shell
docker学习--docker容器镜像常用命令大全(简)
本文档详细介绍了Docker中的镜像命令与容器管理命令。镜像命令部分涵盖了镜像搜索、下载、上传等操作;容器管理命令则包括了容器的创建、启动、停止、删除及日志查看等功能。通过具体示例,帮助用户更好地理解和使用Docker相关命令。
179 0
|
2月前
|
Shell 应用服务中间件 nginx
docker学习--最详细的docker run 各子命令解释与应用
`docker run` 是 Docker 中用于启动容器的基本命令。常用子命令包括 `-i`(交互模式)、`-t`(分配终端)、`-d`(后台运行)、`-p`(端口映射)、`--name`(指定容器名)。例如,`docker run -it nginx:1.20 /bin/bash` 可以创建并进入交互式容器。使用 `-d` 可在后台运行容器,`-p` 可将容器端口映射到主机端口,`--name` 则用于自定义容器名称以便管理。
280 0
|
4月前
|
网络协议 Shell Docker
docker 学习之路
docker 学习之路
41 1