docker安装
-
centOS https://docs.docker.com/engine/install/centos/
-
启动docker
systemctl start docker -
默认以守护进程的方式运行
-
检查docker是否运行, docker info 或者 docker run hello-world
docker容器常用命令
- 查看docker程序运行正常 docker info
- 运行容器, docker run 镜像名
- docker run -t -i ubuntu /bin/bash
- -i 表示保证容器的stain开始,
- -t 分配一个伪tty终端,提供一个交互式shell
- -p 指定端口
- 退出交互容器, exit ,如果是交互式容器退出之后,容器也就关闭了
- 查看运行中的容器, dokcer ps
- -a 查看全部容器
- -l 列出最后运行的容器
- –format 控制输出的信息,
- –name 指定容器名称,不指定系统默认分配 容器名称必须唯一,否者会创建失败,
- 3种方式的唯一指定容器, 短id(UUID), 长id(UUID),名称
- 重启容器, docker start 容器名 或者 docker restart 容器名
1. 重启容器的话,默认会议后台方式运行容器
2. 通过参数 -a 进行交互式的会话 - 附着容器, docker attach 容器名
1. 通过attach命令,就可以打开一个交互式的shell窗口, - 创建守护式容器 docker run -d
1. -d 后台运行容器
2. docker run --name docker_test -d ubuntu /bin/sh -c “while true; do echo hello world”; done"
3. 启动一个后台执行的容器,每秒输出 hello word
4. 通过 docker ps 查看 status - 查看日志 docker logs 容器名
1. docker logs docker_test
2. -f 参数 持续输出,监控日志, docker logs -f
3. 输出最后多少行, docker logs -100f
4. docker 日志驱动 --logs-driver
5. docker run --log-driver=“syslog” --name docker_test -d ubuntu /bin/sh -c “while true; do echo hello world”; done" - 查看容器进程, docker top
- 查看容器状态,docker stat
1. 查看机器的cpu使用率,网络IO 内存IO情况 - 在容器内额外启动新进程, docker exec
1. docker在容器内可以启动两种进程,后台式任务,和交互式人物
2. 后台式任务,通过 -d 参数指定 docker exec -d chenghui_docker touch /etc/new_config_file
交互式任务, 通过 -i -t 指定 - 停止容器, docker stop 容器名/ 容器ID
1. docker stop chenghui_docker
2. stop是向容器发送一个停止的指令 - 快速停止容器, docker kill
1. docker kill chenghui_docker - 自动重启容器 ,通过run --restart
1. docker run --retart=always - 查询容器的详细配置信息, docker inspect
- 删除容器, docker rm 容器ID
- 删除所有容器,docker rm docker ps -a -q
1. -a 标识列出所有容器
2. -q 表示只返回id
3. 一定是` 不是单引号
镜像相关命令
- 查看镜像列表 docker images
- docker 镜像位置在 /var/lib/docker目录下
- 镜像从registry中下载下来, 公共的镜像仓库就是 docker Hub(类似git仓库)
- 从远程仓库下载镜像文件, docker pull 镜像名:标签,
1. docker pull 镜像名
2. 不指定标签,默认最新版本
3. 获取镜像通过 镜像名+标签 - docker 镜像 tag功能,
- 每个镜像在带出来的时候带一个标签 例:12.04
- latest 标识最新
- 查找镜像, docker search
- docker search redis
- 登录 docker hub docker login
- 用户的认证信息保存在 ~/docker/config.json
- 退出 docker hub docker logout
- 构建镜像
1. 提交镜像, docker commit
1. 对已有的镜像修改之后,通过commit进行提交
2. docker commit 容器ID 镜像名
3. docker commit 465b9ef976ae docker1ch/apache2
4. docker images 查看
5. -m 参数指定提交信心 -m ‘提交’
6. -a 参数指定作者信息
7. :tag 打标签
8. commit 是提交到本地 - 通过Dockerfile + docker build 构建docker镜像
- 新建Dockerfile 文件
- Dockerfile FROM第一条指定,必须有,用来指定基础镜像
- RUN 表示 要执行的指令
- EXPOSE 表示要开放的端口
- docker build -t=“仓库/镜像名” 目录位置
- docker build -t=“docker1ch/static_web” .
- 查看构建历史, docker history
- docker -p 表示docker运行时公开端口号给外部宿主机
- docker -p 80
- 两种分配策略
- docker容器在宿主机上随机选择 32768 - 61000中比较大的端口映射到80
- 指定宿主机的端口映射到容器的80上边
- docker查看端口号, docker port
- 推送到docker hub docker push 镜像名
- docker push docker1ch/static_web
- 删除镜像 docker rmi 镜像名
- docker rmi static_web
- 删除多个镜像, docker rmi ·docker images -a -q·
- 不能删除基于当前镜像正在运行的容器
- 挂载卷, docker run -v
- -v 允许把宿主机的目录作为卷挂载到容器中
- -v 指定两个目录,中间用 : 分割 ; 如果容器目录不存在,那么会自动创建一个
- 通过 rw 或者ro 指定读写
- 卷的概念
- 卷是一个容器或者多个容器内被选定的目录
- 可以绕过分层联合系统,为docker容器提供持久化的数据 或者共享数据
- 卷的修复是实时生效的
- 卷可以绕过镜像,卷不被包含在镜像内
- 卷可以在容器内共享
- 容器停止,卷也存在
- Dockerfile指令
- CMD
其他
uname -a 查看内核版本
docker 安装mysql
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
进入容器
docker exec -it mysql bash
docker 安装redis
docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf
-v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes