docker



1. docker 好处

  1. 应用更快速的交互和部署

    传统模式,安装一堆应用程序,redis,mysql,php
    docker,打包镜像发布测试,一键运行

  2. 快捷的升级和扩缩容

    部署就像搭积木,项目整体打包成一个镜像,扩展A,B,C....服务器

  3. 更简单的运维系统

    在容器化后,开发环境,测试环境和线上环境高度一致

  4. 更高效的计算利用资源

    docker 是内核级别的虚拟化,可以运行很多容器实列


2. 名词概念

  1. 镜像(image)

    docker 镜像可以看作是一个文件系统,里面有各个程序软件,可以通过模板创建容器服务或多个服务

  2. 容器(container)

    独立运行一组或多个多组应用,通过镜像创建。可以理解为一个容器对应一个linux系统

    启动,停止,删除等基本命令

  3. 仓库(repository)

    存放镜像的地方,仓库可分为公有的和私有的


2. 安装 docker

参考官方安装文档地址:docker docs centos

参考官方命令地址:docker command

  1. 卸载旧版本
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate  docker-logrotate docker-engine
  1. 需要安装的包,设置镜像仓库
$ sudo yum install -y yum-utils

$ sudo yum-config-manager --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo   // 默认国外地址


$ sudo yum-config-manager  --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo   // 阿里云镜像地址
  1. 安装 docker docker-ce 社区版 ee企业版本
// 安装最新版本
$ yum makecache fast // 更新yum
$ sudo yum install docker-ce docker-ce-cli containerd.io

// 或者安装指定版本
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
  1. 启动 docker
systemctl start docker
  1. 查看 docker 版本
docker version
  1. 创建 hello-world 镜像,如果没有就去下载 pull
docker run hello-world
  1. 查看 hello-world 镜像
docker images

3. 卸载 docker

// 卸载依赖
$ sudo yum remove docker-ce docker-ce-cli containerd.io
// 删除目录
$ sudo rm -rf /var/lib/docker

4. docker 镜像加速

使用加速器可以提升获取docker官方镜像的下载速度,阿里云地址

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xw5na8n9.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

5. 镜像命令


  1. docker images 查看所有本地主机上的镜像
[root@ /] docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    bf756fb1ae65   11 months ago   13.3kB

// 解释
    REPOSITORY 镜像名,仓库源
    TAG        标签,版本
    IMAGE ID   镜像ID
    CREATED    创建时间
    SIZE       大小

// 可选项
    -a,--all    // 查看所有镜像
    -q,--quiet  // 查看镜像ID

  1. docker search 搜索镜像
[root@ /] docker search mysql
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                             MySQL is a widely used, open-source relation…   10295     [OK]       
mariadb                           MariaDB is a community-developed fork of MyS…   3809      [OK]       

// 可选项,通过搜藏来过滤
    --filter=STARS=3000     // 搜索镜像STARS(关注数)大于3000的

  1. docker pull 下载镜像
[root@ /] docker pull mysql
Using default tag: latest // 默认值latest版本,可以指定版本
latest: Pulling from library/mysql
6ec7b7d162b2: Pull complete  // 分层下载,docker images的核心联合文件系统
fedd960d3481: Pull complete 
7ab947313861: Pull complete 
64f92f19e638: Pull complete 
3e80b17bff96: Pull complete 
014e976799f9: Pull complete 
59ae84fee1b3: Pull complete 
ffe10de703ea: Pull complete 
657af6d90c83: Pull complete 
98bfb480322c: Pull complete 
6aa3859c4789: Pull complete 
1ed875d851ef: Pull complete 
Digest: sha256:78800e6d3f1b230e35275145e657b82c3fb02a27b2d8e76aac2f5e90c1c30873 // 签名,防伪
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest // 真实地址

// 等同于
    docker pull mysql 
    docker pull docker.io/library/mysql:latest 
    
// 下载指定版本
    docker pull mysql:5.7

  1. docker rmi 删除镜像
[root@ /] docker rmi -f IMAGE ID // 删除指定镜像
[root@ /] docker rmi -f IMAGE ID  IMAGE ID  IMAGE ID // 删除多个镜像
[root@ /] docker rmi -f $(docker images -aq) // 删除指定镜像

6. 容器命令

只有创建了镜像,才可以创建容器

[root@ /] docker pull centos   // 安装 centos 镜像

  1. docker run [可选参数] image 新建容器并启动
[root@ /] docker run -it centos /bin/bash  // 启动进入容器
[root@04f87e202399 /] ls   // 查看容器内的centos基础版本,很多命令不完善
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@04f87e202399 /] exit    // 从容器中退出,容器停止并退出。或者ctrl + p + q 容器不停止退出
exit
[root@ /]# 


// 可选参数说明
--name="name"   容器名字
-d              后台运行方式
-it             使用交互方式运行,进入容器查看内容
-P              指定容器端口  -p  8080:8080
    -p ip:主机端口:容器端口
    -p 主机端口:容器端口(常用)
    -p 容器端口
-p              随机指定端口

  1. docker ps列出所有运行的容器
[root@ /] docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
6a1400d2872a   centos    "/bin/bash"   25 seconds ago   Up 25 seconds             recursing_rubin

// 可选参数说明
    默认  列出当前运行的容器
    -a    列出当前运行的容器 + 历史运行过的容器
    -n=?  最近创建的容器
    -q    只显示容器编号

  1. docker rm image id 删除容器
docker rm 容器ID    // 删除指定容器,正在运行中的不可删除,强制删除 rm -f
docker rm -f $(docker ps -aq)   // 删除所有容器
docker ps -a -q | xargs docker rm   // 删除所有容器

  1. 启动停止容器
docker start 容器ID     // 启动容器
docker restart 容器ID   // 重启容器
docker stop 容器ID      // 停止容器
docker kill 容器ID      // 强制停止容器

  1. docker run -d 后台启动容器
[root@ /] docker run -d centos
3f5f3e00ccedaf222e8bf7d83416f3d1f4f6e1755ffc32596bdee656a5169c2a
[root@ /] docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

// docker ps 发现centos停止了
// 常见的坑 docker 使用后台容器运行,就必须有个前台进程,docker 发现没有应用,就会自动停止

  1. docker logs 查看日志
[root@ /] docker logs -tf -n 10 容器id

// 可选参数说明
    -f  跟踪日志输出
    -n  显示行数
    -t  显示时间

  1. docker top 查看容器进程命令
[root@ /] docker top f19285e56c53
  1. docker inspect 查看容器内的信息
[root@ /] docker inspect f19285e56c53
  1. docker exec -it 进入当前运行容器
[root@ /] docker exec -it f19285e56c53 /bin/bash
[root@f19285e56c53 /]#

// 扩展
    docker exec 进入容器开启一个新的终端,
    docker attach 进入容器正在执行的终端,不会启动新的程序
  1. docker cp 容器内容拷贝到主机上
// 在当前主机下目录
[root@ /] docker attach 172793b5fdbd    // 进入容器
[root@172793b5fdbd /]# touch 1.php  // 创建文件
control + p + q     //退出容器
[root@ /] docker cp 172793b5fdbd:/1.php /   // 拷贝文件

6. 命令图


7. 部署nginx

[root@ /] docker search nginx   // 搜索nginx
[root@ /] docker pull nginx     // 下载
[root@ /] docker images    // 查看容器
[root@ /] docker run -d --name nginx001 -p 3344:80 nginx    // 运行
        // 参数意义
        // -d 后台运行
        // --name 重命名
        // -p 设置端口 宿主机端口:容器内部端口
[root@ /] docker ps     // 查看运行的容器
[root@ /] docker exec -it 894bdd008b3f /bin/bash    // 进入
root@894bdd008b3f:/ exit   // 退出
[root@ /]
posted @ 2020-12-22 15:20  linsonga  阅读(69)  评论(0)    收藏  举报