您的位置:首页 > 运维架构 > Docker

docker

2019-12-31 20:13 831 查看

使用CentOS在线安装:

yum  install  epel-release    ##安装epel源,需要开启CentOS的yum源

yum  install  docker  -y          ##同时安装docker-cli客户端

setenforce  0                       ##设置selinux为disable并重启

systemctl  start  docker

 

官方最新CE版安装:

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo                      ##官方repo源获取

(阿里云源安装:wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo)

yum list docker-ce --showduplicates | sort -r            ##查看版本

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

docker --version                                                         ##测试是否安装成功

 

(版本升级删除旧版本:yum  remove  docker  docker-common  docker-selinux  docker-engine)

 

Docker加速配置:

前提:方式不可同时使用、配置完成需要重启daemon

 

方式一:

mkdir /etc/docker

cat > /etc/docker/daemon.json << EOF

{

  "registry-mirrors": ["https:/jzngeu7d.mirror.aliyuncs.com"]

}

EOF

方式二:

vim  /etc/sysconfig/docker

OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=http://hub-mirror.c.163.com '

if [ -z "${DOCKER_CERT_PATH}" ]; then

    DOCKER_CERT_PATH=/etc/docker

fi

 

查看镜像:docker  images     ==   docker  image  ls

docker  image  build             ##

docker  image  history           ##

docker  image  inspect          ##查看镜像属性信息

docker  image  pull/push  nginx:1.11     ##拉去和推送指定版本镜像

docker  image  rm  nginx     ==    docker  rmi  nginx

docker  image  save、tag、load、import、                 ##image可省略

 

查看信息:docker  info                              ##使用docker  --help查看可使用命令

镜像重新标记:docker  tag  621d57f27e93  "test:1.0"

下载镜像:docker  pull  hub.c.163.com/library/mysql:latest                  ##阿里云提供镜像加速器:cr.console.aliyun.com

上传镜像:docker  push 

保存镜像:docker  save  mysql:5.6.34  >  /opt/mysql-5.6.34.tar.gz

加载镜像:docker  load  <  /opt/mysql-5.6.34.tar.gz

导出镜像:docker  image  export  容器id  >  xxx.tar(导出容器文件系统到tar归档文件)

导出镜像:docker  image  import  xxx.tar  test:latest(导入容器文件系统tar归档来创建镜像)



查看容器:docker  ps                                       ##-a 查看所有,-aq查看ID,杀死容器docker  rm  -f  ID

 

运行容器:(需要每个容器必要的参数指定)

docker  run  --restart=always  --name=db  -dit  -p  3306:3306 

-e  MYSQL_ROOT_PASSWORD=redhat  -e  MYSQL_DATABASE=数据库名  hub.c.163.com/library/mysql

docker  run  -p  3306:3306  mysql:5.6.34                 ##指定容器中镜像版本来启动,如果未指定则会到镜像服务器中下载

 

docker  container  run:(其中container可以省略)

-p:作端口映射

-d:后台运行

-v  宿主机目录:容器目录  :宿主机目录映射到容器,可用于做数据库的数据保存

-it:交互式分配tty

-e:添加变量,格式“-e  y=abc”

 

--name:在容器中命名

--ip  string:设置容器ip,只能用于自定义网络

--restart=always:当容器退出时重启,默认为no

--add-host  list:添加其他主机到容器中/etc/hosts

--dns  list:设置DNS服务器

--mount  mount:挂载宿主机分区到容器

--memory:容器可以使用最大内存量,-m

--memory-swap:允许使用交换内存量

--memory-swappiness=<0-100>:容器使用swap分区的百分比,默认为-1

--oom-kill-disable:当宿主机内存不足时,内核会杀死容器中的进程,建议使用-m参数之后再使用此参数

--cpus:限制容器使用cpu资源

--cpuset-cpus:限制容器使用特定cpu

 

docker  start  container_id1,container_id2……

docker  stop  ……

docker  restart  ……

docker  top  container_id                ##查看指定容器中的进程

docker  stats  container_id:查看资源使用情况

docker  port  container_id:查看端口映射

docker  update  [options]  container_id:在线调整内存、cpu限制(-c、-m)

 

docker  inspect  容器id                     ##查看所有属性

docker  cp  宿主机目录  容器名:/目录      ##实现文件复制,也可反过来复制

docker  exec  容器id  ip  a                ##查看分配的IP

docker  exec  -it  容器id  bash           ##-it分配终端,之后运行bash命令,之后输入的命令是在容器中输入和输出的

docker  container  attach  容器id     ##进入容器系统,退出使用“Ctrl+p+q”

 

docker  commit  容器名  镜像名:tag    ##将改变的数据保存并重新生成新的镜像,实现数据持久化(重启、删除数据都不会丢失) 

docker  logs  容器id                    ##查看日志,容器id使用“docker ps”查看

 

docker  rm  -fv  容器id                ##删除容器,也可tag、短ID

docker  rm  $(docker ps -qa)        ##批量删除容器

docker rmi -f  REPOSITORY:TAG(或者镜像id)         ##删除镜像

 

Docker主机数据挂载到容器:

①  volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)

②  bind  mounts:可以存储在宿主机系统的任意位置

③  tmpfs:挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统

Docker网络管理:

支持的网络模式:docker  network  ls

①  bridge:默认网络,Docker启动后默认创建一个docker0网桥,默认创建的容器会添加到这个网桥中

②  host:不会获取network namespace,而是与宿主机共用一个

③  none:获取独立的network namespave,但不配置任何网络

④  container:与指定容器使用同一个network  namespave,使用 --net=container:NAME_or_ID 指定

⑤  自定义:自定义网桥,默认与bridge网络一样


            docker私有仓库的搭建:

DockerHub:docker官方维护的一个公共仓库(https://hub.docker.com,其中包括了15000多个的镜像)

DockerPool:国内专业的docker技术社区(http://www.dockerpool.com,也提供官方镜像的下载)

 

搭建步骤:

①  先拉取registry镜像(用来启动仓库)和busybox镜像(用来上传)

docker pull registry

docker pull busybox

②  使用docker tag命令将这个镜像标记为x.x.x.x:5000/busybox

docker tag docker.io/busybox   x.x.x.x:5000/busybox

docker  images                  ##查看镜像

③  修改docker配置文件,增加参数 --insecure-registry=x.x.x.x:5000

(注:此处的参数指定为非安全模式,也就是http而不是https,然后重启docker服务)

④  创建registry容器并启动

docker run -d -p 5000:5000 --privileged=true -v /myregistry:/var/lib/registry registry

(注:/tmp/registry是registry版本1的仓库目录,此处使用v2版)

⑤  在客户端中输入如下命令,push镜像到仓库

docker push x.x.x.x:5000/busybox

⑥  查看本地目录/myregistry以及在客户端上pull刚才push的镜像

tree  /myregistry/docker/

也可通过“curl http ://192.168.200.103:5000/v2/_catalog”查看

 

Harbor:企业级私有镜像仓库

Harbor是VMware开源的企业级Docker Registry项目,地址:https://github.com/vmware/harbor

 

 

            docker中LNMP平台搭建:

步骤:

(1)创建自定义网络

docker  network  create  lnmp

 

(2)创建MySQL数据库容器

docker  run  -itd  --name  lnmp_mysql  --net  lnmp  -p  3306:3306  --mount  src=mysql_vol,dst=/var/lib/mysql  -e  MYSQL_ROOT_PASSWORD=123456  mysql  --character-set-server=utf8

 

(3)创建所需数据库

docker  exec  lnmp_mysql  sh  -c  'exec  mysql  -uroot  -p"$MYSQL_ROOT_PASSWORD"  -e"create  database  wp"'

 

(4)创建PHP环境容器

mkdir  -p  /app/wwwroot

docker  run  -itd  --name  lnmp_web  --net  lnmp  -p  808:80  --mount  type=bind,src=/app/wwwroot,dst=/var/www/html  richarvey/nginx-php-fpm

 

(5)以wordpress博客为例测试

wget  https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz

tar  zxvf  wordpress-4.7.4-zh_CN.tar.gz  -C  /app/wwwroot

浏览器访问:http://ip:808/wordpress

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: