Docker守護進程能夠直接與主操做系統進行通訊,爲各個Docker容器分配資源;它還能夠將容器與主操做系統隔離,並將各個容器互相隔離。虛擬機啓動須要數分鐘,而Docker容器能夠在數毫秒內啓動。因爲沒有臃腫的從操做系統,Docker能夠節省大量的磁盤空間以及其餘系統資源。php
說了這麼多Docker的優點,你們也沒有必要徹底否認虛擬機技術,由於二者有不一樣的使用場景。虛擬機更擅長於完全隔離整個運行環境。例如,雲服務提供商一般採用虛擬機技術隔離不一樣的用戶。而Docker一般用於隔離不一樣的應用,例如前端,後端以及數據庫。html
https://www.cnblogs.com/pyyu/p/9485268.html前端
安裝 yum -y install docker
啓動docker:systemctl start dockerjava
centos6啓動:service docker start
啓動容器 docker start c4f7
進去容器 docker attach d5c0python
sudo docker exec -it 775c7c9ee1e1 /bin/bash mysql
安裝ubuntu docker pull ubuntu:14.04
鏡像搜索 docker search python
鏡像下載地址 http://hub.daocloud.io/
查看有哪些鏡像 docker images
根據鏡像建立容器 docker run -tid --name abc 452a
查到全部容器的狀態 docker ps -a
鏡像建立或導入是不能夠修改的
基於鏡像封裝後的容器 建立新鏡像 docker commit 9e18 mydoc1:v2
保存鏡像到本地 docker save -o djdoc.tar djdoc
加載本地鏡像 docker load -i djdoc.tar
新的容器和原來的容器進行通信 docker run -tid --name c1 --link center 3e31linux
ping下原來容器的ip確認是否能通訊:ping 172.17.0.3ios
安裝apt-get: sudo apt-get updatenginx
ununtu安裝ping: apt-get -y install inetutils-ping git
查看主機地址: cat /etc/hosts
刪除多個images docker rm -f 69ff f3fd 43f4
docker rm -f d5c018801f95
刪除images,經過image的id來指定刪除誰
docker rmi <image id>
如何退出容器而不中止容器?
組合鍵:Ctrl+P+Q
看下docker下環境主機名:cat /etc/issue
關閉防火牆
service iptables stop
iptables -t nat -A PREROUTING -p udp --dport [端口號] -j DNAT --to-destination [目標IP]
iptables -t nat -A POSTROUTING -p tcp -d [目標IP] --dport [端口號] -j SNAT --to-source [本地服務器IP]
service iptables save
關閉默認的firewall防火牆
systemctl stop firewalld.service 關閉防火牆
systemctl disable firewalld.service 關閉開機啓動
#查看運行的redis服務,獲得redis服務的進程號,假設是1000
ps -ef|grep redis
#殺死redis進程
kill -9 1000
vi mycrawl.py
rm -rf mycrawl.py
python3 mycrawl.py
查看(ssh)服務是否啓動 sudo ps -e |grep ssh
啓動服務 sudo service ssh start
https://blog.csdn.net/sk_grace/article/details/81220675
https://www.jianshu.com/p/94eb79825372
docker pull germey/scrapyd
直接建立docker並啓動scrapyd: docker run -d -p 6800:6800 germey/scrapyd
利用阿里雲的鏡像
docker容器 1:什麼是容器? 容器就是在隔離的環境運行的一個進程,若是進程中止,容器就會銷燬。隔離的環境擁有本身的系統文件,ip地址,主機名等 kvm虛擬機,linux,系統文件 程序:代碼,命令 進程:正在運行的程序 2:容器和虛擬化的區別 linux容器技術,容器虛擬化和kvm虛擬化的區別 kvm虛擬化: 須要硬件的支持,須要模擬硬件,能夠運行不一樣的操做系統,啓動時間分鐘級(開機啓動流程) linux開機啓動流程: bios開機硬件自檢 根據bios設置的優先啓動項 網卡 硬盤 u盤 光驅 讀取mbr引導 UEFI(gpt分區) mbr硬盤分區信息,內核加載路徑 加載內核 啓動第一個進程init systemd 系統初始化完成 運行服務 。。。 容器:共用宿主機內核,運行服務,損耗少,啓動快,性能高 容器虛擬化:不須要硬件的支持。不須要模擬硬件,共用宿主機的內核,啓動時間秒級(沒有開機啓動流程) 總結: (1)與宿主機使用同一個內核,性能損耗小; (2)不須要指令級模擬; (3)容器能夠在CPU核心的本地運行指令,不須要任何專門的解釋機制; (4)避免了準虛擬化和系統調用替換中的複雜性; (5)輕量級隔離,在隔離的同時還提供共享機制,以實現容器與宿主機的資源共享。 3:容器技術的發展過程: 1):chroot技術,新建一個子系統(擁有本身完整的系統文件) 參考資料:https://www.ibm.com/developerworks/cn/linux/l-cn-chroot/ chang root 做業1:使用chroot監獄限制SSH用戶訪問指定目錄和使用指定命令 https://linux.cn/article-8313-1.html 2):linux容器(lxc) linux container(namespaces 命名空間 隔離環境 及cgroups 資源限制) 宿主機namespace ip地址,主機名,系統文件,進程 子系統namespace ip地址,主機名,系統文件,進程 cgroups 限制一個進程可以使用的資源。cpu,內存,硬盤io kvm虛擬機:資源限制(1c 1G 20G) 有一個相同函數名字: . name1 sss.sh === name1.sss() . xxxx.sh === name2.sss() ##須要使用epel源 #安裝epel源 yum install epel-release -y #編譯epel源配置文件 vi /etc/yum.repos.d/epel.repo [epel] name=Extra Packages for Enterprise Linux 7 - $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [epel-debuginfo] name=Extra Packages for Enterprise Linux 7 - $basearch - Debug baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch/debug #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1 [epel-source] name=Extra Packages for Enterprise Linux 7 - $basearch - Source baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/SRPMS #mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch failovermethod=priority enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 gpgcheck=1 ##安裝lxc yum install lxc-* -y yum install libcgroup* -y yum install bridge-utils.x86_64 -y ##橋接網卡 [root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 echo 'TYPE=Ethernet BOOTPROTO=none NAME=eth0 DEVICE=eth0 ONBOOT=yes BRIDGE=virbr0' >/etc/sysconfig/network-scripts/ifcfg-eth0 [root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-virbr0 echo 'TYPE=Bridge BOOTPROTO=static NAME=virbr0 DEVICE=virbr0 ONBOOT=yes IPADDR=10.0.0.11 NETMASK=255.255.255.0 GATEWAY=10.0.0.254 DNS1=223.5.5.5' >/etc/sysconfig/network-scripts/ifcfg-virbr0 ##啓動cgroup systemctl start cgconfig.service ##啓動lxc systemctl start lxc.service ##建立lxc容器 方法1: lxc-create -t download -n centos6 -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images -d centos -r 6 -a amd64 方法2: lxc-create -t centos -n test #####爲lxc容器設置root密碼: [root@controller ~]# chroot /var/lib/lxc/test/rootfs passwd Changing password for user root. New password: BAD PASSWORD: it is too simplistic/systematic BAD PASSWORD: is too simple Retype new password: passwd: all authentication tokens updated successfully. ##爲容器指定ip和網關 vi /var/lib/lxc/centos7/config lxc.network.name = eth0 lxc.network.ipv4 = 10.0.0.111/24 lxc.network.ipv4.gateway = 10.0.0.254 ##啓動容器 lxc-start -n centos7 3):docker容器 centos7.4 2G 10.0.0.11 docker01 host解析 centos7.4 2G 10.0.0.12 docker02 host解析 Docker是經過內核虛擬化技術(namespaces及cgroups cpu、內存、磁盤io等)來提供容器的資源隔離與安全保障等。因爲Docker經過操做系統層的虛擬化實現隔離,因此Docker容器在運行時,不須要相似虛擬機(VM)額外的操做系統開銷,提升資源利用率。 namespace 資源隔離 cgroups 進程的資源限制 docker 初期把lxc二次開發,libcontainer docker的主要目標是"Build,Ship and Run any App,Angwhere",構建,運輸,到處運行 部署服務,環境問題 一次構建docker鏡像,下載鏡像,到處運行 docker是一種軟件的打包技術 構建:作一個docker鏡像 運輸:docker pull 運行:啓動一個容器 每個容器,他都有本身的系統文件rootfs. kvm解決了硬件和操做系統之間的依賴 kvm獨立的虛擬磁盤,xml配置文件 docker解決了軟件和操做系統環境之間的依賴,可以讓獨立服務或應用程序在不一樣的環境中,獲得相同的運行結果。 docker鏡像有本身的文件系統。 docker容器是一種輕量級、可移植、自包含的軟件打包技術,使應用程序能夠在幾乎任何地方以相同的方式運行。開發人員在本身筆記本上建立並測試好的容器,無需任何修改就可以在生產系統的虛擬機、物理服務器或公有云主機上運行。 4:docker的安裝 10.0.0.11:修改主機名和host解析 rm -fr /etc/yum.repos.d/epel.repo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo yum install docker-ce -y 5:docker的主要組成部分 docker是傳統的CS架構分爲docker client和docker server,向mysql同樣 命令:docker version [root@controller ~]# docker version Client: Version: 17.12.0-ce API version: 1.35 Go version: go1.9.2 Git commit: c97c6d6 Built: Wed Dec 27 20:10:14 2017 OS/Arch: linux/amd64 Server: Engine: Version: 17.12.0-ce API version: 1.35 (minimum version 1.12) Go version: go1.9.2 Git commit: c97c6d6 Built: Wed Dec 27 20:12:46 2017 OS/Arch: linux/amd64 Experimental: false docker info(若是要作監控) docker主要組件有:鏡像、容器、倉庫, 網絡,存儲 啓動容器必須須要一個鏡像,倉庫中只存儲鏡像 容器---鏡像---倉庫 安裝Nginx步驟: 官網下載Nginx源碼包wget tar 建立Nginx用戶 編譯安裝 ./config.... 修改配置文件, 啓動 6:啓動第一個容器 ##配置docker鏡像加速 vi /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"] } docker run -d -p 80:80 nginx:1.14 run(建立並運行一個容器) -d 放在後臺 -p 端口映射 nginx docker鏡像的名字 7:docker的鏡像管理 搜索鏡像 docker search 選鏡像的建議: 1,優先考慮官方 2,stars數量多 獲取鏡像 docker pull(push) 鏡像加速器:阿里雲加速器,daocloud加速器,中科大加速器,Docker 中國官方鏡像加速:https://registry.docker-cn.com docker pull centos:6.8(沒有指定版本,默認會下載最新版) docker pull daocloud.io/huangzhichong/alpine-cn:latest ##配置docker鏡像加速 vi /etc/docker/daemon.json { "registry-mirrors": ["https://registry.docker-cn.com"] } ##第三方docker鏡像倉庫,使用方法: docker pull index.tenxcloud.com/tenxcloud/httpd:latest 查看鏡像 docker images docker image ls 刪除鏡像 docker rmi 例子:docker image rm centos:latest 導出鏡像 docker save 例子:docker image save centos > docker-centos7.4.tar.gz 導入鏡像 docker load 例子:docker image load -i docker-centos7.4.tar.gz 8:docker的容器管理 docker run -d -p 80:80 nginx:1.14 鏡像:包含linux發行版系統文件,nginx軟件 容器:基於鏡像,啓動一個進程,文件 docker run -d -p 80:80 nginx:latest run(建立並運行一個容器) -d 放在後臺 -p 端口映射 -v 源地址(宿主機):目標地址(容器) nginx docker鏡像的名字 docker run -it --name centos6 centos:6.9 /bin/bash -it 分配交互式的終端 --name 指定容器的名字 /bin/sh覆蓋容器的初始命令 啓動容器 docker run image_name docker run -it image_name CMD docker run ==== docker create + docker start 中止容器 docker stop CONTAINER_ID 殺死容器 docker kill container_name 查看容器列表 docker ps docker ps –a 進入容器(目的,調試,排錯) *** docker exec (會分配一個新的終端tty) docker exec [OPTIONS] CONTAINER COMMAND [ARG...] docker exec -it 容器id或容器名字 /bin/bash(/bin/sh) docker attach(使用同一個終端) docker attach [OPTIONS] CONTAINER nsenter(安裝yum install -y util-linux 棄用) 刪除容器 docker rm 批量刪除容器 docker rm -f `docker ps -a -q` 總結:docker容器內的第一個進程(初始命令)必須一直處於前臺運行的狀態(必須夯住),不然這個容器,就會處於退出狀態! 業務在容器中運行:夯住,啓動服務 9:docker容器的網絡訪問(端口映射) 指定映射(docker 會自動添加一條iptables規則來實現端口映射) -p hostPort:containerPort -p ip:hostPort:containerPort 多個容器都想使用80端口 -p ip::containerPort(隨機端口) -p hostPort:containerPort:udp -p 81:80 –p 443:443 能夠指定多個-p -p 10.0.0.12:88:80:udp iptables -s 10.0.0.11:88 --to 172.17.0.5 隨機映射 docker run -P (隨機端口) 經過iptables來實現的端口映射 10:docker的數據卷管理 /usr/share/nginx/html 持久化 數據卷(文件或目錄) -v 卷名:/data -v src(宿主機的目錄):dst(容器的目錄) 數據卷容器 --volumes-from(跟某一個已經存在的容器掛載相同的卷) 基於nginx啓動一個容器,監聽80和81,訪問80,出現nginx默認首頁,訪問81,出現小鳥。 基於多端口的多站點。 docker run -d -p 80:80 -v /data:/usr/share/nginx/html nginx:latest /data不存在,會自動建立,把/data掛載到容器的站點目錄,/data目錄的數據同步容器中 docker run -d -p 81:80 -v oldboy:/usr/share/nginx/html nginx:latest 把oldboy卷掛載掛載到容器的站點目錄,容器裏面的數據同步到卷中, 11:手動將容器保存爲鏡像 docker commit 容器id或者容器的名字 新的鏡像名字[:版本號可選] 1):基於容器製做鏡像 docker run -it centos:6.9 ssh ###### yum install httpd yum install openssh-server /etc/init.d/sshd start vi /init.sh #!/bin/bash /etc/init.d/httpd start /usr/sbin/sshd -D chmod +x /init.sh 2)將容器提交爲鏡像 docker commit oldboy centos6-ssh-httpd:v1 3)測試鏡像功能是否可用 手動製做的鏡像,傳輸時間長 鏡像初始命令 製做一個kodexplorer網盤docker鏡像。nginx + php-fpm(httpd + php) 12:dockerfile自動構建docker鏡像 相似ansible劇本,大小几kb 手動作鏡像:大小几百M+ dockerfile 支持自定義容器的初始命令 dockerfile主要組成部分: 基礎鏡像信息 FROM centos:6.9 製做鏡像操做指令 RUN yum install openssh-server -y 容器啓動時執行指令 CMD ["/bin/bash"] dockerfile經常使用指令: FROM 這個鏡像的媽媽是誰?(指定基礎鏡像) MAINTAINER 告訴別人,誰負責養它?(指定維護者信息,能夠沒有) LABLE 描述,標籤 RUN 你想讓它幹啥(在命令前面加上RUN便可) ADD 給它點創業資金(會自動解壓tar) 製做docker基礎的系統鏡像 WORKDIR 我是cd,今天剛化了妝(設置當前工做目錄) VOLUME 給它一個存放行李的地方(設置卷,掛載主機目錄) EXPOSE 它要打開的門是啥(指定對外的端口)(-P 隨機端口) CMD 奔跑吧,兄弟!(指定容器啓動後的要乾的事情)(容易被替換) dockerfile其餘指令: COPY 複製文件(不會解壓)rootfs.tar.gz ENV 環境變量 ENTRYPOINT 容器啓動後執行的命令(沒法被替換,啓容器的時候指定的命令,會被當成參數) 參考其餘的dockerfile 官方dockerfile或者時速雲鏡像廣場 13:docker鏡像的分層(kvm 連接克隆,寫時複製的特性) 鏡像分層的好處:複用,節省磁盤空間,相同的內容只需加載一份到內存。 修改dockerfile以後,再次構建速度快 14:.容器間的互聯(--link 是單方向的!!!) docker run -d -p 80:80 nginx docker run -it --link quirky_brown:web01 qstack/centos-ssh /bin/bash ping web01 lb ---> nginx 172.17.0.4 --> db01 172.17.0.3 --> nfs01 172.17.0.2 使用docker運行zabbix-server docker run --name mysql-server -t \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e MYSQL_ROOT_PASSWORD="root_pwd" \ -d mysql:5.7 \ --character-set-server=utf8 --collation-server=utf8_bin docker run --name zabbix-java-gateway -t \ -d zabbix/zabbix-java-gateway:latest docker run --name zabbix-server-mysql -t \ -e DB_SERVER_HOST="mysql-server" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e MYSQL_ROOT_PASSWORD="root_pwd" \ -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \ --link mysql-server:mysql \ --link zabbix-java-gateway:zabbix-java-gateway \ -p 10051:10051 \ -d zabbix/zabbix-server-mysql:latest docker run --name zabbix-web-nginx-mysql -t \ -e DB_SERVER_HOST="mysql-server" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e MYSQL_ROOT_PASSWORD="root_pwd" \ --link mysql-server:mysql \ --link zabbix-server-mysql:zabbix-server \ -p 80:80 \ -d zabbix/zabbix-web-nginx-mysql:latest 監控報警:微信報警,alpine yum 安裝zabbix好使 16:docker registry(私有倉庫) ##普通的registry docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry docker pull daocloud.io/huangzhichong/alpine-cn:latest 上傳鏡像到私有倉庫: a:給鏡像打標籤 docker tag centos6-sshd:v3 10.0.0.11:5000/centos6-sshd:v3 b:上傳鏡像 docker push 10.0.0.11:5000/centos6-sshd:v3 若是遇到報錯: The push refers to repository [10.0.0.11:5000/centos6.9_ssh] Get https://10.0.0.11:5000/v2/: http: server gave HTTP response to HTTPS client 解決方法: vim /etc/docker/daemon.json { "insecure-registries": ["10.0.0.11:5000"] } systemctl restart docker ##帶basic認證的registry yum install httpd-tools -y mkdir /opt/registry-var/auth/ -p htpasswd -Bbn oldboy 123456 >> /opt/registry-var/auth/htpasswd docker run -d -p 5000:5000 -v /opt/registry-var/auth/:/auth/ -v /opt/myregistry:/var/lib/registry -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry 17:docker-compose(單機版的容器編排工具) ansible劇本 yum install -y python2-pip(須要epel源) pip install docker-compose(默認pypi源在國外) ##pip 加速 ##詳細指令 http://www.jianshu.com/p/2217cfed29d7 cd my_wordpress/ vi docker-compose.yml version: '3' services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - web_data:/var/www/html ports: - "80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data: web_data: #啓動 docker-compose up #後臺啓動 docker-compose up -d 18:重啓docker服務,容器所有退出的解決辦法 方法一:docker run --restart=always 方法二:"live-restore": true docker server配置文件/etc/docker/daemon.json參考 { "registry-mirrors": ["http://b7a9017d.m.daocloud.io"], "insecure-registries":["10.0.0.11:5000"], "live-restore": true } 19:Docker Machine安裝docker Docker Machine 二進制 10.0.0.11 10.0.0.12 免密碼登錄 從docker的官網下載二進制的包,去安裝docker 10.0.0.13 免密碼登錄 ansible: shell 20:Docker網絡類型 None:不爲容器配置任何網絡功能,--net=none Container:與另外一個運行中的容器共享Network Namespace,--net=container:containerID(K8S) Host:與宿主機共享Network Namespace,--net=host Bridge:Docker設計的NAT網絡模型 21:Docker跨主機容器之間的通訊macvlan 默認一個物理網卡,只有一個物理地址,虛擬多個mac地址 ##建立macvlan網絡 docker network create --driver macvlan --subnet 10.0.0.0/24 --gateway 10.0.0.254 -o parent=eth0 macvlan_1 ##設置eth0的網卡爲混雜模式 ip link set eth1 promisc on ##建立使用macvlan網絡的容器 docker run -it --network macvlan_1 --ip=10.0.0.3 centos6.9_ssh:v3 /bin/bash 做業2:用PIPEWORK爲docker容器配置獨立IP 22:Dcoker跨主機容器通訊之overlay http://www.cnblogs.com/CloudMan6/p/7270551.html 1)準備工做 docker01上: docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap 設置容器的主機名 consul:kv類型的存儲數據庫(key:value) docker0一、02上: vim /etc/docker/daemon.json { "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"], "cluster-store": "consul://10.0.0.11:8500", "cluster-advertise": "10.0.0.11:2376" } vim /etc/docker/daemon.json vim /usr/lib/systemd/system/docker.service systemctl daemon-reload systemctl restart docker 2)建立overlay網絡 docker network create -d overlay --subnet 172.16.1.0/24 --gateway 172.16.1.254 ol1 3)啓動容器測試 docker run -it --network ol1 --name oldboy01 busybox /bin/bash 每一個容器有兩塊網卡,eth0實現容器間的通信,eth1實現容器訪問外網 23:docker企業級鏡像倉庫harbor(vmware 中國團隊) 第一步:安裝docker和docker-compose 第二步:下載harbor-offline-installer-v1.3.0.tgz 第三步:上傳到/opt,並解壓 第四步:修改harbor.cfg配置文件 hostname = 10.0.0.11 harbor_admin_password = 123456 第五步:執行install.sh ###k8s的安裝方法 kubernetes 二進制安裝 安裝最新版,步驟繁瑣!! https://github.com/minminmsn/k8s1.13/blob/master/kubernetes/kubernetes1.13.1%2Betcd3.3.10%2Bflanneld0.10%E9%9B%86%E7%BE%A4%E9%83%A8%E7%BD%B2.md kubeadm 安裝(網絡緣由) https://www.qstack.com.cn/archives/425.html minikube 安裝(網絡緣由) yum 安裝(最容易 1.5) go編譯安裝(大神級別) k8s-master 管理者 kubelet --docker 啓動容器 kubelet --docker ####製做一個只支持sshd服務的鏡像 1):啓動一個容器,並修改 docker run -it -p 1022:22 centos:6.8 /bin/bash yum install openssh-server -y echo 'root:123456'|chpasswd /etc/init.d/sshd start 測試:ssh遠程登陸 2):將修改後的容器,保存爲鏡像 docker commit friendly_swartz centos6-ssh 3)測試新鏡像,sshd是否可用 docker run -d -p 1122:22 centos6-ssh:latest /usr/sbin/sshd -D ssh root@10.0.0.11 -p 1122 ####製做了一個支持sshd和httpd雙服務的鏡像 1):啓動一個容器,並修改 docker run -d -p 1122:22 centos6-ssh:latest /usr/sbin/sshd -D yum install httpd -y /etc/init.d/httpd start vi /init.sh #!/bin/bash /etc/init.d/httpd start /usr/sbin/sshd -D chmod +x /init.sh 2):將修改後的容器,保存爲鏡像 docker commit 11bf5984784a centos6-httpd 3)測試新鏡像,檢測sshd和httpd是否可用 docker run -d -p 1222:22 -p 80:80 centos6-httpd:latest /init.sh 做業:使用Dockerfile完成kodexplorer網盤項目 課前回顧: Linux容器是與系統其餘部分隔離開的一系列進程,從另外一個系統鏡像rootfs運行,並由該鏡像提供支持進程所需的所有文件。 容器鏡像包含了應用的全部依賴項,於是在從開發到測試再到生產的整個過程當中,它都具備可移植性和一致性。 1:chroot,ldd 2:lxc namespace(6大命名空間)和cgroup 3:docker和kvm區別,docker鏡像基礎操做,docker容器平常操做,commit製做鏡像,dockfile來自動構建鏡像 ####docker私有倉庫registry 1)啓動registry容器 docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry 2)修改/etc/docker/daemon.json配置文件 { "registry-mirrors": ["https://registry.docker-cn.com"], "insecure-registries": ["10.0.0.11:5000"] } 3)重啓docker服務 systemctl restart docker 4)爲鏡像打標籤 docker tag centos:6.8 10.0.0.11:5000/oldboy/centos:6.8 5)push推送鏡像 docker push 10.0.0.11:5000/oldboy/centos:6.8