1.什么是Docke
1.网上有很多
2.为什么要使用Docker?
优点
更高效的利用系统资源
更快速的启动时间
一致的运行环境
持续交付和部署
更轻松的迁移
更轻松的维护和扩展
3.Docker的使用
3.1安装docker
以ubuntu16.04为例
官方文档:https://docs.docker.com/install/linux/docker-ce/ubuntu/
删除旧版本
$ sudo apt-get remove docker docker-engine docker.io
由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先 需要添加使用 HTTPS 传输的软件包以及 CA 证书。
$ sudo apt-get update
$ sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。 为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
更新 apt 软件包缓存,并安装 docker-ce:
$ sudo apt-get update
$ sudo apt-get install -y docker-ce
# 开机启动
$ sudo systemctl enable docker
# 启动docker服务
$ sudo systemctl start docker
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安 全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需 要使用 docker 的用户加入 docker 用户组。
# 建立 docker 组:
$ sudo groupadd docker
# 将当前用户加入 docker 组:
$ sudo usermod -aG docker $USER
# 重新登录ssh
# 验证安装
docker run hello-world
3.2 配置文件:/etc/docker/daemon.json
官方文档: https://docs.docker.com/engine/reference/commandline/dockerd/#daemonconfiguration-file
# 编辑配置文件
$ sudo vi /etc/docker/daemon.json
{
"registry-mirrors": ["], # 镜像加速的地址
"insecure-registries": [""], # 非https私有仓库地址
"data-root": "/var/lib/docker" # docker安装目录
}
3.3 创建容器
docker pull nginx
docker run -d --name web -p 80:80 nginx
查看容器运行状态
docker ps
浏览器打开:http://127.0.0.1
echo "hello world" > hello.html
docker run -d --name web -p 80:80 -v `pwd`:/usr/share/nginx/html nginx
-d 后台运行
--name 指定容器名
-p 映射端口
-v 映射数据卷
3.4 镜像(Image)和容器(Container)的关系
镜像是静态的定义,容器是镜像运行时的实体。
容器可以被创建、启动、停止、删除、暂停等。
举例:
镜像 容器
类class Apple 对象 new Apple()
安装盘ISO 虚拟机
3.5创建自己的镜像
官方文档:https://docs.docker.com/develop/develop-images/dockerfile_bestpractices/
vi Dockerfile
FROM nginx RUN
echo "hello world" > /usr/share/nginx/html/hello.html
docker build -t my-web:1.0 . (注意这个点,必须有)
查看镜像
docker images
启动容器
docker run -d --name web -p 80:80 my-web:1.0
3.5.1 环境变量
vi start.sh
echo "hello world ${MY_NUM}" > /usr/share/nginx/html/hello.html
nginx -g "daemon off;"
vi Dockerfile
FROM nginx
ENV MY_NUM="100"
ADD start.sh /start.sh
CMD sh /start.sh
启动容器
docker build -t my-web:2.0 . (注意这个点,必须有)
# 无环境变量运行
docker run -d --name web -p 80:80 my-web:2.0
# 有环境变量运行
docker run -d --name web -p 80:80 -e MY_NUM=200 my-web:2.0
# 基础镜像
FROM nginx
# 预置环境变量
ENV MY_NUM="100“
# 制作镜像的操作,尽量减少RUN的个数,可以有效减少镜像大小
RUN echo "hello world" > /usr/share/nginx/html/hello1.html
# 添加制作镜像的文件
ADD start.sh /start.sh
# 容器启动命令
# 注意区分CMD和RUN的区别
#CMD ["nginx", "-g", "daemon off;"]
#CMD nginx -g "daemon off;“
CMD sh /start.sh
FROM nginx
RUN dd if=/dev/zero bs=1024 count=102400 of=/root/100MB.file
RUN rm -f /root/100MB.file
#RUN dd if=/dev/zero bs=1024 count=102400 of=/root/100MB.file && rm -f /root/100MB.file
docker build -t test:1.0 .
docker build -t test:2.0 .
2.docker-compose
官方文档: https://docs.docker.com/compose/install/ https://docs.docker.com/compose/compose-file/
官网安装
$ sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/dockercompose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
公司内网安装
$ sudo curl -L http://ftp.fzyun.io/lib/docker-compose/1.23.1/docker-composeLinux-x86_64 -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
docker run -d --name web -p 80:80 -e MY_NUM=200 \ -v `pwd`/web:/usr/share/nginx/html/ my-web:2.0
vi docker-compose.yml
version: "3.5"
services:
web:
image: nginx
restart: always
ports: - "80:80"
volumes:
- ./web:/usr/share/nginx/html/
environment:
MY_NUM: 200
多服务样例:
version: "3.5"
services:
web:
image: nginx:1.15.12-alpine
restart: always
ports: - "80:80"
mysql:
image: mysql:5.7
restart: always
ports: - “3306:3306"
environment: MYSQL_ROOT_PASSWORD: ***(root用户密码)
docker 常用命令
1.docker ps -a 查看容器
2.docker stop 容器id 停止容器
3.docker rm 容器id 删除容器
4.docker images 查看镜像
5.docker rmi 镜像id 删除镜像
6.docker exec -it web(镜像名称) bash 进入镜像里面
7.docker-compose up -d
8.docker-compose rm -sf 9.docker-compose exec web bash 10.docker-compose exec web sh