docker学习笔记整理

1、理解

1.1 docker 是什么

  • 开源的软件部署解决方案
  • 轻量级的应用容器框架
  • 可以打包、发布、运行任何应用

1.2 docker 学习网站推荐

1.3 docker 的核心概念

  • 仓库(Repository)
    • 用于存放镜像文件
    • docker 仓库有很多个,如国内的阿里云、网易云、DaoCloud、国外的docker hub、Quay等,选择合适的仓库,可以提高资源获取效率 docker
    • 仓库中存在很多不同的镜像,如:centos6、centos7、ubuntu10、buntu11、jeinkins、python、mysql、php、tomcat、apache等等
  • 镜像(Image)
    • 类似于rar、zip的压缩包,我们可以将一系列文件统一打包成一个压缩文件,方便传输、下载和使用
    • 镜像文件是可读的;运行容器时,只是在镜像上面创建了一个可写层,而镜像本身不会发生变化
    • 例如我们可以从 docker 仓库中下载 centos6、 jenkins 等镜像;
  • 容器(container)
    • 容器 = 镜像+ 读写层; 可以理解为 java 的类和对象, 镜像是类,容器是对象。
    • 一个镜像可以创建很多个容器, 并且这些容器都可以独立运行,任何一个停掉也不会影响另一个

1.4 docker 的优点

  • 高效构建应用——使用命名一键式部署
  • 快速交付和部署——搭配jenkins持续集成
  • 迁移扩展性强——将容器打包成镜像,移植到新的机器上
  • 更新管理方便——使用可视化工具管理(如:protainer)
  • 启动速度快——秒级
  • 同时支持上千个容器
  • 隔离性强——各个容器互不干扰

2、安装 (centos 为例)

  1. 安装所需软件包: yum install -y yum-utils device-mapper-persistent-data
    lvm2
  2. 设置仓库:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. 安装Docker Engine-Community: yum install docker-ce docker-ce-cli containerd.io
  4. 列出可用版本: yum list docker-ce --showduplicates | sort -r
  5. 安装: yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io
  6. 启动docker: systemctl start docker
  7. 验证安装成功: docker run hello-world

3、容器使用常用命令

  • 运行容器:docker run -i -t ubuntu:15.10 /bin/bash
    • -i 交互式运行
    • -t 终端模式
    • -d 后台运行(不会进入容器) 如:docker run -d ubuntu:15.10 /bin/sh -c “while true; do echo working; sleep 60;done”
    • -P 容器端口映射到主机随机端口
    • -p 容器端口映射到主机指定一个端口 (如加了ip,则默认为 tcp 端口, 如果要绑定udp 端口, 需要在端口后加上 /udp)
    • –name 命名容器
    • –dns=8.8.8.8 指定dns
  • 进入后台容器: docker attach 或者 docker exec ( exec 退出容器时,容器不会停止)
  • 退出交互式容器:ctrl + D 或者 exit 退出交互式容器
  • 启动容器: docker start name 或者 docker start id
  • 停止容器: docker stop name 或者 docker stop id
  • 重启容器: docker restart name 或者 docker restart id
  • 导出容器: docker export 1e5 > /dev/ubuntu.tar
  • 导入容器:cat /dev/ubuntu.tar | docker import - test/ubuntu:v1 (将
    ubuntu.tar 导入到颈项 test/ubuntu:v1
  • 导入容器: docker import http://example.com/exampleimage.tgz
    example/imagerepo 通过URL 导入
  • 删除容器:docker rm -f id (删除前要先停止运行)
  • 清除所有终止的容器:docker container prune
  • 端口查看: docker port id/name
  • 查看状态: docker ps 或 docker ps -a (-a 展示所有运行过的容器 -l 显示最后一个运行的容器)
  • 查看运行日志: docker logs name/id 或 docker logs -f name/id ( -f
    持续标准输出)
  • 查看容器进程: docker top id/name
  • 查看容器底层信息: docker inspect id/name
  • 与宿主机传文件: docker cp container_id:/root/test /root (容器 拷贝到宿主机)

4、关于镜像的命令

  1. 列出本机镜像:docker images ( 使用 docker run 运行镜像)
  2. 预下载镜像: docker pull 镜像名
  3. 搜索镜像: docker search httpd
  4. 删除镜像: docker rmi hello-world
  5. 更新镜像: 进入容器终端,使用 apt-get update ; 然后退出终端,使用 docker commit -m=“comments” -a=“author” 容器id 目标镜像名 提交镜像
  6. 创建镜像:
    1、 从已经创建的容器更新镜像,再提交;
    2、使用 dockerfile 创建新镜像
  7. 构建镜像:创建Dockerfile 文件, 通过 docker build 执行Dockerfile 来构建镜像
$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"
RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
$ docker build -t runoob:centos:6.7 /root     # /root 为Dockerfile 所在位置 
  1. 设置镜像标签 : docker tag image_id tag_name

5、实例之运行一个web应用容器

$ docker pull training/webapp     # 载入镜像
$ docker run -d -P training/webapp python app.py    # -d 后台运行   -P 端口映射到主机的随机一个端口
$ docker ps
$ docker run -d -p 5000:5000 training/webapp python app.py    # -p   端口映射到主机的指定一个端口

6、容器连接

$ docker network create -d bridge test-net  # -d 指定网络类型为 bridge

# 后台运行2个容器 test1、 test2 ,指定网络为 test-net
$ docker run -id --name test1 --network test-net centos  /bin/bash
$ docker run -id --name test2 --network test-net centos  /bin/bash

# 查看test1、tesst2 运行正常
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
428af62a7e37        centos              "/bin/bash"         7 minutes ago       Up 7 minutes                                 test2
879f20b21768        centos              "/bin/bash"         7 minutes ago       Up 7 minutes
                                 test1
# 验证 test1、test2 网络互通
$ docker exec -it test1 /bin/bash
$  ping  test2 

7、 docker 可视化工具

这里推荐portainer (docker ui 没有账号权限控制,功能简单,没命令号; k8s 需要多台机器部署):

$ docker pull portainer/portainer
$ docker run -id --name protainer  -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer  #单机版
$ #集群版:
$ docker run -id --name portainer -p 9000:9000 --restart=always portainer/portainer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值