docker

使用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/mysqllatest                  ##阿里雲提供鏡像加速器: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主機數據掛載到容器:

  volumesDocker管理宿主機文件系統的一部分(/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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章