docker

基本概念

  • 镜像(Image)
    • 镜像就是一个只读的模板。
    • 镜像可以用来创建 Docker 容器。
  • 容器(Container)
    • 容器可以运行应用
    • 容器是从镜像创建的运行实例,允许被启动,开始,停止,删除
    • 各个容器之间相互隔离保证安全,相当于一个独立的linux环境
  • 仓库(Repository)
    • 仓库分为公开仓库(Public)和私有仓库(Private)两种形式
    • 仓库是集中存放镜像文件的场所

CentOS 系列安装 Docker

​ Docker支持 CentOS6.5 及之后版本

​ 使用uname -r查看系统内核版本

​ 使用 yum -y update升级所有包,包含软件和系统内核

​ 使用yum -y upgrade只升级包,不升级软件和系统内核

  • CentOS6

    • 要求系统为64位 ,系统内核版本位 2.6.32-431 及以上版本
    • CentOS6,可以使用 EPEL 库安装 Docker,命令如下
    $ sudo yum install http://mirrors.yun-idc.com/epel/6/i386/epel-release-68.noarch.rpm
    $ sudo yum install docker-io
    
  • CentOS7

    • 系统64位,系统内核版本3.10以上
    • CentOS7 系统 CentOS-Extras 库中已带 Docker,可以直接安装:
    $ sudo yum install docker
    
    • 安装之后启动 Docker 服务,并使其随系统自动加载
    $ sudo service docker start
    $ sudo chkconfig docker on
    
  • 查看Docker 版本

    docker version
    
  • 查看Docker 信息

    docker info
    

Docker 镜像

  • Docker 运行容器前 需要本地存在对应镜像
  • 如镜像本地不存在,Docker 会冲镜像仓库下载(默认是Docker Hub 公共注册服务器中的仓库)

列出镜像列表

  • 使用 docker images列出本地主机 镜像
docker images列表参数
  • REPOSITORY: 镜像的仓库源
  • TAG: 镜像的标签 (同一个仓库有可以有多个TAG,代表不此仓库源不同版本)
  • IMAGE ID: 镜像 ID
  • CREATED: 镜像创建时间
  • SIZE: 镜像大小

获取新的镜像

  • 当使用不存在镜像时Docker会自动下载此镜像
  • 也可以预先下载此镜像,使用docker pull命令

查找镜像

  • 使用docker search命令搜索镜像
docker search列表参数
  • NAME: 镜像仓库源的名称
  • DESCPIPTION: 镜像描述
  • OFFICIAL: 是否Docker官方发布

拖取镜像

  • 使用docker pull命令

创建镜像

  • 从已创建的容器中更新镜像,并提交镜像

    • 在运行中的容器中使用 apt-get update命令更新

    • 更新完成后使用 exit命令退出容器

    • 使用 docker commit提交副本容器

    • docker commit参数
      • -m: 提交的描述信息
      • -a: 指定镜像作者
      • 容器Id
      • 创建后的目标镜像名

删除镜像

  • 使用docker rmi命令移除本地镜像
  • 删除镜像之前必须用docker rm删除依赖于这个镜像的所有容器

Docker 容器

容器是独立运行的一个或一组应用,以及它们的运行态环境。

启动容器

  • 直接使用docker run新建并启动
  • 利用docker start命令,将已终止容器启动运行

终止容器

  • 使用docker stop终止一个运行中的容器
  • 当Docker 容器中指定的应用终结时,容器也自动终止(只启动一个终端的容器,通过exit或者Ctrl+d退出终端时,容器立刻终止)
  • 使用docker ps -a命令可以查看到处于终止状态的容器,可以使用docker start启动

重启容器

  • 使用docker restart将一个运行态的容器终止,再重新启动

进入容器

使用-d参数后,容器启动后会进入后台运行,需要进入容器内部操作通过docker attach命令或者nsenter工具等

  • attach 命令
    • docker attach是Docker 自带命令,使用方式docker attach 容器名
    • 注意 当多个窗口同时 attach 同一个容器时,所有窗口同步显示
  • exec 命令
    • 使用 docker exec在运行的容器中执行命令
      • -d : 分离模式: 在后台运行
      • -i : 即使没有附加也保持STDIN 打开
      • -t : 分配一个伪终端

导出容器

  • 使用docker export命令

    docker export CONTAINERID > ***.tar
    

导入容器快照

  • 使用docker import从容器快照文件中再导入为镜像

    $ cat ***.tar | sudo docker import - ***/***:v1.0
    
  • 或者 通过 指定URL 或者目录导入

    $sudo docker import http://example.com/exampleimage.tgz example/imagerepo
    

删除容器

  • 使用docker rm删除处于终止状态的容器
  • 删除运行中容器 添加 -f参数,Docker 会发送 SIGKILL 信号给容器

Docker 安装 MinIO 文件服务器

  • 使用docker search minio搜索镜像

  • 使用docker pull docker.io/minio/minio拉取镜像

  • 启动 docker

    MinIO 需要一个持久卷来存储配置和应用数据。可以通过简单地传递一个目录(在下面的示例中为/ data)启动MinIO。这个目录会在容器启动时在容器的文件系统中创建,不过所有的数据都会在容器退出时丢失。

    docker run -p 9000:9000 minio/minio server /data
    

    要创建具有永久存储的MinIO容器,需要将本地持久目录从主机操作系统映射到虚拟配置~/.minio 并导出/data目录。 为此,请运行以下命令

    • GNU/Linux 和 macOS
    docker run -p 9000:9000 --name minio1 \  -v /mnt/data:/data \  -v /mnt/config:/root/.minio \  minio/minio server /data
    
    • Windows
    docker run -p 9000:9000 --name minio1 \  -v D:\data:/data \  -v D:\minio\config:/root/.minio \  minio/minio server /data
    

Docker 安装 Nginx 代理服务器

  • 拉取镜像 docker push nginx

  • 启动容器 docker run -p 80:80 --name nginx -d nginx

    • -p 端口映射 将本地80(:前) 端口 映射到容器内部的80端口
    • -d 设置容器后台在运行
  • 创建目录用于存储 容器里Nginx默认配置文件

    mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
    
  • 拷贝容器内 Nginx 默认配置文件到本地当前目录下的 conf 目录

    docker cp CONTAINERID:/etc/nginx/nginx.conf ~/nginx/conf
    
  • 部署

    docker run -d -p 80:80 --name nginx -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
    
  • Nginx 热部署

    docker exec CONTAINERID nginx -s reload
    

Docker 安装 mysql

  • 拉取运行

    sudo docker pull mysql:5.7# --name指定容器名字 -v目录挂载 -p指定端口映射  -e设置mysql参数 -d后台运行sudo docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=76516051t \-d mysql:5.7
    
  • 进入容器

    docker exec -it mysql bash
    
  • 配置

    vi /mydata/mysql/conf/my.conf [client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld]init_connect='SET collation_connection = utf8_unicode_ci'init_connect='SET NAMES utf8'character-set-server=utf8collation-server=utf8_unicode_ciskip-character-set-client-handshakeskip-name-resolve
    
  • 重启 docker restart mysql

  • 登录数据库

    mysql -u root -p
    
    ALTER USER 'root'@'localhost' IDENTIFIED BY '76516051t';flush privileges;
    

Docker 安装 Nexus3

docker pull sonatype/nexus3
docker run -d -p 8081:8081 --name nexus sonatype/nexus3

Docker 安装 Wordpress

docker run -e WORDPRESS_DB_HOST=172.16.12.178:3306 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=****** -p 8082:80 --name       wordpress -d wordpress

Docker 安装 Redis

# 先在容器外创建好目录结构mkdir -p /mydata/redis/conftouch /mydata/redis/conf/redis.confdocker pull redisdocker run -p 6379:6379 --name redis \-v /mydata/redis/data:/data \-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \-d redis redis-server /etc/redis/redis.conf# 直接进去redis客户端。docker exec -it redis redis-cli# 配置持久化vim /mydata/redis/conf/redis.conf# 插入下面内容appendonly yesdocker restart redis

Docker 安装 MongoDB

  • docker run --name mongo -p 27017:27017 -v ~/dockerdata/mongo:/data/db -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin -d mongo
    

Docker 安装 Jenkins

  • docker run  --name jenkins -u root -d   -p 8080:8080   -p 50000:50000   -v jenkins-data:/var/jenkins_home   -v /var/run/docker.sock:/var/run/docker.sock   jenkinsci/blueocean
    

错误问题及解决方式记录

  • 错误信息:

    container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\""
    /usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set property TasksAccounting, or unknown property.\"".
    
  • 解决: centos系统版本兼容性问题,如果将系统做更新升级,即可解决

    yum update
    

新环境命令

docker pull portainer/portainer-ce
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加伦冲呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值