一、介绍
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器的性能开销极低,启动速度相对来说比较快。
从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。
Docker CE 即社区免费版,Docker EE 即企业版,强调安全,但需付费使用。
这里介绍CentOS使用阿里云的源手动安装 Docker CE 的方法,另外还可以使用安装脚本直接安装的方法,这里不作介绍,请自行百度/谷歌。
MacOS的请到下面这个地址根据指引来安装1
https://docs.docker.com/docker-for-mac/install/
Windows的请到下面这个地址根据指引来安装1
https://docs.docker.com/docker-for-windows/install/
二、安装前准备
1.1 删除之前已经安装的Docker相关的包
1 | yum remove -y docker \ |
1.2 安装的Yum的工具
1 | yum install -y yum-utils |
1.3 添加Docker CE的Yum仓库
1 | yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo |
默认的地址相对来说会比较慢,我们换成阿里云的镜像站点
三、开始安装
2.1 执行Yum安装命令
1 | yum install -y docker-ce docker-ce-cli containerd.io |
2.2 启动Docker
1 | systemctl start docker |
2.2 把Docker设置成随机启动
1 | systemctl enable docker |
四、测试安装是否成功
3.1 执行测试命令
1 | docker run hello-world |
如果执行命令后出现下面的信息就表示安装成功了1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:7f0a9f93b4aa3022c3a4c147a449bf11e0941a1fd0bf4a8e6c9408b2600777c5
Status: Downloaded newer image for hello-world:latest
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://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
参考内容:https://docs.docker.com/engine/install/
五、常用Docker命令
容器生命周期管理
- run 创建一个新的容器并运行一个命令
语法1
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS说明:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
- start/stop/restart 启动一个或多个已经被停止的容器/停止一个运行中的容器/重启容器
语法1
docker start/stop/restart CONTAINER [CONTAINER...]
- kill 杀死一个正在运行的容器实例
- rm 删除一个容器的实例
- pause/unpause 暂停/恢复容器中所有的进程
- create 创建一个新的容器但不启动它
- exec 在运行的容器中执行命令
语法1
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS说明:1
2
3
4
5-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
PS:start/stop/restart/kill/rm/pause/unpause/exec 这几个命令可以根据容器的名称和ID来进行操作
容器操作
- ps 列出正在运行的容器实例
- inspect 获取容器/镜像的元数据
- top 查看容器中运行的进程信息,支持 ps 命令参数
- attach 连接到正在运行中的容器
- events 从容器中获取实时事件
- logs 获取容器的日志
- wait 阻塞运行直到容器停止,然后打印出它的退出代码
- export 将文件系统作为一个tar归档文件导出到STDOUT
- port 列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口
容器rootfs命令
- commit 从现有的容器创建一个新的镜像
- cp 用于容器与主机之间的数据拷贝
- diff 检查容器里文件结构的更改
镜像仓库
- login/logout 登陆到/登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
- pull 从镜像仓库中拉取或者更新指定镜像
- push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
- search 从Docker Hub查找镜像
本地镜像管理
- images 列出本地镜像
- rmi 删除本地一个或多少镜像
- tag 标记本地镜像,将其归入某一仓库
- build 命令用于使用 Dockerfile 创建镜像
- history 查看指定镜像的创建历史
- save 将指定镜像保存成 tar 归档文件
- import从归档文件中创建镜像
Docker信息
- info 显示 Docker 系统信息,包括镜像和容器数
- version 显示 Docker 版本信息
本站版权使用署名-非商业性使用-禁止演绎 4.0 国际,转载请保留原文链接及作者。