单一容器管理
docker 启动和停止
docker start CONTAINER ID(or names)
docker stop CONTAINER ID(or names)
查询容器信息
[root@VM_0_7_centos ~]# docker inspect MyWordPress
{
“Id”: “8001906c52748e136ceb316977df775941f382c7d98e8b0ed39f5218b2fc7a0d”,
“Created”: “2018-08-13T06:40:02.467843522Z”,
“Path”: “docker-entrypoint.sh”,
“Args”: [
“apache2-foreground”
],
“State”: {
“Status”: “running”,
“Running”: true,
“Paused”: false,
“Restarting”: false,
“OOMKilled”: false,
“Dead”: false,
“Pid”: 18908,
“ExitCode”: 0,
“Error”: “”,
“StartedAt”: “2018-08-15T10:30:05.109096579Z”,
“FinishedAt”: “2018-08-15T10:29:54.078603712Z”
},
“Image”: “sha256:9414c91da9a8e344d76eeb30669ac8bbce2185491658bcf9ba7300b81e3a32ac”,
“ResolvConfPath”: “/var/lib/docker/containers/8001906c52748e136ceb316977df775941f382c7d98e8b0ed39f5218b2fc7a0d/resolv.conf”,
“HostnamePath”: “/var/lib/docker/containers/8001906c52748e136ceb316977df775941f382c7d98e8b0ed39f5218b2fc7a0d/hostname”,
“HostsPath”: “/var/lib/docker/containers/8001906c52748e136ceb316977df775941f382c7d98e8b0ed39f5218b2fc7a0d/hosts”,
“LogPath”: “”,
“Name”: “/MyWordPress”,
“RestartCount”: 0,
“Driver”: “overlay2”,
“MountLabel”: “”,
“ProcessLabel”: “”,
“AppArmorProfile”: “”,
“ExecIDs”: [
“201a1912d335d11b61371b64bf4650688f41677e2c169869a9a5c6d6b7480f4e”
],
“HostConfig”: {
“Binds”: null,
“ContainerIDFile”: “”,
“LogConfig”: {
“Type”: “journald”,
“Config”: {}
},
“NetworkMode”: “default”,
“PortBindings”: {
“80/tcp”: [
{
“HostIp”: “”,
“HostPort”: “8080”
}
]
},
“RestartPolicy”: {
“Name”: “no”,
“MaximumRetryCount”: 0
},
“AutoRemove”: false,
“VolumeDriver”: “”,
“VolumesFrom”: null,
“CapAdd”: null,
“CapDrop”: null,
“Dns”: [],
“DnsOptions”: [],
“DnsSearch”: [],
“ExtraHosts”: null,
“GroupAdd”: null,
“IpcMode”: “”,
“Cgroup”: “”,
“Links”: [
“/db:/MyWordPress/mysql”
],
“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,
“NanoCpus”: 0,
“CgroupParent”: “”,
“BlkioWeight”: 0,
“BlkioWeightDevice”: null,
“BlkioDeviceReadBps”: null,
“BlkioDeviceWriteBps”: null,
“BlkioDeviceReadIOps”: null,
“BlkioDeviceWriteIOps”: null,
“CpuPeriod”: 0,
“CpuQuota”: 0,
“CpuRealtimePeriod”: 0,
“CpuRealtimeRuntime”: 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”: “overlay2”,
“Data”: {
“LowerDir”: “/var/lib/docker/overlay2/c3331c3d769b3aef7ad5111ab87d1b69d68789fbf858a33793b831bd9ee010d4-init/diff:/var/lib/docker/overlay2/886a45d928c1fbb1daab974f3db8acae77e0d341b33f9cb9f20d80861f7dde98/diff:/var/lib/docker/overlay2/91b6c68ce1ccf0f6ac02e088d4234be2b10ad796b8a72e8d9eb5b789ce9ea783/diff:/var/lib/docker/overlay2/c37cd3fcb3f5fe96f68c752c3ff72366ad420606b281842463ae5488b6205de7/diff:/var/lib/docker/overlay2/4f9f0adc1ccdd6b33b6f7f593d5694a13c3a9ba55eecec5e41bb0f8f5282c5cb/diff:/var/lib/docker/overlay2/3949878b5ba78546d6ebaa1840c5397b8358254b11dc39887c988cbfb6a844e3/diff:/var/lib/docker/overlay2/0822b49dcdcc87f617050951cfa8b99fae2f6d5e5928f808b7d6ee1f5dbd7800/diff:/var/lib/docker/overlay2/557c769e0e75ad44888f42074eb8a0c0b072d401efd984b9c360b709a0c7ffd9/diff:/var/lib/docker/overlay2/06167ee6d2675bd9483c8012bcce0891673dc6a0d616dc018bb965afb3ee13bd/diff:/var/lib/docker/overlay2/fd0f86fe4b74ef5a7fe71d1e39a35c0a3f68344e173790d752d5925ecec19011/diff:/var/lib/docker/overlay2/693bc8c52e05ec7b4d56631e9fe7fe78a8e1fa24f112b6b9f9e400ee0a477b02/diff:/var/lib/docker/overlay2/14bf409bd62a97bb3d419136d17da15d38e28e2d5ba003c8a1fc796e7539b79d/diff:/var/lib/docker/overlay2/948b88e53e72e159eaf5d1b45a0a9add0b5207ae0cf6656cb6922e62e23dc73a/diff:/var/lib/docker/overlay2/a7d266cf9882e63fc1566190fea6a856f6e15b232546db8ac67d9c58cc2b49b5/diff:/var/lib/docker/overlay2/71b9f4ad2dd11a358ca05786a5b82a74276594b46dbec58800277a1f817f2fd4/diff:/var/lib/docker/overlay2/0415dc1744788943ad25e4d53c2cfa01c0c26def64886f48983cef22f8678f99/diff:/var/lib/docker/overlay2/ae9362ba605657031c49099770f79ac8e86e5b201ddebca3871522d21e452239/diff:/var/lib/docker/overlay2/d9c309c8a6351587c11b2c5e75516e5079b1ddff5bfba2f6f5c96ef1979690bb/diff:/var/lib/docker/overlay2/b067c7a212c2cb67709e5cf66883b9fcdb54b8e0c11cfc345798ba899f087fd1/diff:/var/lib/docker/overlay2/2605dc18f93e25b1f629a04fbe6ffcb9f3570f879830b137dd6e2bf49148980b/diff:/var/lib/docker/overlay2/c9eecb3825b8ecf29689f78fc9cbb5cc42b565d62bf9dd3cd31da90030b8b41b/diff”,
“MergedDir”: “/var/lib/docker/overlay2/c3331c3d769b3aef7ad5111ab87d1b69d68789fbf858a33793b831bd9ee010d4/merged”,
“UpperDir”: “/var/lib/docker/overlay2/c3331c3d769b3aef7ad5111ab87d1b69d68789fbf858a33793b831bd9ee010d4/diff”,
“WorkDir”: “/var/lib/docker/overlay2/c3331c3d769b3aef7ad5111ab87d1b69d68789fbf858a33793b831bd9ee010d4/work”
}
},
“Mounts”: [
{
“Type”: “volume”,
“Name”: “652e724dc1168c3615aca09d5fe11508f74dda398d9777457947e00519548f2d”,
“Source”: “/var/lib/docker/volumes/652e724dc1168c3615aca09d5fe11508f74dda398d9777457947e00519548f2d/_data”,
“Destination”: “/var/www/html”,
“Driver”: “local”,
“Mode”: “”,
“RW”: true,
“Propagation”: “”
}
],
“Config”: {
“Hostname”: “8001906c5274”,
“Domainname”: “”,
“User”: “”,
“AttachStdin”: false,
“AttachStdout”: false,
“AttachStderr”: false,
“ExposedPorts”: {
“80/tcp”: {}
},
“Tty”: false,
“OpenStdin”: false,
“StdinOnce”: false,
“Env”: [
“PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin”,
“PHPIZE_DEPS=autoconf \t\tdpkg-dev \t\tfile \t\tg++ \t\tgcc \t\tlibc-dev \t\tmake \t\tpkg-config \t\tre2c”,
“PHP_INI_DIR=/usr/local/etc/php”,
“APACHE_CONFDIR=/etc/apache2”,
“APACHE_ENVVARS=/etc/apache2/envvars”,
“PHP_EXTRA_BUILD_DEPS=apache2-dev”,
“PHP_EXTRA_CONFIGURE_ARGS=–with-apxs2 –disable-cgi”,
“PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2”,
“PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2”,
“PHP_LDFLAGS=-Wl,-O1 -Wl,–hash-style=both -pie”,
“GPG_KEYS=1729F83938DA44E27BA0F4D3DBDB397470D12172 B1B44D8F021E4E2D6021E995DC9FF8D3EE5AF27F”,
“PHP_VERSION=7.2.8”,
“PHP_URL=https://secure.php.net/get/php-7.2.8.tar.xz/from/this/mirror“,
“PHP_ASC_URL=https://secure.php.net/get/php-7.2.8.tar.xz.asc/from/this/mirror“,
“PHP_SHA256=53ba0708be8a7db44256e3ae9fcecc91b811e5b5119e6080c951ffe7910ffb0f”,
“PHP_MD5=”,
“WORDPRESS_VERSION=4.9.8”,
“WORDPRESS_SHA1=0945bab959cba127531dceb2c4fed81770812b4f”
],
“Cmd”: [
“apache2-foreground”
],
“ArgsEscaped”: true,
“Image”: “wordpress”,
“Volumes”: {
“/var/www/html”: {}
},
“WorkingDir”: “/var/www/html”,
“Entrypoint”: [
“docker-entrypoint.sh”
],
“OnBuild”: null,
“Labels”: {}
},
“NetworkSettings”: {
“Bridge”: “”,
“SandboxID”: “39f3704ff1645d3b924cf1773c59306d0b02da862d6c717a3dcfaf0b2285e57b”,
“HairpinMode”: false,
“LinkLocalIPv6Address”: “”,
“LinkLocalIPv6PrefixLen”: 0,
“Ports”: {
“80/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “8080”
}
]
},
“SandboxKey”: “/var/run/docker/netns/39f3704ff164”,
“SecondaryIPAddresses”: null,
“SecondaryIPv6Addresses”: null,
“EndpointID”: “1e68244b1299f6838838985ec6166a28a9db10cf1db3810619c26a7d2fb7ef7d”,
“Gateway”: “172.18.0.1”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“IPAddress”: “172.18.0.3”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“MacAddress”: “02:42:ac:12:00:03”,
“Networks”: {
“bridge”: {
“IPAMConfig”: null,
“Links”: null,
“Aliases”: null,
“NetworkID”: “5c7b1fba68745266b02e0eaed57405becd7955a612ef01be9395c8b66e1e90ac”,
“EndpointID”: “1e68244b1299f6838838985ec6166a28a9db10cf1db3810619c26a7d2fb7ef7d”,
“Gateway”: “172.18.0.1”,
“IPAddress”: “172.18.0.3”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“MacAddress”: “02:42:ac:12:00:03”
}
}
}
}
]
查找MyWordPress and ip information
[root@VM_0_7_centos ~]# docker inspect -f {{.State.Status}} MyWordPress
running
[root@VM_0_7_centos ~]# docker inspect -f {{.NetworkSettings.IPAddress}} MyWordPress
172.18.0.3
[root@VM_0_7_centos ~]#
查看docker的CPU,使用率,内存和网络
[root@VM_0_7_centos ~]# docker stats MyWordPress
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
MyWordPress 0.00% 57 MiB / 1.796 GiB 3.10% 2.12 MB / 1.86 MB 1.7 GB / 0 B 8
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
MyWordPress 0.00% 57 MiB / 1.796 GiB 3.10% 2.12 MB / 1.86 MB 1.7 GB / 0 B 8
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
MyWordPress 0.00% 57 MiB / 1.796 GiB 3.10% 2.12 MB / 1.86 MB 1.7 GB / 0 B 8
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
MyWordPress 0.00% 57 MiB / 1.796 GiB 3.10% 2.12 MB / 1.86 MB 1.7 GB / 0 B 8
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
MyWordPress 0.00% 57 MiB / 1.796 GiB 3.10% 2.12 MB / 1.86 MB 1.7 GB / 0 B 8
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
MyWordPress 0.00% 57 MiB / 1.796 GiB 3.10% 2.12 MB / 1.86 MB 1.7 GB / 0 B 8
查看MyWordPress容器内启动了哪些进程
[root@VM_0_7_centos ~]# docker exec MyWordPress ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 390016 7288 ? Ss Aug15 0:02 apache2 -DFOREGROUND
www-data 66 0.0 1.0 395224 20172 ? S Aug15 0:00 apache2 -DFOREGROUND
www-data 67 0.0 1.4 470144 26660 ? S Aug15 0:00 apache2 -DFOREGROUND
www-data 68 0.0 1.3 471988 24908 ? S Aug15 0:00 apache2 -DFOREGROUND
www-data 69 0.0 1.1 395228 22580 ? S Aug15 0:00 apache2 -DFOREGROUND
www-data 70 0.0 1.1 395248 22296 ? S Aug15 0:00 apache2 -DFOREGROUND
www-data 71 0.0 1.0 395196 19336 ? S Aug15 0:00 apache2 -DFOREGROUND
www-data 72 0.0 1.0 395212 20128 ? S Aug15 0:00 apache2 -DFOREGROUND
root 109 0.0 0.0 36628 1588 ? Rs 11:27 0:00 ps aux
进入容器
[root@VM_0_7_centos ~]# docker exec -it MyWordPress /bin/bash
root@8001906c5274:/var/www/html# pwd
/var/www/html
root@8001906c5274:/var/www/html# ls
index.php wp-activate.php wp-comments-post.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php
license.txt wp-admin wp-config-sample.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php
readme.html wp-blog-header.php wp-config.php wp-includes wp-login.php wp-signup.php
root@8001906c5274:/var/www/html# exit
exit
[root@VM_0_7_centos ~]#
多容器管理
比如WordPress有两部分组成:Apache Web and Mariadb
启动顺序:
docker start db
docker start MyWordPress
停止顺序:
docker stop db
docker stop MyWordPress
Docker Compose —-容器的编排工具,它允许用户在一个模板中定义一组相关联的应用容器。
Install Compose on Linux systems
1.Run this command to download the latest version of Docker Compose:
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
2.Apply executable permissions to the binary:
sudo chmod +x /usr/local/bin/docker-compose
3.Test the installation.
[root@VM_0_7_centos ~]# /usr/local/bin/docker-compose --version
docker-compose version 1.22.0, build f46880fe
例如:使用Docker Compose来管理WordPress项目
首先,我们把WordPress项目原有的两个容器停掉
[root@VM_0_7_centos ~]# docker stop db MyWordPress
创建一个项目文件夹~/wordpress,在文件夹下创建一个叫docker-compose.yml的文件,内容如下:
[root@VM_0_7_centos ~]# ls
grafana-5.1.1-1.x86_64.rpm test wordpress zabbix-agent-3.4.8-1.el7.x86_64.rpm zabbix-release-3.4-2.el7.noarch.rpm
[root@VM_0_7_centos ~]# cat wordpress/docker-compose.yml
wordpress:
image: wordpress
links:
- db:mysql
ports:
- 8080:80
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: example
–links(容器互联),-ports(端口映射),-environment(环境变量设置)
创建和启动WordPress服务,生成新的NAMES并且服务UP
[root@VM_0_7_centos ~]# cd wordpress && docker-compose up
[root@VM_0_7_centos ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eed8e51c7189 wordpress "docker-entrypoint..." 30 minutes ago Up 30 minutes 0.0.0.0:8080->80/tcp wordpress_wordpress_1
f4ad894f2087 mariadb "docker-entrypoint..." 30 minutes ago Up 30 minutes 3306/tcp wordpress_db_1
aca92654af96 sameersbn/gitlab:8.4.4 "/sbin/entrypoint...." About an hour ago Up About an hour 443/tcp, 0.0.0.0:10022->22/tcp, 0.0.0.0:10080->80/tcp gitlab
e92b61cf18c7 sameersbn/redmine:3.2.0-4 "/sbin/entrypoint...." 9 days ago Up About an hour 443/tcp, 0.0.0.0:10083->80/tcp redmine
e038010f4bea sameersbn/postgresql:9.4-12 "/sbin/entrypoint.sh" 9 days ago Up About an hour 5432/tcp postgresql-redmine
511be91cca0a sameersbn/redis:latest "/sbin/entrypoint.sh" 10 days ago Up About an hour 6379/tcp gitlab-redis
e9bba5e833b6 sameersbn/postgresql:9.4-12 "/sbin/entrypoint.sh" 10 days ago Up About an hour 5432/tcp gitlab-postgre-sql
8001906c5274 wordpress "docker-entrypoint..." 10 days ago Exited (0) 33 minutes ago MyWordPress
da706ccdc499 mariadb "docker-entrypoint..." 10 days ago Exited (0) 33 minutes ago db
后续启动方式:
[root@VM_0_7_centos ~]# cd wordpress/
[root@VM_0_7_centos wordpress]# docker-compose start
Starting db ... done
Starting wordpress ... done
[root@VM_0_7_centos wordpress]# docker-compose stop
Stopping wordpress_wordpress_1 ... done
Stopping wordpress_db_1 ... done
例如:使用Docker Compose来管理redmine项目,编写.yml file
[root@VM_0_7_centos redmine]# cat docker-compose.yml
postgresql:
image: sameersbn/postgresql:9.4-12
environment:
- DB_NAME=redmine_production
- DB_USER=redmine
- DB_PASS=password
redmine:
image: sameersbn/redmine:3.2.0-4
links:
- postgresql:postgresql
ports:
- "10083:80"
environment:
- REDMINE_POST=10083
[root@VM_0_7_centos redmine]# pwd
/root/redmine
[root@VM_0_7_centos redmine]#
执行新容器组的创建和启动。
[root@VM_0_7_centos redmine]# docker-compose up -d
[root@VM_0_7_centos redmine]# docker-compose start
Starting postgresql ... done
Starting redmine ... done
[root@VM_0_7_centos redmine]# docker-compose stop
Stopping redmine_redmine_1 ... done
Stopping redmine_postgresql_1 ... done
[root@VM_0_7_centos redmine]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3e8083dc3d5 sameersbn/redmine:3.2.0-4 "/sbin/entrypoint...." About a minute ago Exited (137) 5 seconds ago redmine_redmine_1
303f49fbe4b7 sameersbn/postgresql:9.4-12 "/sbin/entrypoint.sh" About a minute ago Exited (0) 3 seconds ago redmine_postgresql_1