Docker 系列(二):Docker 基础

一. Docker 的安装

只推荐在 Linux 发行版或者 Mac 上安装 Docker,在 Windows 安装Docker,实际上是先装一个虚拟机,然后在虚拟机上安装docker,对配置要求太高,像我的 6.9GB内存根本不够看

官方Docs,非常齐全:https://docs.docker.com/engine/install


二. Docker 常用命令

善用万能命令 --help


1. 镜像基础命令

列出所有镜像

[root@undi ~]# docker images
Options:
  -a, --all             显示所有镜像(默认会省略中间的)
      --digests         显示摘要
  -q, --quiet           只显示镜像的ID

拉取镜像

不填版本会默认是最终版 latest

[root@undi ~]# docker pull nginx:latest
  -a, --all-tags                从仓库里下载所有版本

删除镜像

这两个其实是同一个命令

docker rmi 镜像名:版本
或者
docker image rm 镜像名:版本

2. 容器基础命令

查看所有容器

 docker ps -a
 或者
 docker container ls -a

启动容器

[root@undi ~]# docker run -u root --rm -p 8080:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docke.sock jenkinsci/blueocean

命令详解:

  1. -u root:指定容器的用户为root
  2. --rm:当容器停止时自动删除容器,不支持与 -d 参数同时使用
  3. -p 8080:8080:将宿主机的8080端口映射到容器的8080端口上,这样访问宿主机的8080端口就会直接访问到该容器的8080端口
  4. -v jenkins-data:/var/jenkins_home-v 挂载容器数据卷,将容器内的 /var/jenkins_home 目录,挂载到宿主机的 jenkins-data 目录 ,相对路径代表着 docker 的默认挂载目录 /var/lib/docker/volumes/
  5. jenkinsci/blueocean:镜像名
  6. 想要容器在后台运行加 -d 参数即可

停止容器

[root@undi ~]# docker stop redis
Options:
  -t, --time int   设置一个时间,在这个时间后停止该容器

恢复停止的容器

[root@undi ~]# docker start redis
Options:
  -a, --attach               -a参数带上了的话,那么会把pid1程序的输出都带到终端上
  -i, --interactive          -i参数是为了让容器响应输入,作用其实和run中的-i一样。

进入容器

[root@undi ~]# docker exec -it nginx bash
Options:
  -i, --interactive          让容器响应输入
  -t, --tty                  建立一个TTY,让我们可以输入命令
  -u, --user string          进入的用户身份

删除容器

[root@undi ~]# docker rmi nginx
Options:
  -f, --force      强制删除,不管容器在不在运行

三. 数据卷

1. 简介

什么是数据卷, 为什么要使用数据卷?

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性,类似与 Linux 系统的挂载机制:

  • 数据卷 可以在容器之间共享和重用
  • 数据卷 的修改会立马生效
  • 数据卷 的更新,不会影响镜像
  • 数据卷 默认会一直存在,即使容器被删除

Docker 默认挂载目录为 /var/lib/docker/volumes, 没有在创建的时候给他命名的话 Docker 会随便给他个名字,指定名字的话会在该目录下生成一个文件夹,挂载到指定容器的指定目录上,当然也可以任意指定文件夹来挂载的。


2. 操作数据卷

创建数据卷

[root@undi ~]# docker volume create my-volume
my-volume

该操作直接在默认挂载目录上生成一个数据卷 my-volume


查看所有的数据卷

[root@undi ~]# docker volume ls
DRIVER              VOLUME NAME
local               2375a26b0a92ca6923a9487c21b4cb017f017f33c5358a7177860ac9df167014
local               my-volume

长 ID 的数据卷是容器启动时,没有显式挂载的卷,docker 给他们分配了一长串的 ID


查看数据卷的信息

[root@undi ~]# docker volume inspect my-volume
[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/my-volume/_data",
        "Name": "my-volume",
        "Options": {},
        "Scope": "local"
    }
]

启动一个容器并挂载到已有的数据卷上

下面的命令会启动一个名为 web 的 nginx 容器,并将刚才创建的 my-volume 数据卷挂载到容器内的 /webapp 目录,如果数据卷不存在就会自动创建。

$ docker run -d -P --name web \
    -v my-volume:/webapp \
    nginx 

删除数据卷

[root@undi volumes]# docker volume rm my-volume
my-volume

欢迎指正,转载请注明出处
首次发布时间 2020-06-03
最后更新时间 2020-06-02

基于Halo 搭建的个人博客:https://undivided.top
不太想用但是流量很 HI 多的 CSDN
我的简书

你可能感兴趣的:(Docker)