Docker学习笔记
一、docker的简单介绍
什么是docker
基于 Go 语言开发的一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
docker基本要素
-
Docker_Host:
-
-
安装Docker的主机
-
-
Docker Daemon:
-
-
运行在Docker主机上的Docker后台进程
-
-
Client:
-
-
操作Docker主机的客户端(命令行、UI等)
-
-
Registry:
-
-
镜像仓库
-
Docker Hub
-
-
Images:
-
-
镜像,带环境打包好的程序,可以直接启动运行
-
-
Containers:
-
-
容器,由镜像启动起来正在运行中的程序
-
docker解决的问题
-
开发、生产、测试环境不一致,开发环境下可用的服务挪到生产上不可用。
-
不同环境之间迁移成本太高,没有统一的软件部署封装标准及封装环境。
-
对于分布式软件持续集成(测试、打包、发布、部署、管理)周期很长,难以自动化、工程化。
-
面临瞬时用户流量增大的场景,很难实现分布式应用服务实例的快速部署。
二、docker的安装
Linux下离线安装Docker
1、基础环境
1、操作系统:CentOS 7.3
2、Docker版本:18.06.1 官方下载地址(打不开可能很慢)
3、百度云Docker 18.06.1地址:百度网盘 请输入提取码 密码:dvvh
4、官方参考文档:Install Docker Engine from binaries | Docker Docs
2、Docker安装
1、解压
tar -xvf docker-18.06.1-ce.tgz
2、将解压出来的docker文件内容移动到 /usr/bin/ 目录下
mv docker/* /usr/bin/
3、将docker注册为service
vim /etc/systemd/system/docker.service
将下列配置加到docker.service中并保存
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity # Uncomment TasksMax if your systemd version supports it. # Only systemd 226 and above support this version. #TasksMax=infinity TimeoutStartSec=0 # set delegate yes so that systemd does not reset the cgroups of docker containers Delegate=yes # kill only the docker process, not all processes in the cgroup KillMode=process # restart the docker process if it exits prematurely Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target
4、启动
chmod +x /etc/systemd/system/docker.service #添加文件权限并启动docker systemctl daemon-reload #重载unit配置文件 systemctl start docker #启动Docker systemctl enable docker.service #设置开机自启
5、验证
systemctl status docker #查看Docker状态 docker -v #查看Docker版本
三、docker的操作命令
1、容器生命周期管理命令
1.1 run
创建一个新的容器。
# 使用docker镜像nginx:latest以后台模式启动一个容器, # 并将容器命名为mynginx。 $ docker run --name mynginx -d nginx:latest # 使用镜像 nginx:latest,以后台模式启动一个容器, # 将容器的 80 端口映射到主机的 80 端口, # 主机的目录 /data 映射到容器的 /data。 $ docker run -p 80:80 -v /data:/data -d nginx:latest # 使用镜像nginx:latest以交互模式启动一个容器, # 在容器内执行/bin/bash命令。 $ docker run -it nginx:latest /bin/bash
1.2 start/stop/restart
-
docker start : 启动一个或多个已经被停止的容器。
-
docker stop : 停止一个运行中的容器。
-
docker restart : 重启容器。
# 启动已被停止的容器mynginx $ docker start mynginx # 停止运行中的容器mynginx $ docker stop mynginx # 重启容器mynginx $ docker restart mynginx
1.3 kill
杀掉一个运行中的容器。可选参数:
-
-s : 发送什么信号到容器,默认 KILL
# 根据容器名字杀掉容器 $ docker kill tomcat7 # 根据容器ID杀掉容器 $ docker kill 65d4a94f7a39
1.4 rm
删除一个或多个容器。
# 强制删除容器 db01、db02: $ docker rm -f db01 db02 # 删除容器 nginx01, 并删除容器挂载的数据卷: $ docker rm -v nginx01 # 删除所有已经停止的容器: $ docker rm $(docker ps -a -q)