Docker学习
Docker项目的目标是实现轻量级的操作系统虚拟化解决方案,其基础是Linux容器(LXC)等技术
Docker的三个概念
镜像(Image)
Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。镜像可以用来创建Docker容器。
容器(Container)
容器是从镜像创建的运行实例。它可以被启动、开始、停止、 删除。每个容器都是相互隔离的、保证安全的平台。
仓库(Repository)
仓库是集中存放镜像文件的场所。仓库分为公开仓库(Public)和私有仓库(Private) 两种形式。
centos安装Docker
yum install -y docker
安装完成
Installed:
docker.x86_64 2:1.12.6-71.git3e8e77d.el7.centos.1
Dependency Installed:
audit-libs-python.x86_64 0:2.7.6-3.el7 checkpolicy.x86_64 0:2.5-4.el7
container-selinux.noarch 2:2.36-1.gitff95335.el7 container-storage-setup.noarch 0:0.8.0-3.git1d27ecf.el7
device-mapper-event.x86_64 7:1.02.140-8.el7 device-mapper-event-libs.x86_64 7:1.02.140-8.el7
device-mapper-persistent-data.x86_64 0:0.7.0-0.1.rc6.el7_4.1 docker-client.x86_64 2:1.12.6-71.git3e8e77d.el7.centos.1
docker-common.x86_64 2:1.12.6-71.git3e8e77d.el7.centos.1 libaio.x86_64 0:0.3.109-13.el7
libcgroup.x86_64 0:0.41-13.el7 libsemanage-python.x86_64 0:2.5-8.el7
lvm2.x86_64 7:2.02.171-8.el7 lvm2-libs.x86_64 7:2.02.171-8.el7
oci-register-machine.x86_64 1:0-3.14.gitcd1e331.el7 oci-systemd-hook.x86_64 1:0.1.14-2.git9b1e622.el7
oci-umount.x86_64 2:2.3.1-2.gitbf16163.el7 policycoreutils-python.x86_64 0:2.5-17.1.el7
python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3.3.8-1.1.el7
skopeo-containers.x86_64 1:0.1.26-2.dev.git2e8377a.el7.centos yajl.x86_64 0:2.0.4-4.el7
Complete!
启动Docker后台服务
# service docker start
Redirecting to /bin/systemctl start docker.service
测试运行 hello-world
# docker run hello-world
Unable to find image 'hello-world:latest' locally
Trying to pull repository docker.io/library/hello-world ...
latest: Pulling from docker.io/library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:083de497cff944f969d8499ab94f07134c50bcf5e6b9559b27182d3fa80ce3f7
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
查看版本及结果
# docker version
Client:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
Go version: go1.8.3
Git commit: 3e8e77d/1.12.6
Built: Tue Jan 30 09:17:00 2018
OS/Arch: linux/amd64
Server:
Version: 1.12.6
API version: 1.24
Package version: docker-1.12.6-71.git3e8e77d.el7.centos.1.x86_64
Go version: go1.8.3
Git commit: 3e8e77d/1.12.6
Built: Tue Jan 30 09:17:00 2018
OS/Arch: linux/amd64
查看Docker信息
# docker info
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 1
Server Version: 1.12.6
Storage Driver: devicemapper
Pool Name: docker-253:1-393890-pool
Pool Blocksize: 65.54 kB
Base Device Size: 10.74 GB
Backing Filesystem: xfs
Data file: /dev/loop0
Metadata file: /dev/loop1
Data Space Used: 19.73 MB
Data Space Total: 107.4 GB
Data Space Available: 40.36 GB
Metadata Space Used: 593.9 kB
Metadata Space Total: 2.147 GB
Metadata Space Available: 2.147 GB
Thin Pool Minimum Free Space: 10.74 GB
Udev Sync Supported: true
Deferred Removal Enabled: true
Deferred Deletion Enabled: true
Deferred Deleted Device Count: 0
Data loop file: /var/lib/docker/devicemapper/devicemapper/data
WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
Library Version: 1.02.140-RHEL7 (2017-05-03)
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: null host bridge overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Security Options: seccomp
Kernel Version: 3.10.0-693.2.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 1
Total Memory: 992.3 MiB
Name: iz2zec6q7af34l736i2uuvz
ID: O3YK:7WTI:DO3P:OE4O:4HKU:F347:5ULU:WMTJ:V2KW:ZYY6:5H24:PVKG
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
127.0.0.0/8
Registries: docker.io (secure)
Docker镜像安装完成!
测试安装Nginx
镜像加速
vi /etc/docker/daemon.json
在配置文件中加入
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
拉取镜像
# docker pull nginx
启动Nginx容器
# docker run --name dhrngnix -d -p 8089:80 docker.io/nginx
查看容器
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a7636192a48e docker.io/nginx "nginx -g 'daemon off" 38 seconds ago Up 37 seconds 0.0.0.0:8089->80/tcp dhrngnix