四时宝库

程序员的知识宝库

Docker常用命令分享(docker命令详解)

#头条创作挑战赛#

一、Docker是什么?

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 版本开始,则进一步演进为使用 runC 和 containerd。

镜像:

Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。

容器:

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学 Docker 时常常会混淆容器和虚拟机。

仓库:

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个 仓库(Repository);每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。

二、Docker常用命令(Docker安装MySQL)

  1. 拉取镜像
docker pull mysql:8.0
  1. 查询镜像列表
docker images
  1. 删除镜像
docker rmi mysql:8.0
  1. 运行容器
docker run --restart=always \
--name mysql \
--privileged=true \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/log:/var/log \
-v /data/mysql/mysql-files:/var/lib/mysql-files \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD='123456' \
-d mysql:8.0

运行参数:

  • --restart=always:docker运行后自动启动
    • no:容器退出时不重启
    • on-failure:容器故障退出(返回值非零)时重启
    • always:容器退出时总是重启
  • --name:指定容器名字,后续可以通过名字进行容器管理
  • --privileged=true
    • privileged关键字是docker 0.6版本中引入
    • 使用该参数container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
    • privileged启动的容器,可以看到很多host上的设备,且可以执行mount
    • 用于Docker应用容器获取宿主机root权限(特殊权限),如:挂载目录时,需要加入此关键字
  • -v:映射宿主机资源到容器内部
  • -p:指定宿主机端口号和容器内部端口号(宿主机:容器内部)
  • -e:指定环境变量,容器中可以使用该环境变量
  • -d:指定镜像
  • -net="bridge", 容器网络设置:
    • bridge 使用docker daemon指定的网桥
    • host //容器使用主机的网络
    • container:NAME_or_ID >//使用其他容器的网路,共享IP和PORT等网络资源
    • none 容器使用自己的网络(类似--net=bridge),但是不进行配置
  1. 查询正在进行的容器
docker ps
  1. 查询所有容器
docker ps -a
  1. 启动容器
docker start mysql
  1. 停止容器
docker stop mysql
  1. 重启容器
docker restart mysql
  1. 删除容器
docker rm mysql
  1. 强制删除正在运行的容器
docker rm -f mysql
  1. 查询容器运行日志
docker logs -f mysql
  1. 进入容器内部
docker exec -it mysql bash

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接