一、安装
1.docker软件包在extras中默认存在,可以直接使用yum进行安装
[root@tong ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
!base/7/x86_64 CentOS-7 10,019
!epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 12,860
!extras/7/x86_64 CentOS-7 321
!nginx/x86_64 nginx repo 138
!updates/7/x86_64 CentOS-7 628
repolist: 23,966
[root@tong ~]# yum -y install docker
Loaded plugins: fastestmirror
base | 3.6 kB 00:00:00
epel | 4.7 kB 00:00:00
......
Installed:
docker.x86_64 2:1.13.1-88.git07f3374.el7.centos
......
Complete!
[root@tong ~]# systemctl start docker //启动Docker
[root@tong ~]# docker -v //查看版本
Docker version 1.13.1, build 07f3374/1.13.1
[root@tong ~]# docker version //确定docker服务在运行,如果只有客户端则说明服务未启动
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-88.git07f3374.el7.centos.x86_64
Go version: go1.9.4
Git commit: 07f3374/1.13.1
Built: Fri Dec 7 16:13:51 2018
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-88.git07f3374.el7.centos.x86_64
Go version: go1.9.4
Git commit: 07f3374/1.13.1
Built: Fri Dec 7 16:13:51 2018
OS/Arch: linux/amd64
Experimental: false
二、基本使用
1.帮助
当你忘记命令时来使用它吧
docker
[root@client ~]# docker
Usage: docker COMMAND
A self-sufficient runtime for containers
Options:
--config string Location of client config files (default "/root/.docker")
-D, --debug Enable debug mode
--help Print usage
-H, --host list Daemon socket(s) to connect to (default [])
-l, --log-level string Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
....................
2.镜像操作
(1)查看
- 查看镜像:docker images
- 查看镜像制作历史:docker history 镜像名
- 查看拉取到本地的镜像:docker image list
(2)搜索
docker search 镜像名
(3)拉取镜像
docker pull 镜像名
示例:
[root@tong ~]# docker search nginx //搜索镜像
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/nginx Official build of Nginx. 10742 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1508 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 676 [OK]
docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 468 [OK]
docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 120 [OK]
........
docker.io docker.io/ansibleplaybookbundle/nginx-apb An APB to deploy NGINX 0 [OK]
docker.io docker.io/wodby/nginx Generic nginx 0 [OK]
[root@tong ~]# docker search nginx -s 100 //查找 star 数至少为 100 的镜像
Flag --stars has been deprecated, use --filter=stars=3 instead
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/nginx Official build of Nginx. 10742 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1508 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 676 [OK]
docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 468 [OK]
docker.io docker.io/webdevops/php-nginx Nginx with PHP-FPM 120 [OK]
docker.io docker.io/kitematic/hello-world-nginx A light-weight nginx container that demons... 119
[root@tong ~]# docker pull docker.io/nginx //拉取镜像
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
177e7ef0df69: Pull complete
ea57c53235df: Pull complete
bbdb1fbd4a86: Pull complete
Digest: sha256:b543f6d0983fbc25b9874e22f4fe257a567111da96fd1d8f1b44315f1236398c
Status: Downloaded newer image for docker.io/nginx:latest
[root@tong ~]# docker image list //查看已经拉取到本地的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 7042885a156a 3 weeks ago 109 MB
3.容器操作
(1)创建容器:docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
(2)查看
1.容器具体情况:docker inspect
2.容器名称:docker ps
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- –format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
[root@client ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 容器服务端事件:docker events
- 容器日志:docker logs [OPTIONS] CONTAINER --tail选项可以指定查看最后几条日志 -t选项则可以对日志条目附加时间戳 -f选项可以跟踪日志的输出,直到手动停止
- 容器变化情况: docker diff CONTAINER
(3)内容交互
- 后台型
[root@master ~]# docker exec -d 68656 touch test.txt
- 交互型:
[root@master ~]# docker exec -i -t 68656 /bin/bash
root@68656146eb6e:/# ls
a.txt bin boot c.txt dev etc haha hello home lib lib64 media mnt opt proc
root run sbin srv sys tmp usr var
(4)关闭容器
- 正常关闭:docker stop
- 强制关闭:docker kill
(5)删除容器:docker rm CONTAINER
(6)容器文件打包
- export,与import相对应
- save,与load命令相对应:docker save -o nginx.tar nginx
(7)容器导入内容
- import,与export命令相对应
- load,与save命令相对应:docker load < nginx.tar
(8)与宿主机之间拷贝文件
- docker cp [OPTIONS] CONTAINER:PATH LOCALPATH
- docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH
示例:
创建容器
[root@master ~]# docker create -it --name "first1-docker" docker.io/hello-world /bin/bash
....
宿主机和容器之间拷贝文件
拷贝容器mysql中/usr/local/bin/first.sh文件到宿主机
[root@docker ~]#docker cp mysql:/usr/local/bin/first-.sh /root
宿主机拷贝至容器
[root@docker ~]## docker cp /root/first.sh mysql:/usr/local/bin/
关闭容器
[root@master ~]# docker stop mysql.1
[root@master ~]# docker kill $(docker ps -a -q) //杀死所有状态的容器
[root@master ~]# docker kill $(docker ps -q) //杀死所有running状态的容器
关于stop和kill
docker stop命令给容器中的进程发送SIGTERM信号,默认行为是会导致容器退出。容器内程序可以捕获该信号并自行处理,例如可以选择忽略。而docker kill则是给容器的进程发送SIGKILL信号,该信号会使容器必然退出。
删除容器
[root@master ~]#docker rm mysql.1 //-f强制删除
查看容器内发生改变的
[root@master ~]# docker diff nginx1
A /test.txt
C对应的均是目录,A对应的均是文件
实时查看docker服务器端事件
[root@master ~]# docker start second_con
second_con
[root@master ~]# docker events
查看镜像制作历史
[root@master ~]# docker history docker.io/ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
ebcd9d4fca80 7 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0 B
<missing> 7 weeks ago /bin/sh -c mkdir -p /run/systemd && echo 'doc 7B
<missing> 7 weeks ago /bin/sh -c sed -i 's/^#\s*\(deb.*universe\)$/ 2.759 kB
<missing> 7 weeks ago /bin/sh -c rm -rf /var/lib/apt/lists/* 0 B
<missing> 7 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /u 745 B
<missing> 7 weeks ago /bin/sh -c #(nop) ADD file:d14b493577228a4989 117.9 MB
容器文件系统打包
[root@docker ~]# docker export -o mysql1_2.tar mysql1
[root@master ~]# docker export mysql1 > mysql1_3.tar
import 根据tar文件的内容新建一个镜像
[root@master ~]# docker import mysql1_3.tar mysql:v1
sha256:687b57b86ab854687de4c1d1cd796037032a17f8c93290700aabef31cc67f6e9
[root@master ~]# docker images