先说明下我用的系统是Linux CentOS,不同的Linux版本差别不大。
1.安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2.设置云镜像源
因为docker默认官方的镜像源地址是国外的,速度很慢,这里将数据源设置为阿里云的镜像。当然国内还有其他的镜像源,在此不再一一介绍。
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装 Docker-CE
Docker CE(Community Edition) 社区免费版,属于docker引擎。
sudo yum install docker-ce
4.启动 Docker-CE
添加启动Docker服务
sudo systemctl enable docker
sudo systemctl start docker
5.为 Docker 建立用户组
docker 命令与 Docker 引擎通讯之间通过 UnixSocket ,但是能够有权限访问 UnixSocket 的用户只有 root 和 docker 用户组的用户才能够进行访问,所以我们需要建立一个 docker 用户组,并且将需要访问 docker 的用户添加到这一个用户组当中来。
1. 建立 Docker 用户组
sudo groupadd docker
2. 添加当前用户到 docker 组
sudo usermod -aG docker $USER
6.GUI 管理配置 (可选配置)
gui管理工具 有需要则可以安装使用,没有强制要求。
Portainer
官方地址:https://portainer.io/install.html (国外地址如果不能访问建议翻墙)
安装命令:
docker volume create portainer_data
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
然后通过自己的IP 9000端口访问
下面能看到自己的容器、镜像等。
7.Docker基本概念介绍
镜像(Image)
这里面保存了应用和需要的依赖环境 比如运行runtime 和webapp
为什么需要多个镜像?当开发、构建和运行容器化应用程序时,我们通常会有不同优先级。通过为这些 独立的任务提供不同镜像
容器(Container)
镜像的实例。一个容器代表一个正在运行的应用程序、进程或服务。它由 Docker 镜像、执行环境和标准指令集组成。需要扩展服务时,我
真正将镜像跑起来的东西,镜像在容器里面。可以看作是一个完全隔离的盒子。
一个容器镜像实例 代表一个独立的进程。
Hub
远程存放镜像的平台, hub上已经有很多制作好的镜像 比如redis mongodb。
仓库 (repository)
仓库用来保存镜像的地方。
镜像构建完成后,可以直接在当前宿主上运行,但是 如果需要在其它服务器上使用这个镜像,就需要一个集中存储、分发镜像的服务。仓库就是这样的一个服务。
8.Docker常用命令
docker ps --查看目前正在运行的所有容器 -a 显示包括已经停止的容器
docker pull --拉取镜像
docker rmi --删除镜像 后面可以直接根据镜像 名称或者tag 前首字母匹配
docker start container_id --打开容器 (这里可以是容器id或名称)
docker stop container_id --停止容器 (这里可以是容器id或名称)
docker rm --删除容器(只有停止的容器才可以删除)
docker build --使用 Dockerfile 创建镜像
docker exec --容器中执行命令,例如:docker exec -it container_id(容器名或id) /bin/bash (bin/bash要执行的命令或工具)
docker logs --查看 容器日志 ,例如:docker logs -f -t --tail 10 container_id (容器名或id)
运行容器
docker run -it --rm -p 8000:80 --name aspnet_sample microsoft/dotnet__
--name 容器名称 ,后面跟着是镜像路径或名称
--rm 运行完后删除该容器
-p 端口映射 8000 外部端口 80镜像里面运行的端口 将8000映射到镜像里面的80
-it 输出容器命令行的内容 即容器的自身的程序输出在控制台 有点类似前台运行
-d 和it相反 隐藏后台运行