docker学习笔记一

来源:互联网 发布:众筹系统源码 编辑:程序博客网 时间:2024/05/18 01:34

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

centos7安装docker

[root@localhost ~]#  yum -y install docker
启动docker服务,并设置为开机自启动

[root@localhost ~]# systemctl start docker[root@localhost ~]# systemctl enable docker
一、docker基本命令介绍

attach  连接到一个正在运行的容器
build 从Dockerfile中构建一个映像
commit  从容器的更改中创建一个新的映像
cp  在容器和本地文件系统之间复制文件/文件夹
create  创建一个新容器
diff  检查容器文件系统上的更改
events  从服务器获取实时事件
exec  在运行的容器中运行一个命令
export  将容器的文件系统导出为tar存档文件
history  展示了一个形象的历史
images  图像列表

[root@localhost ~]# docker images REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEdocker.io/nginx     latest              40960efd7b8f        4 days ago          108.4 MB
import  从tarball导入内容,以创建文件系统映像
info  显示系统范围的信息
inspect  检查容器、镜像或任务的返回低级信息

[root@localhost ~]# docker inspect c2[    {        "Id": "6454cb56e12f4209771e17cbcd866a7e5225665177be761f51ca8c797c30fe66",        "Created": "2017-11-09T06:28:27.825868355Z",        "Path": "/bin/bash",        "Args": [],        "State": {            "Status": "running",            "Running": true,            "Paused": false,            "Restarting": false,            "OOMKilled": false,            "Dead": false,            "Pid": 12737,            "ExitCode": 0,            "Error": "",            "StartedAt": "2017-11-09T06:33:45.36921727Z",            "FinishedAt": "2017-11-09T06:33:05.320232823Z"        },        "Image": "sha256:40960efd7b8f44ed5cafee61c189a8f4db39838848d41861898f56c29565266e",        "ResolvConfPath": "/var/lib/docker/containers/6454cb56e12f4209771e17cbcd866a7e5225665177be761f51ca8c797c30fe66/resolv.conf",        "HostnamePath": "/var/lib/docker/containers/6454cb56e12f4209771e17cbcd866a7e5225665177be761f51ca8c797c30fe66/hostname",        "HostsPath": "/var/lib/docker/containers/6454cb56e12f4209771e17cbcd866a7e5225665177be761f51ca8c797c30fe66/hosts",        "LogPath": "",        "Name": "/c2",        "RestartCount": 0,        "Driver": "devicemapper",        "MountLabel": "",        "ProcessLabel": "",        "AppArmorProfile": "",        "ExecIDs": null,        "HostConfig": {            "Binds": null,            "ContainerIDFile": "",            "LogConfig": {                "Type": "journald",                "Config": {}            },            "NetworkMode": "default",            "PortBindings": {},            "RestartPolicy": {                "Name": "no",                "MaximumRetryCount": 0            },            "AutoRemove": false,            "VolumeDriver": "",            "VolumesFrom": null,            "CapAdd": null,            "CapDrop": null,            "Dns": [],            "DnsOptions": [],            "DnsSearch": [],            "ExtraHosts": null,            "GroupAdd": null,            "IpcMode": "",            "Cgroup": "",            "Links": null,            "OomScoreAdj": 0,            "PidMode": "",            "Privileged": false,            "PublishAllPorts": false,            "ReadonlyRootfs": false,            "SecurityOpt": null,            "UTSMode": "",            "UsernsMode": "",            "ShmSize": 67108864,            "Runtime": "docker-runc",            "ConsoleSize": [                0,                0            ],            "Isolation": "",            "CpuShares": 0,            "Memory": 0,            "CgroupParent": "",            "BlkioWeight": 0,            "BlkioWeightDevice": null,            "BlkioDeviceReadBps": null,            "BlkioDeviceWriteBps": null,            "BlkioDeviceReadIOps": null,            "BlkioDeviceWriteIOps": null,            "CpuPeriod": 0,            "CpuQuota": 0,            "CpusetCpus": "",            "CpusetMems": "",            "Devices": [],            "DiskQuota": 0,            "KernelMemory": 0,            "MemoryReservation": 0,            "MemorySwap": 0,            "MemorySwappiness": -1,            "OomKillDisable": false,            "PidsLimit": 0,            "Ulimits": null,            "CpuCount": 0,            "CpuPercent": 0,            "IOMaximumIOps": 0,            "IOMaximumBandwidth": 0        },        "GraphDriver": {            "Name": "devicemapper",            "Data": {                "DeviceId": "8",                "DeviceName": "docker-253:0-8953729-1bc788c4a859fae3ebc08593c382a04e537a2c3fa95c4a18955ed68e0ac16e58",                "DeviceSize": "10737418240"            }        },        "Mounts": [],        "Config": {            "Hostname": "6454cb56e12f",            "Domainname": "",            "User": "",            "AttachStdin": true,            "AttachStdout": true,            "AttachStderr": true,            "ExposedPorts": {                "80/tcp": {}            },            "Tty": true,            "OpenStdin": true,            "StdinOnce": true,            "Env": [                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",                "NGINX_VERSION=1.13.6-1~stretch",                "NJS_VERSION=1.13.6.0.1.14-1~stretch"            ],            "Cmd": [                "/bin/bash"            ],            "Image": "docker.io/nginx",            "Volumes": null,            "WorkingDir": "",            "Entrypoint": null,            "OnBuild": null,            "Labels": {                "maintainer": "NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e"            },            "StopSignal": "SIGTERM"        },        "NetworkSettings": {            "Bridge": "",            "SandboxID": "aa2c902263ae520cbca01afdc83d933876801f91719d2bc1a2ffaa733672f21e",            "HairpinMode": false,            "LinkLocalIPv6Address": "",            "LinkLocalIPv6PrefixLen": 0,            "Ports": {                "80/tcp": null            },            "SandboxKey": "/var/run/docker/netns/aa2c902263ae",            "SecondaryIPAddresses": null,            "SecondaryIPv6Addresses": null,            "EndpointID": "f3c3bf88afc548d5eed29cb3e5435f92f8ef9292673ba8e76b9c24c441283f1b",            "Gateway": "172.17.0.1",            "GlobalIPv6Address": "",            "GlobalIPv6PrefixLen": 0,            "IPAddress": "172.17.0.2",            "IPPrefixLen": 16,            "IPv6Gateway": "",            "MacAddress": "02:42:ac:11:00:02",            "Networks": {                "bridge": {                    "IPAMConfig": null,                    "Links": null,                    "Aliases": null,                    "NetworkID": "f31a67fae354241108d5ed523e86676ed9ed0b0f5f3a1fac06c104be41cfa659",                    "EndpointID": "f3c3bf88afc548d5eed29cb3e5435f92f8ef9292673ba8e76b9c24c441283f1b",                    "Gateway": "172.17.0.1",                    "IPAddress": "172.17.0.2",                    "IPPrefixLen": 16,                    "IPv6Gateway": "",                    "GlobalIPv6Address": "",                    "GlobalIPv6PrefixLen": 0,                    "MacAddress": "02:42:ac:11:00:02"                }            }        }    }]
使用以下快捷键完成容器退出,并使其保持在后台运行
ctrl+p+q
kill  杀死一个或多个运行容器
load   从tar压缩文件或STDIN中加载图像
login 登录到Docker注册表。
logout  从Docker注册表注销日志。
logs   获取一个容器的日志
network  管理Docker网络
node  管理Docker集群节点
pause   在一个或多个容器内暂停所有进程
port   列表端口映射或容器的特定映射
ps  列出容器

[root@localhost ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES6454cb56e12f        docker.io/nginx     "/bin/bash"         About a minute ago   Up About a minute   80/tcp              c1
pull 从注册表中提取镜像或存储库

[root@localhost ~]# docker pull docker.io/nginxUsing default tag: latestTrying to pull repository docker.io/library/nginx ... latest: Pulling from docker.io/library/nginxbc95e04b23c0: Pull complete a21d9ee25fc3: Pull complete 9bda7d5afd39: Pull complete Digest: sha256:9fca103a62af6db7f188ac3376c60927db41f88b8d2354bf02d2290a672dc425
push 将镜像或存储库推送到注册中心
rename 重命名容器

[root@localhost ~]# docker rename c1 c2
restart   重新启动一个容器
rm  删除一个或多个容器
rmi  删除一个或多个镜像
run  在新容器中运行一个命令

[root@localhost ~]# docker run -it --name=c1 docker.io/nginx /bin/bashroot@6454cb56e12f:/# root@6454cb56e12f:/# 
save  保存一个或多个镜像到tar存档文件(默认情况下,流到STDOUT)

search  在Docker中心搜索镜像

[root@localhost ~]# docker search centos7INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDdocker.io   docker.io/ansible/centos7-ansible           Ansible on Centos7                              103                  [OK]docker.io   docker.io/centos/mysql-57-centos7           MySQL 5.7 SQL database server                   15                   docker.io   docker.io/openshift/base-centos7            A Centos7 derived base image for Source-To...   12                   docker.io   docker.io/centos/php-56-centos7             Platform for building and running PHP 5.6 ...   10 
service 管理Docker服务
start  启动一个或多个停止容器

[root@localhost ~]# docker start c2
stats 显示容器(s)资源使用统计的实时流
stop 停止一个或多个运行容器

[root@localhost ~]# docker stop c2c2
swarm 管理Docker群集
tag  将图像标记为存储库
top  显示一个容器的运行过程

[root@localhost ~]# docker top c2UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMDroot                12573               12565               0                   14:28               pts/1               00:00:00            /bin/bas
unpause 在一个或多个容器内暂停所有进程
update 更新一个或多个容器的配置
version 显示Docker版本信息
volume 管理Docker卷
wait  等待一个容器停止,然后打印它的退出代码

docker -v 显示版本

[root@localhost ~]# docker -vDocker version 1.12.6, build 85d7426/1.12.6

二、docker 打包镜像系列

使用tar命令打包自己的镜像

[root@localhost ~]# tar --numeric-owner --exclude=/proc --exclude=/sys -cvf centos7-base.tar /