docker(容器技术的一种实现) 我们经常会使用docker构造虚拟化环境,docker自动化部署已经慢慢成为发展的趋势。本人介绍下docker的基本使用,本人linux发行版本为centos7.4
基本概念
使用docker接触最多的就是以下3个概念,
- 镜像:image (理解成打包好的代码)
- 容器:container(跑代码的环境 例如lnmp)
- 仓库:repository(代码仓库git)
docker的安装
# 卸载原来的docker(如果之前已经有安装过)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 安装依赖
yum update -y && sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
# 添加官方yum库
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker
yum install docker-ce docker-ce-cli containerd.io
# 查看docker版本
docker --version
# 开机启动
systemctl enable --now docker
执行完上面的代码之后
看到上图的信息代表docker已经成功安装啦
配置一下 daemon.json 使用国内源下载镜像会快很多
vim /etc/docker/daemon.json
daemon.json 大致内容如下 ,当然,也可以配置自己的喜欢的其他源,例如阿里云的镜像源
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
docker的基本命令可以去www.runoob.com/docker/dock… 菜鸟教程观看
接下来将介绍docker的基本使用
看完本文的目标:拉取公共镜像,运行镜像
先了解几个简单的概念
- image(已经构建好的镜像)
- container(装载并运行镜像的的东西)
- 镜像仓库 如: hub.docker.com/ (公开的镜像仓库,类似于github)
本文以运行nginx容器为例子。我们先从镜像仓库中拉一个nginx的镜像下来
docker pull nginx
查看本地可用的镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 4 months ago 141MB
可以看到 本地上有一个nginx tag为latest的镜像 ,现在我们让nginx跑起来, 先看使用文档 跟github一样 dockerhub上面一般都会提供一些使用文档
我们往下滚
可以看到nginx的基本使用,先把执行命令贴出来
docker run -p 8080:80 --name some-nginx -v /home/www:/usr/share/nginx/html -itd nginx:latest
我们分析一下上面的代码
- docker run (启动一个容器)
- --name 给容器指定一个别名,方便以后管理(如 以后start stop rm 等)
- -d 运行在后台,其实就是类似以守护进程的形式运行,一般我们都是 -itd 连着用
- -v 文件挂载 格式 宿主机目录:容器目录 (例如 nginx容器中server的root目录为/usr/share/nginx/html,就相当于读取宿主机的/home/www)
- -p 端口映射 宿主主机端口:容器中的端口 (即访问宿主主机的8080等同于访问容器的80。因为我们例子容器中的nginx监听的是80端口) 为了方便演示 我们在宿主主机的/home/www 目录下写一个index.html 内容如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
<h2>欢迎来到容器中</h2>
</body>
</html>
现在我们启动容器,并使用docker ps 来查看运行中的容器 (docker ps -a可以看到所有容器)
[root@192 www]# docker run -p 8080:80 --name some-nginx -v /home/www:/usr/share/nginx/html -itd nginx:latest
4f2e8e6b116270ecdf01814bdbd4a3535f6103925530de50c73326b40e94489f
[root@192 www]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f2e8e6b1162 nginx:latest "/docker-entrypoint.…" 5 seconds ago Up 4 seconds 0.0.0.0:8080->80/tcp, :::8080->80/tcp some-nginx
这个时候我们访问一下index.html
我们也可以通过 docker stop | start (some-nginx|4f2e8e6b1162) 来启动或者停止容器
至此,本文的目标完成啦