?1. 环境如下
[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. 默认下载的话会从extras库中下载1.13的版本(我用的阿里镜像源)。但是现在的docker正处于快速生长、快速健全的阶段,所以还是建议自建docker.repo文件下载最新的版本。
# 直接使用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. 配置docker镜像加速器,否则镜像的速度会很慢。可以使用docker中国,也可以使用各大云厂商的镜像加速,此处以阿里云为例,需要先注册账户才可以。docker配置文件默认在/etc/docker下面,需要手动创建。
[root@docker ~]# mkdir /etc/docker
# 将上面阿里云镜像加速器中大括号部分复制到下面配置文件就可以了。内容以数组形式存在,所以按格式配置多个加速器也没关系。
[root@docker ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://p4y8tfz4.mirror.aliyuncs.com"]
}
?1. 启动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. 查看docker的C/S版本信息
[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. 查看docker的使用信息,只摘取部分配置
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. 镜像管理
[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列:用户表示“赞”的个数
[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
[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列:镜像大小
[root@docker ~]# docker image rm redis:latest
?4. 容器管理
[root@docker ~]# docker container run --help.
-d # 后台运行容器.
-i # 使用交互式访问容器.
-t # 分配一个终端,需要与-i结合使用.
--name # 给容器分配个名字.
--network string # 使容器加入到一个网络,如不指定,默认就是加到bridge网络(可以使用docker network ls查看),使用docker0的虚拟网卡.
--rm # 容器一停,就自动删除.
[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就可以了,如果需要直接进入交互式接口,需要加-ai的参数
[root@docker ~]# docker container start -ai bbox
/ #
# stop和kill区别就是:stop是发送15的信号,kill是发送9的信号。kill是强制杀死,有丢失数据的可能,所以一般不建议使用。
[root@docker ~]# docker container stop bbox
bbox
[root@docker ~]# docker container rm bbox
bbox
[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> # 访问成功
[root@docker ~]# docker container exec -it web01 /bin/sh
/ #
# 一般情况下容器只会运行程序这一个进程,日志都是保存在于宿主机上的,可以用下面命令查看。
[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" "-"
原文:https://www.cnblogs.com/ccbloom/p/10943440.html