docker (2): The basic use of docker

A, docker base on which environment

  • 64-bit CPU
  • Linux kernel 3.10 above
  • Linux Kernel support namespace and CGroups

Two, docker installation

 1. Environmental follows

[root@docker ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 
[root@docker ~]# uname -r
3.10.0-514.el7.x86_64

 2. The words will default download from extras repository to download version 1.13 (I use the Ali mirror source) in. But now the docker is in a fast growing, fast sound stage, so it is recommended self docker.repo Download the latest version.

# 直接使用extras源下载docker以docker的安装包名就能下载,但使用指定源下载需要以docker-ce的安装包名。
[root@docker ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@docker ~]# yum makecache fast
[root@docker ~]# rpm --import https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[root@docker ~]# yum -y install docker-ce

 3. Configure docker mirror accelerator, otherwise the mirror can be slow. You can use docker China, the major cloud vendors can also use a mirror to accelerate, where to Ali cloud , for example, you need to register an account before they can. docker default configuration files in / etc / docker Next, you need to manually create.

[root@docker ~]# mkdir /etc/docker
# 将上面阿里云镜像加速器中大括号部分复制到下面配置文件就可以了。内容以数组形式存在,所以按格式配置多个加速器也没关系。
[root@docker ~]# vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://p4y8tfz4.mirror.aliyuncs.com"]
}

Three, docker and start frequently used commands

 1. Start docker

[root@docker ~]# systemctl start docker.service
# 键入docker命令查看帮助。
[root@docker ~]# docker
Usage:  docker [OPTIONS] COMMAND
Options:        # 参数    
Management Commands:        # 新版docker分的管理组(只列出部分内容)
  container   Manage containers
Commands:        # docker一些未分组命令及旧版命令的整合
# 这里提一下新旧版docker命令。举个例子,创建容器命令是docker create,但是新版docker实行了命令分组,容器相关的命令都整合到container管理组里面了,这时创建容器的命令就是docker container create,可以使用docker container --help命令查看帮助。两者虽功能是一样的,但是万一哪天把旧版的拿掉了呢?所以不如早早适应新版命令。

 2. Check the docker's C / S version information

[root@docker ~]# docker version
Client:
 Version:           18.09.6
 API version:       1.39
 Go version:        go1.10.8
...略

Server: Docker Engine - Community
 Engine:
  Version:          18.09.6
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.8
...略

 3. Check the docker's use of the information, only the removal of part of the configuration

root@docker ~]# docker info
Containers: 0        # 当前系统容器的个数
 Running: 0          # 处于运行状态的容器个数
 Paused: 0            # 处于暂停状态的容器个数
 Stopped: 0            # 处于停止状态的容器个数
Images: 0            # 下载的镜像个数
Server Version: 18.09.6        # docker的版本
Storage Driver: overlay2        # 存储驱动,之前这里是dm,性能很差,是lvm的实现,新版本的都是overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: false
Logging Driver: json-file        # 日志文件驱动
Cgroup Driver: cgroupfs        # CGroup驱动
Plugins:            # 支持的插件种类
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Registry Mirrors:            # 此处是我们配置的镜像加速器
 https://p4y8tfz4.mirror.aliyuncs.com/
Product License: Community Engine        # 社区版本

 4. Image Management

  • Search Mirror
[root@docker ~]# docker search nginx
NAME                              DESCRIPTION                                     STARS               OFFICIAL    AUTOMATED
nginx                             Official build of Nginx.                        11472               [OK]                
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   1604                [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   715                 [OK]
# NAME列:没有斜线分隔的名字称为顶级仓库,一般属于dockerhub官方所有;有斜线分隔符的称为用户仓库或者是项目仓库,dockerhub官方允许用户个人注册账户建立自己的仓库。
# DESCRIPTION列:仓库描述
# STARS列:用户表示“赞”的个数 
  • Download Mirror. Own use docker download mirrors generally used alpine version , it can give your program run provide the basis for the environment, but the volume is very small. The production is not recommended, because even dockerhub official mirror is without debugging tools, debugging container which is very unfavorable to us, so are generally mirrored their own, containing commonly used debugging tools.
[root@docker ~]# docker image pull nginx:1.14-alpine
Status: Downloaded newer image for nginx:1.14-alpin
[root@docker ~]# docker image pull busybox
Status: Downloaded newer image for busybox:latest
[root@docker ~]# docker image pull redis
Status: Downloaded newer image for redis:latest
  • View Mirror
[root@docker ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               latest              d3e3588af517        2 weeks ago         95MB
busybox             latest              64f5d945efcc        2 weeks ago         1.2MB
nginx               1.14-alpine         8a2fb25a19f5        7 weeks ago         16MB
# REPOSITORY列:仓库名称
# TAG列:标签
# IMAGE ID列:镜像ID,查看完整ID需要加--no-trunc的参数,默认显示前12位。
# CREATED列:镜像创建时间
# SIZE列:镜像大小
  • Remove Mirror
[root@docker ~]# docker image rm redis:latest

 4. Container Managed

  • Command Help
[root@docker ~]# docker container run --help.
-d      # 后台运行容器.
-i        # 使用交互式访问容器.
-t        # 分配一个终端,需要与-i结合使用.
--name        # 给容器分配个名字.
--network string        # 使容器加入到一个网络,如不指定,默认就是加到bridge网络(可以使用docker network ls查看),使用docker0的虚拟网卡.
--rm        # 容器一停,就自动删除.
  • Create and start a container (one step)
[root@docker ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              64f5d945efcc        2 weeks ago         1.2MB
nginx               1.14-alpine         8a2fb25a19f5        7 weeks ago         16MB
# 直接创建、启动并登入容器(启动容器的镜像可以不用提前下载,执行run命令的时候会自动下载)
[root@docker ~]# docker run --name bbox -it busybox:latest
/ # 
--------------------------------------------------------------------------------------------------------------
>>小测试:使用httpd起一个web服务进行访问<<
/ # mkdir -p /data/html/
/ # vi /data/html/index.html
Bbox httpd server
/ # httpd -f -h /data/html/
# 然后复制一个窗口访问web服务
[root@docker ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS   NAMES
24b44e5f1049        busybox:latest      "sh"                3 hours ago         Up 3 hours                  bbox
# 使用inspect显示容器的详细信息。
[root@docker ~]# docker container inspect bbox | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
[root@docker ~]# curl 172.17.0.2
Bbox httpd server       # 访问OK
--------------------------------------------------------------------------------------------------------------
# 此时回到启动httpd的窗口,Ctrl+c中止进程,exit或者Ctrl+d退出容器,此时的容器并没有被删除,只是处于停止状态
/ # httpd -f -h /data/html/
^C
/ # [root@docker ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                       PORTS               NAMES
24b44e5f1049        busybox:latest      "sh"                3 hours ago         Exited (130) 3 minutes ago                                               bbox
  • Start a container
# 如果容器是一个后台守护进程,那直接start就可以了,如果需要直接进入交互式接口,需要加-ai的参数
[root@docker ~]# docker container start -ai bbox 
/ # 
  • Stop a container
# stop和kill区别就是:stop是发送15的信号,kill是发送9的信号。kill是强制杀死,有丢失数据的可能,所以一般不建议使用。
[root@docker ~]# docker container stop bbox
bbox
  • Delete a container
[root@docker ~]# docker container rm bbox 
bbox
  • Start a container running in the background
[root@docker ~]# docker container run --name web01 -d nginx:1.14-alpine 
c386de457f5fed770e97a080bbf7d2ce05cabd38199a9fc9072d08d920cf58f6
[root@docker ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
c386de457f5f        nginx:1.14-alpine   "nginx -g 'daemon of…"   20 seconds ago      Up 19 seconds       80/tcp     web01
[root@docker ~]# docker container inspect web01 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
[root@docker ~]# curl 172.17.0.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>            # 访问成功
  • Login container running in the background
[root@docker ~]# docker container exec -it web01 /bin/sh
/ # 
  • View access log container
# 一般情况下容器只会运行程序这一个进程,日志都是保存在于宿主机上的,可以用下面命令查看。
[root@docker ~]# docker container logs web01 
172.17.0.1 - - [30/May/2019:07:12:43 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

Writing is not easy, please indicate the source, thank you ~

Guess you like

Origin www.cnblogs.com/ccbloom/p/10943440.html