Docker基础知识与操作的学习
  NVfhk7UYFq4p 2023年11月28日 26 0

Docker是一个快速构建,运行,管理应用的工具

传统基于linux安装程序较为复杂繁琐,使用docker可以

docker 无权限问题

报错:

[yichen@bogon ~]$ docker images

permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/json": dial unix /var/run/docker.sock: connect: permission denied

解决命令:

sudo chown root:docker /var/run/docker.sock # 修改docker.sock权限为root:docker

sudo groupadd docker # 添加docker用户组

sudo gpasswd -a $USER docker # 将当前用户添加至docker用户组

newgrp docker

docker run -d \ #
    --name mysql \
    -p 3306:3306 \
    -e TZ=Asia/Shanghai \
    -e MYSQL_ROOT_PASSWORD=ctrl \
    mysql

通过这样一个命令就能实现mysql的下载直接到运行


Docker进行安装应用时,会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包括应用所运行的环境,配置,系统函数库,Docker在运行景象时会创建一个隔离环境,称为容器(container)

只要安装好了docker,docker的镜像能够忽略操作系统的差异直接进行部署运行,因为所有跟系统,环境相关的部分,docker镜像中都是包含的

不同的容器之间是相互隔离的,不会相互产生影响,也不会因为需求不同的环境出现问题


命令解读

docker run -d \ #
    --name mysql \
    -p 3306:3306 \
    -e TZ=Asia/Shanghai \
    -e MYSQL_ROOT_PASSWORD=ctrl \
    mysql
  • docker run:创建并运行一个容器,-d让容器在后台运行
  • --name : 为容器起名,必须唯一
  • -p 3306:3306:设置端口映射 前者为宿主机端口,后者为容器内端口
  • -e KEY=Value : 设置环境变量,具体参数可以查看镜像官方文档
  • mysql : 指定运行的镜像名
  • 镜像名一般由两部分组成:[repository]:[tag]
  • repository为镜像名
  • tag为镜像版本
  • 如果不写名称,默认为最新版本

Docker基础知识与操作的学习_docker

docker save -o nginx.tar nginx

将镜像保存为其他文件

-o 想要得到的文件名 镜像名

docker load -i nginx.tar

将其他类型文件加载为镜像

-i 想要加载的文件名

docker rmi 镜像名

移除镜像

docker rm 容器名

移除容器

docker exec 容器名

进入容器

docker ps --format 格式参数

可以进行简化

查看容器


给常用Docker命令起别名,方便我们访问:

# 修改/root/.bashrc文件
vi /root/.bashrc
内容如下:
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

然后,执行命令使别名生效

source /root/.bashrc

数据卷

数据卷(volume)是一个虚拟目录,是容器内目录宿主机目录之间映射的桥梁

因为容器是对外隔离的,想要修改容器内文件需要进入到容器内部,但容器内的环境和函数库是精简到极致的,所以操作不方便。

使用数据卷与主机文件系统的目录进行映射,然后再使数据卷与容器内部的文件目录进行挂载

docker就实现了宿主机目录和容器内目录的双向绑定,在其中一侧所进行的操作都会在另一侧映射出来

Docker基础知识与操作的学习_mysql_02

数据卷挂载,在执行docker run命令时,使用-v 数据卷:容器内目录 可以完成数据卷挂载

当创建容器时,如果挂载了数据卷且数据卷不存在,会自动创建数据卷

如果创建容器时没有完成数据卷挂载,就无法再进行挂载了


容器的挂载还有第二种方式,即基于本地目录直接挂载

语法与数据卷挂载类似,区别在于-v参数之后不写数据卷,直接写本地目录即可


Docker基础知识与操作的学习_docker_03

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月28日 0

暂无评论

推荐阅读
NVfhk7UYFq4p