使用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