初识docker

初识docker

1. 安装docker

Linux 复制代码
 sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common && curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" && sudo apt-get update && sudo apt-get install -y docker-ce                     

查看docker版本
docker -v

2. 启动docker

Linux 复制代码
 systemctl start docker
 systemctl status docker
 systemctl restart docker
 systemctl stop docker

启动docker之前,最好将防火墙关闭,为后期访问docker中部署的服务做准备
sudo ufw disable
sudo ufw status

3. 配置镜像加速器

Linux 复制代码
## 为后期快速下载docker镜像做准备,以阿里云镜像站举例
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://mlbe5lel.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

阿里云配置详情

4.docker基本操作

镜像操作

镜像的命名

  • 镜像名称一般分两部分组成:[repository]:[tag]。例:MySQL:5.7
  • 在没有指定tag时,默认是Latest,代表最新版本的镜像

镜像操作命令

Linux 复制代码
docker images  #查看镜像
docker rmi   #删除镜像
docker pull  #拉取镜像,从镜像服务器或者私服
docker push  #推送镜像到镜像服务器
docker bvild #使用本地文件去构建镜像
docker save  #保存镜像为一个压缩包
docker load  #加载压缩包为镜像

命令举例

Linux 复制代码
docker pull nginx   #拉取Nginx镜像
docker images  #查看镜像拉取是否成功
docker save -o nginx.tar nginx:latest
# 将Nginx镜像保存成压缩包 Nginx.tar
docker rmi nginx:latest
#将拉取的Nginx镜像删除
docker load -i nginx.tar
# 加载Nginx.tar的镜像

容器操作

Linux 复制代码
docker run #创建容器(运行状态)
docker start #运行容器
docker stop #停止容器
docker pause #暂停容器
docker unpause #恢复暂停的容器
docker Logs #查看容器运行日志
docker ps  #查看所有运行的容器及状态
docker ps -a #可以查看没有运行的容器状态
docker exec #进入容器执行命令
docker rm #删除指定容器
docker rm -f #强制删除指定容器

docker logs -f container1
添加-f参数可以持续查看日志

命令举例

  1. 创建运行一个Nginx容器
Linux 复制代码
docker run --name container1 -p 80:80 -d nginx

命令解读:

  • docker run:创建并运行一个容器
  • -name:给容器起一个名字,比如叫做container1
  • -p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx
  • 创建容器之后,生成容器的ID,显示出来
  1. 进入Nginx容器,修改HTML文件内容。
Linux 复制代码
docker exec -it container1 bash

命令解读:

  • docker exec:进入容器内部,执行一个命令
  • -it:给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • container1:要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个inux终端交互命令
    修改文件内容
Linux 复制代码
cd /usr/share/nginx/html/
apt-get update
apt-get install vim -y 
或者
sed -i -e 's#Welcome to nginx#初识docker#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

exit 可以退出容器

Linux 复制代码
exc命令可以进入容器修改文件,但是在容器内修改文件是不推荐的

数据卷(容器数据管理)

  1. 数据卷操作的基本语法
Linux 复制代码
docker volume create 创建一个volume
docker volume inspect 显示一个或多个volume的信息
docker volume prune  删除未使用的volume
docker volume ls 列出所有的volume
docker volume rm 删除一个或多个指定的volume

操作举例

Linux 复制代码
docker volume create trick
创建数据卷
docker volume ls
查看所有数据卷
docker volume inspect trick
查看数据卷详细信息
  1. 数据卷挂载
  • 基本语法
Linux 复制代码
-v html::root/htm:把html数据卷挂载到容器内的/root/html这个目录中
  • 操作举例

    新创建一个容器,将html数据卷挂载到/usr/share/nginx/html目录中

Linux 复制代码
docker run --name trick -p 80:80 -v html:/usr/share/nginx/html -d nginx

如果没有创建html数据卷,使用上述命令也是可以的,docker会自动创建数据卷
/usr/share/nginx/html 是Nginx镜像中的HTML所在目录
可以在https://hub-stage.docker.com/_/nginx 查到
然后,通过docker volume inspect html 目录查看数据卷的挂载点。

就可以进入这个目录,去修改index.html文件(实现了没有进入容器去修改容器里面的文件)

  • 将宿主机的目录或文件挂载到容器
Linux 复制代码
-V [宿主机目录][容器内目录]
-V「宿主机文件][容器内文件]

案例:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

  • 1.拉取MySQL的镜像
  • 2.创建目录/tmp/mygl/data
  • 3.创建目录/tmp/myql/conf,将准备的MySQL配置文件hmy.cnf文件使用远程工具上到/tmp/mygl/conf
  • 4.去DockerHub查阅资料,创建并运行MySQL容器,要求:
    • 挂载/tmp/myql/data到mysql容器内数据存储目录
    • 挂载/tmp/myql/conf/hmy.cnf到mysql容器的配置文件
    • 设置MySQL密码
Linux 复制代码
docker pull mysql

mkdir -p /tmp/mysql/data
mkdir -p /tmp/mysql/conf

docker run --name mysql -e MYSQL_ROOT_PASSWORD=密码 -p 3306:3306 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data/:/var/lib/mysql -d mysql

## -e : 环境变量

测试

连接成功

相关推荐
饺子大魔王的男人14 分钟前
Docker环境下FileRise私有云盘在飞牛NAS的部署与穿透实践
运维·docker·容器
lyh134418 分钟前
【Ubuntu崩溃修复】
linux·运维·服务器
不爱学英文的码字机器1 小时前
持续交付的进化:从DevOps到AI驱动的IT新动能
运维·人工智能·devops
什么半岛铁盒1 小时前
【Linux系统】Linux环境变量:系统配置的隐形指挥官
linux
Lw老王要学习2 小时前
Linux容器篇、第一章_02Rocky9.5 系统下 Docker 的持久化操作与 Dockerfile 指令详解
linux·运维·docker·容器·云计算
橙子小哥的代码世界2 小时前
【大模型RAG】Docker 一键部署 Milvus 完整攻略
linux·docker·大模型·milvus·向量数据库·rag
斯普信专业组3 小时前
Kafka主题运维全指南:从基础配置到故障处理
运维·分布式·kafka
倔强的石头1063 小时前
【Linux指南】用户与系统基础操作
linux·运维·服务器
云上艺旅3 小时前
centos升级内核
linux·运维·centos
kaikaile19953 小时前
centos开启samba服务
linux·运维·centos