简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker名词解释:
镜像:Docker 镜像是容器应用打包的标准格式,是创建容器的模板。
容器:一个通过 Docker 镜像创建的运行时实例,一台主机可运行多个同一镜像的容器实例。
安装、启动
- 首先开通阿里云ECS资源,免费体验,还在等什么呢。
- 连接。
用 CMD Powershell Terminal均可, 我在此使用CMD
命令:ssh [username]@[ipaddress]
- 安装Docker CE。
# 1. 安装Docker依赖库
yum install -y yum-utils device-mapper-persistent-data lvm2
# 2. 安装Docker CE的软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3. 安装Docker CE
yum makecache fast
yum -y install docker-ce
# 4. 启动Docker服务
systemctl start docker
# 查看Docker启动情况
systemctl status docker
配置镜像加速
Docker的默认官方远程仓库是hub.docker.com,由于网络原因,下载一个Docker官方镜像可能会需要很长的时间,甚至下载失败。为此,阿里云容器镜像服务ACR提供了官方的镜像站点,从而加速官方镜像的下载。下面介绍如何使用阿里云镜像仓库。
- 使用子账户登录阿里云。
在页面左侧资源栏点击 一键复制登录url,在浏览器中打开。进行RAM用户登录。
在左侧产品与服务中搜索镜像。
单击容器镜像服务,若提示未开通服务,关闭即可。
- 单击【镜像中心】 > 【镜像加速器】,可以看到阿里云为您提供了一个专属的镜像加速地址。
- 配置Docker仓库地址为在 【镜像加速器】中的加速器地址。
[root@i1kzth4Z ~]# ls /etc/docker/
key.json
[root@i1kzth4Z ~]# cat >> /etc/docker/daemon.json << EOF
> {
> "registry-mirrors": ["https://xxxx.aliyuncs.com"]
> }
> EOF
[root@i1kzth4Z ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxxx.aliyuncs.com"]
}
- 重新加载配置文件,重启服务。
# 加载配置文件
systemctl daemon-reload
# 重启服务
systemctl restart docker
Docker常用命令
docker search
根据名字搜索镜像
用法:docker search [OPTIONS] TERM
[root@iicxcxq7nz ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13942 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1902 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 791 [OK]
linuxserver/nginx An Nginx container, brought to you by LinuxS… 128
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 106
tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 101 [OK]
docker pull
从远程仓库拉去镜像
用法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
[root@iicxcxq7nz ~]# docker pull nginx:latest
latest: Pulling from library/nginx
bb79b6b2107f: Already exists
111447d5894d: Pull complete
a95689b8e6cb: Pull complete
1a0022e444c2: Pull complete
32b7488a3833: Pull complete
Digest: sha256:ed7f815851b5299f616220a63edac69a4cc200e7f536a56e421988da82e44ed8
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
docker images
查看本地镜像列表
用法:docker images [OPTIONS] [REPOSITORY[:TAG]]
[root@iicxcxq7nz ~]# docker images nginx:latest
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f35646e83998 2 weeks ago 133MB
[root@iicxcxq7nz ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f35646e83998 2 weeks ago 133MB
mysql 5.7 42cdba9f1b08 2 weeks ago 448MB
nginx 1.12 4037a5562b03 2 years ago 108MB
docker run
通过镜像开始一个运行实例
用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[root@iicxcxq7nz ~]# docker run --name mysql \
-p 3306:3306 \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/mysql/logs:/logs \
-v /home/mysql/data/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.6 \
--name
:设置容器实例名称
-p
:宿主机与容器端口绑定
-v
:挂载目录或数据卷,将容器内的文件夹与宿主机文件夹映射,方便修改容器内的文件。
-e
:设置容器内MySQL服务Root用户密码
-d
:后台守护运行,返回容器实例ID
docker ps
查看容器
用法:docker ps [OPTIONS]
参数:
-a
:显示全部
-n <num>
:显示最新运行的个容器
-l
:显示最新创建的容器(包括所有状态)
-q
:仅显示容器ID
-s
:显示容器总大小
[root@iicxcxq7nz demo]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
33a5981c417d nginx:latest "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 0.0.0.0:8080->80/tcp nginx-test
[root@iicxcxq7nz demo]# docker ps -s
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
33a5981c417d nginx:latest "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 0.0.0.0:8080->80/tcp nginx-test 1.29kB (virtual 133MB)
搭建Nginx服务
- 拉取最新Nginx镜像。
docker pull nginx:latest
- 运行容器。
docker run --name nginx-test -p 8080:80 -d nginx:latest
运行结果如下
- 在浏览器地址栏输入
http://<公网地址>:8080
访问Nginx服务。