Docker的安装与使用

目录

CentOS7中安装Docker

操作镜像

查找镜像

方式一

方式二

获取镜像

使用国内镜像仓库

列出本地镜像

查看镜像

删除镜像

推送镜像到Registry仓库

操作容器

启动容器

守护式容器

列出容器

查看容器

重启容器

停止容器

方式一

方式二

重连运行中的容器

查看容器日志

查看容器内运行的进程

在容器内启动新的进程

删除容器


CentOS7中安装Docker

安装前检查:

# 查看系统内核版本
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

# 检查Device-Mapper存储驱动
[root@localhost ~]# ls -l /sys/class/misc/device-mapper/
total 0
-r--r--r-- 1 root root 4096 Nov 27 16:00 dev
drwxr-xr-x 2 root root    0 Jun  6 11:37 power
lrwxrwxrwx 1 root root    0 Nov 27 16:00 subsystem -> ../../../../class/misc
-rw-r--r-- 1 root root 4096 Nov 27 16:00 uevent

# rpm查看是否已经安装Docker
[root@localhost ~]# rpm -qi docker
package docker is not installed

CentOS7 系统 CentOS-Extras 库中已带 Docker,可以直接安装:

# 安装docker
[root@localhost ~]# yum -y install docker

# 卸载已经安装的docker版本
[root@localhost ~]# yum -y remove docker

安装完成之后,启动 Docker 服务,并设置成开机自启动。

# 启动Docker
[root@localhost ~]# systemctl start docker

# 重启Docker
[root@localhost ~]# systemctl restart docker

# 停止Docker
[root@localhost ~]# systemctl stop docker

# 设置Docker开机自启动
[root@localhost ~]# systemctl enable docker
# 查看Docker详细信息
[root@localhost ~]# docker info

操作镜像

查找镜像

方式一

通过 Docker Hub官网查找镜像;

方式二

使用 docker search 命令查找镜像;

# 命令语法
docker search [ options ] term

# 命令参数
# --filter , -f 按照条件对查询结果进行过滤
# --limit=25 最多返回镜像的数量
# --no-trunc=false,是否截断显示镜像ID

# 例:查找自动化构建的、非官方版本的、星数大于3的 Ubuntu 镜像
docker search --filter "is-automated=true" --filter "is-official=false" --filter "stars=3" --no-trunc ubuntu
INDEX       NAME                                                                DESCRIPTION                                                                                          STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/dorowu/ubuntu-desktop-lxde-vnc                            Docker image to provide HTML5 VNC interface to access Ubuntu LXDE and LXQt desktop environment       365                  [OK]

下面是通过 centos 关键字搜索到的内容:

[root@localhost ~]# docker search centos
INDEX       NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/centos                             The official build of CentOS.                   5699      [OK]       
docker.io   docker.io/ansible/centos7-ansible            Ansible on Centos7                              126                  [OK]
docker.io   docker.io/jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos ...   114                  [OK]
docker.io   docker.io/consol/centos-xfce-vnc             Centos container with "headless" VNC sessi...   100                  [OK]
docker.io   docker.io/centos/mysql-57-centos7            MySQL 5.7 SQL database server                   64                   
docker.io   docker.io/imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              57                   [OK]
docker.io   docker.io/tutum/centos                       Simple CentOS docker image with SSH access      44  

可以看到返回了很多包含 centos 关键字的镜像,其中包括镜像名字、描述、星级(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建。 官方的镜像说明是官方项目组创建和维护的,automated 资源允许用户验证镜像的来源和内容。

根据是否是官方提供,可将镜像资源分为两类。 一种是类似 centos 这样的基础镜像,被称为基础或根镜像。这些基础镜像是由 Docker 公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。 还有一种类型,比如最后一个 tutum/centos 镜像,它是由 Docker 的用户创建并维护的,往往带有用户名称前缀。可以通过前缀 user_name/ 来指定使用某个用户提供的镜像,比如 tutum 用户。

获取镜像

Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub 公共注册服务器中的仓库)。

获取镜像使用 docker pull 命令 。

# 命令语法
docker pull [ options ] name [:tag]

# 命令参数
# --all-tags , -a 下载该仓库中所有标记的镜像
# --disable-content-trust=true 跳过镜像检查
# --quiet , -q 屏蔽输出详细内容,仅显示下载镜像的ID

# 例:下载 Ubuntu 14.04 镜像
[root@localhost ~]# docker pull ubuntu:14.04
Trying to pull repository docker.io/library/ubuntu ... 
14.04: Pulling from docker.io/library/ubuntu
a7344f52cb74: Pull complete 
515c9bb51536: Pull complete 
e1eabe0537eb: Pull complete 
4701f1215c13: Pull complete 
Digest: sha256:2feffff9eeca4e736f9f8e57813a97fe930554f474f7795ffa5a9261adeaaf44
Status: Downloaded newer image for docker.io/ubuntu:14.04

# 镜像拉取完成,使用docker images 命令查看镜像的标签
[root@localhost ~]# docker images ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/ubuntu    14.04               d5e7f166b406        32 hours ago        197 MB
docker.io/ubuntu    12.04               5b117edd0b76        2 years ago         104 MB

通过 docker pull 命令下载的镜像文件以及将来启动的容器的相关文件默认都会保存到 /var/lib/docker/ 下的相应目录中。

[root@localhost ~]# ls -l /var/lib/docker/
total 4
drwx------.  2 root root    6 Nov 25 01:41 containers
drwx------.  3 root root   22 Nov 25 01:41 image
drwxr-x---.  3 root root   19 Nov 25 01:41 network
drwx------. 43 root root 4096 Nov 28 03:36 overlay2
drwx------.  4 root root   32 Nov 25 01:41 plugins
drwx------.  2 root root    6 Nov 25 01:41 swarm
drwx------.  2 root root    6 Nov 28 03:42 tmp
drwx------.  2 root root    6 Nov 25 01:41 trust
drwx------.  2 root root   25 Nov 25 01:41 volumes

使用国内镜像仓库

docker pull 默认会从官方仓库下载镜像,由于是国外站点,下载速度缓慢,所以建议改用国内镜像仓库来提高下载速度。

配置步骤:

1. 编辑文件 /etc/docker/daemon.json,如果文件不存在就新建一个,加入以下配置项:

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

或者,使用DaoCloud 镜像站,Linux 推荐通过执行以下命令来完成配置。

 2. 重启Docker守护进程。

systemctl restart docker

 3. 使用 docker info 命令查看配置是否生效。

[root@localhost ~]# docker info
...
Registry Mirrors:
 http://f1361db2.m.daocloud.io
...

列出本地镜像

使用 docker images 命令查看从远程仓库下载到本地的镜像,包括其tag信息。

# 命令语法
docker images [ options ] [ repository [ :tag ] ]

# 命令参数
# --all , -a 展示所有镜像(默认会隐藏中间层镜像)
# --filter , -f=[] 按照条件对查询结果进行过滤
# --no-trunc=false,是否截断显示镜像ID
# --quiet , -q 屏蔽输出详细内容,仅显示下载镜像的ID

# 例:查看本地的 Ubuntu 镜像
[root@localhost ~]# docker images --no-trunc -q ubuntu

# 例:匹配条件二选一
[root@localhost ~]# docker images --filter=reference='busy*:uclibc' --filter=reference='busy*:glibc'
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             uclibc              e02e811dd08f        5 weeks ago         1.09 MB
busybox             glibc               21c16b6787c6        5 weeks ago         4.19 MB

查看镜像

# 命令语法
docker inspect [ options ] image [ name | id... ]

# 命令参数
# --format , -f 指定输出内容的模板格式

# 例:根据镜像ID查看其基本信息
[root@localhost ~]# docker inspect d5e7f166b406

删除镜像

# 命令语法
docker rmi [ options ] image [ name | id... ]

# 命令参数
# --force , -f 强制删除镜像
# --no-prune 保留未打标签的父镜像

# 例:删除ubuntu:14.04镜像
[root@localhost ~]# docker rmi ubuntu:14.04
Untagged: ubuntu:14.04
Untagged: docker.io/ubuntu@sha256:97466d028ec511ae16b66e0c9caa5d178c44b6ca6833e73c4a1edd369ddac901
Deleted: sha256:d5e7f166b406dc46c2c0e2e67577a391f35d2fa88c5ee840266c1c59f0702f8f
Deleted: sha256:bed446a0fbb0eddaf9922561bb02521d025fc13679a692cf861deeaee2519398
Deleted: sha256:68256d97a5669b5bcb6ca8066b759aa51de24b6706ecd0d083e784bb1c48d61d
Deleted: sha256:f3e5b349e3053988f578ebb41276d87adbcf67f7ba3ff3cee1a8cab5a34e3181

推送镜像到Registry仓库

# 命令语法
docker push image name[ :tag ]

# 例:将pengjunlee/centos-tomcat:1.0镜像推送到Registry仓库
[root@localhost ~]# docker push pengjunlee/centos-tomcat:1.0
The push refers to a repository [docker.io/pengjunlee/centos-tomcat]
09b0234471e3: Preparing
89169d87dbe2: Preparing
denied: requested access to the resource is denied
root@localhost ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: pengjunlee
Password:
Login Succeeded
[root@localhost ~]# docker push pengjunlee/centos-tomcat:1.0

操作容器

启动容器

# 命令语法
docker run [ options ] image [ command ] [ arg... ]

# 命令参数
# --interactive , -i=false 以交互式模式启动容器
# --tty , -t=false 分配一个tty终端
# --publish , -p 容器暴露给主机的端口
# --volume , -v 将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>
# --name 指定容器名称

# 例:使用 ubuntu:14.04 镜像安装 nginx 后重新构建镜像
# 从远程仓库拉取 centos 镜像
[root@localhost ~]# docker pull centos
# 查看拉取到的 centos 镜像
[root@localhost ~]# docker images centos
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              0f3e07c0138f        2 months ago        220 MB
# 启动容器
[root@localhost ~]# docker run -it -p 80 --name centos_server centos:latest /bin/bash
# 启动完成之后会直接进入 CentOS 容器的 Bash 终端,使用 exit 命令退出容器
[root@5f6e75323dff /]# exit

守护式容器

更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。

方式一:进入交互式容器,使用 Ctrl + P --> Ctrl + Q 键退出容器

方式二:使用 docker run 命令的 -d 参数。

# --detach , -d 后台运行容器并打印容器的ID

# 例:后台启动一个 Ubuntu 容器
[root@localhost ~]# docker run -itd -p 100 --name ubuntu_server ubuntu:latest /bin/bash

列出容器

# 命令语法
docker ps [ options ]

# 命令参数
# --all , -a 显示所有容器(默认只显示正在运行的容器)
# --latest , -l 显示最近创建的容器
# --last , -n=-1 显示最近创建的 n 个容器
# --no-trunc 禁用输出截断显示
# --quiet , -q 仅显示容器ID
# --size , -s 显示容器文件总大小

# 例:
[root@localhost ~]# docker ps -a -s
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES               SIZE
a95b4647d786        ubuntu:latest       "/bin/bash"         46 minutes ago      Exited (0) 45 minutes ago                       ubuntu_server       5 B (virtual 64.2 MB)
5f6e75323dff        centos:latest       "/bin/bash"         About an hour ago   Exited (0) 7 minutes ago                        centos_server       101 B (virtual 220 MB)

查看容器

# 命令语法
docker inspect [ options ] container | image [ name | id... ]

# 命令参数
# --format , -f 指定输出内容的模板格式
# --size , -s 查看容器时可用,显示容器的文件总大小

# 例:使用容器名称查看其基本信息
[root@localhost ~]# docker inspect centos_server

重启容器

# 命令语法
docker start [ options ] container [ container... ]

# 命令参数
# --interactive , -i 以交互式模式重启容器

# 例:使用容器名称重启容器
[root@localhost ~]# docker start -i centos_server

停止容器

方式一

# 命令语法
docker stop [ options ] container [ container... ]

# 命令参数
# --time , -t=10 停止容器前需要等待的时间

# 例:根据容器名称删除容器
[root@localhost ~]# docker stop nginx_server

方式二

# 命令语法
docker kill [ options ] container [ container... ]

# 命令参数
# --signal , -s=KILL 给容器发送的信号

# 例:根据容器名称删除容器
[root@localhost ~]# docker kill nginx_server

重连运行中的容器

# 命令语法
docker attach container

# 例:重连nginx_server 容器
[root@localhost ~]# docker attach nginx_server

查看容器日志

# 命令语法
docker logs [ options ] container

# 命令参数
# --follow , -f 日志实时更新显示
# --timestamps , -t 显示时间戳
# --tail=all 显示末尾多少行

# 例:显示nginx_server容器的日志
[root@localhost ~]# docker logs -f nginx_server

查看容器内运行的进程

# 命令语法
docker top container

# 例:显示nginx_server容器内运行的进程
[root@localhost ~]# docker top nginx_server

在容器内启动新的进程

# 命令语法
docker exec [ options ] container [ command ] [ arg... ]

# 命令参数
# --detach , -d 后台模式启动进程
# --interactive , -i=false 以交互式模式启动容器
# --tty , -t=false 分配一个tty终端

# 例:显示nginx_server容器内运行的进程
[root@localhost ~]# docker exec -d centos_server /bin/bash

删除容器

# 命令语法
docker rm [ options ] container [ container... ]

# 命令参数
# --force , -f 通过信号量强制删除运行中的容器
# --link , -l 删除容器间的网络链接
# --volumes , -v 删除为容器分配的卷空间

# 例:根据容器名称删除容器
[root@localhost ~]# docker rm nginx_server

 


 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值