2019-07-03

docker容器

1:什么是容器幔嗦?

容器就是在隔離的環(huán)境運行的一個進程虎敦,如果進程停止游岳,容器就會銷毀。

隔離的環(huán)境擁有自己的系統(tǒng)文件其徙,ip地址胚迫,主機名等

kvm虛擬機,linux唾那,系統(tǒng)文件

程序:代碼访锻,命令

進程:正在運行的程序

2:容器和虛擬化的區(qū)別

linux容器技術,容器虛擬化和kvm虛擬化的區(qū)別

kvm虛擬化: 需要硬件的支持闹获,需要模擬硬件期犬,

可以運行不同的操作系統(tǒng),啟動時間分鐘級(開機啟動流程)

linux開機啟動流程:

bios開機硬件自檢

根據bios設置的優(yōu)先啟動項boot? 網卡 硬盤 u盤 光驅

讀取mbr引導 2T? UEFI(gpt分區(qū))? ? mbr硬盤分區(qū)信息避诽,內核加載路徑

加載內核

啟動第一個進程/sbin/init? systemd

系統(tǒng)初始化完成

運行服務

龟虎。。沙庐。

容器啟動流程:

共用宿主機內核:

第一個進程鲤妥,服務nginx,httpd拱雏,mysql

容器:共用宿主機內核棉安,容器的第一個進程直接運行服務,輕量級铸抑,損耗少贡耽,啟動快,性能高

容器虛擬化:不需要硬件的支持鹊汛。不需要模擬硬件蒲赂,共用宿主機的內核,啟動時間秒級(沒有開機啟動流程)

總結:

(1)與宿主機使用同一個內核柒昏,性能損耗械手妗;

(2)不需要指令級模擬职祷;

(3)容器可以在CPU核心的本地運行指令氏涩,不需要任何專門的解釋機制届囚;

(4)避免了準虛擬化和系統(tǒng)調用替換中的復雜性;

(5)輕量級隔離是尖,在隔離的同時還提供共享機制意系,以實現容器與宿主機的資源共享。

3:容器技術的發(fā)展過程:

1):chroot技術饺汹,新建一個子系統(tǒng)(擁有自己完整的系統(tǒng)文件)

參考資料:https://www.ibm.com/developerworks/cn/linux/l-cn-chroot/

chang root

作業(yè)1:使用chroot監(jiān)獄限制SSH用戶訪問指定目錄和使用指定命令

https://linux.cn/article-8313-1.html

ls

2):linux容器(lxc)? linux container(namespaces 命名空間 隔離環(huán)境 及cgroups 資源限制)

cgroups? 限制一個進程能夠使用的資源蛔添。cpu,內存兜辞,硬盤io

kvm虛擬機:資源限制(1c 1G 20G)

##需要使用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=180.76.76.76' >/etc/sysconfig/network-scripts/ifcfg-virbr0

##啟動cgroup

systemctl start cgconfig.service

##啟動lxc

systemctl start lxc.service

##創(chuàng)建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通過操作系統(tǒng)層的虛擬化實現隔離凶硅,所以Docker容器在運行時,不需要類似虛擬機(VM)額外的操作系統(tǒng)開銷扫皱,提高資源利用率足绅。

namespace? 資源隔離

cgroups? ? 進程的資源限制

kvm? ? ? 虛擬磁盤文件,資源隔離

kvm? ? ? 資源限制韩脑,--cpus --memory

docker 初期把lxc二次開發(fā)氢妈,libcontainer

top

htop

docker的主要目標是"Build,Ship and Run any App,Angwhere",構建,運輸段多,處處運行

部署服務首量,環(huán)境問題

一次構建,處處運行

docker是一種軟件的打包技術

構建:做一個docker鏡像

運輸:docker pull

運行:啟動一個容器

每一個容器衩匣,他都有自己的系統(tǒng)文件rootfs.

kvm解決了硬件和操作系統(tǒng)之間的依賴

kvm獨立的虛擬磁盤蕾总,xml配置文件

docker解決了軟件和操作系統(tǒng)環(huán)境之間的依賴粥航,能夠讓獨立服務或應用程序在不同的環(huán)境中琅捏,得到相同的運行結果。

docker鏡像有自己的文件系統(tǒng)递雀。

docker容器是一種輕量級柄延、可移植、自包含的軟件打包技術缀程,使應用程序可以在幾乎任何地方以相同的方式運行搜吧。開發(fā)人員在自己筆記本上創(chuàng)建并測試好的容器,無需任何修改就能夠在生產系統(tǒng)的虛擬機杨凑、物理服務器或公有云主機上運行滤奈。

4:docker的安裝

10.0.0.11:修改主機名和host解析

rm -fr /etc/yum.repos.d/local.repo

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

wget -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是傳統(tǒng)的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(如果要做監(jiān)控)

docker主要組件有:鏡像、容器撩满、倉庫, 網絡蜒程,存儲

啟動容器必須需要一個鏡像绅你,倉庫中只存儲鏡像

容器---鏡像---倉庫

docker初次體驗:

安裝Nginx步驟:

官網下載Nginx源碼包wget?

tar

創(chuàng)建Nginx用戶

編譯安裝

./config....

修改配置文件,

啟動

6:啟動第一個容器

##配置docker鏡像加速

vi /etc/docker/daemon.json

{

? "registry-mirrors": ["https://registry.docker-cn.com"]

}

docker run -d -p 80:80 nginx

run(創(chuàng)建并運行一個容器)

-d 放在后臺

-p 端口映射

nginx docker鏡像的名字

7:docker的鏡像管理

搜索鏡像

docker search

選鏡像的建議:

1昭躺,優(yōu)先考慮官方

2忌锯,stars數量多

獲取鏡像

docker pull(push)

鏡像加速器:阿里云加速器,daocloud加速器领炫,中科大加速器偶垮,Docker 中國官方鏡像加速:https://registry.docker-cn.com

官方pull ? ? docker pull centos:6.8(沒有指定版本,默認會下載最新版)

私有倉庫pull docker pull daocloud.io/huangzhichong/alpine-cn:latest

##配置docker鏡像加速

vi /etc/docker/daemon.json

{

? "registry-mirrors": ["https://registry.docker-cn.com"]

}

查看鏡像列表

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:latest?

run(創(chuàng)建并運行一個容器)

-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容器內的第一個進程(初始命令)必須一直處于前臺運行的狀態(tài)(必須夯住)葱峡,否則這個容器啄枕,就會處于退出狀態(tài)!

業(yè)務在容器中運行:夯住族沃,啟動服務

9:docker容器的網絡訪問(端口映射)

docker0:172.17.0.1? jumpserver:172.17.0.2? nginx:172.17.0.3

指定映射(docker 會自動添加一條iptables規(guī)則來實現端口映射)

-p hostPort:containerPort

-p ip:hostPort:containerPort? 多個容器都想使用80端口

-p ip::containerPort(隨機端口)

-p hostPort:containerPort:udp

-p? 10.0.0.100::53:udp

-p 81:80 –p 443:443 可以指定多個-p

隨機映射

docker run -P (隨機端口)

通過iptables來實現的端口映射

10:docker的數據卷管理

/usr/share/nginx/html

-v? /opt/xiaoniao:/usr/share/nginx/html

持久化

數據卷(文件或目錄)

-v 卷名:/data

-v src(宿主機的目錄):dst(容器的目錄)

數據卷容器

--volumes-from(跟某一個已經存在的容器掛載相同的卷)

基于nginx啟動一個容器频祝,監(jiān)聽80和81,訪問80脆淹,出現nginx默認歡迎首頁常空,訪問81,出現小鳥盖溺。

-p 80:80 -p 81:81 -v? xxx:xxx -v? xxx:xxxx

基于nginx多端口的多站點漓糙。

11:手動將容器保存為鏡像

docker commit 容器id或者容器的名字? 新的鏡像名字[:版本號可選]

1):基于容器制作鏡像

docker run -it centos:6.9

######

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

容器啟動時執(zhí)行指令 CMD ["/bin/bash"]

dockerfile常用指令:

FROM 這個鏡像的媽媽是誰?(指定基礎鏡像)

MAINTAINER 告訴別人蝇庭,誰負責養(yǎng)它醉鳖?(指定維護者信息,可以沒有)

LABLE? ? ? 描述哮内,標簽

RUN 你想讓它干啥(在命令前面加上RUN即可)

ADD 給它點創(chuàng)業(yè)資金(會自動解壓tar)? 制作docker基礎的系統(tǒng)鏡像

WORKDIR 我是cd,今天剛化了妝(設置當前工作目錄)

VOLUME 給它一個存放行李的地方(設置卷盗棵,掛載主機目錄)

EXPOSE 它要打開的門是啥(指定對外的端口)(-P 隨機端口)

CMD 奔跑吧,兄弟1狈ⅰ(指定容器啟動后的要干的事情)(容易被替換)

dockerfile其他指令:

COPY 復制文件(不會解壓)rootfs.tar.gz

ENV? 環(huán)境變量

ENTRYPOINT? 容器啟動后執(zhí)行的命令(無法被替換纹因,啟容器的時候指定的命令,會被當成參數)

參考其他的dockerfile

官方dockerfile或者時速云鏡像廣場

13:docker鏡像的分層(kvm 鏈接克隆琳拨,寫時復制的特性)

鏡像分層的好處:復用,節(jié)省磁盤空間瞭恰,相同的內容只需加載一份到內存。

修改dockerfile之后狱庇,再次構建速度快

14:.容器間的互聯(lián)(--link 是單方向的>贰J抢巍!)

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

監(jiān)控報警:微信報警陕截,alpine ?

yum 安裝zabbix好使

16:docker registry(私有倉庫)

##普通的registry

docker run -d -p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry? registry

上傳鏡像到私有倉庫:

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

docker run -d 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.reibang.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: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地址

##創(chuàng)建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

##創(chuàng)建使用macvlan網絡的容器

docker run -it --network macvlan_1 --ip=10.0.0.200 busybox

作業(yè)1:用PIPEWORK為docker容器配置獨立IP

作業(yè)2:docker跨主機容器間的通信flannel

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)

docker01、02上:

vim? /etc/docker/daemon.json

{

? "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],

? "cluster-store": "consul://10.0.0.13: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)創(chuàng)建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企業(yè)級鏡像倉庫harbor(vmware 中國團隊)

第一步:安裝docker和docker-compose

第二步:下載harbor-offline-installer-v1.3.0.tgz

第三步:上傳到/opt,并解壓

第四步:修改harbor.cfg配置文件

hostname = 10.0.0.11

harbor_admin_password = 123456

第五步:執(zhí)行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

作業(yè):使用Dockerfile完成kodexplorer網盤項目

課前回顧:

Linux容器是與系統(tǒng)其他部分隔離開的一系列進程恨闪,從另一個系統(tǒng)鏡像rootfs運行倘感,并由該鏡像提供支持進程所需的全部文件。

容器鏡像包含了應用的所有依賴項咙咽,因而在從開發(fā)到測試再到生產的整個過程中老玛,它都具有可移植性和一致性。

1:chroot钧敞,ldd

2:lxc namespace(6大命名空間)和cgroup

3:docker和kvm區(qū)別蜡豹,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

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末稚晚,一起剝皮案震驚了整個濱河市盈厘,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖凤巨,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異洛搀,居然都是意外死亡敢茁,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門留美,熙熙樓的掌柜王于貴愁眉苦臉地迎上來彰檬,“玉大人伸刃,你說我怎么就攤上這事》瓯叮” “怎么了捧颅?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長较雕。 經常有香客問我碉哑,道長,這世上最難降的妖魔是什么亮蒋? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任扣典,我火速辦了婚禮,結果婚禮上慎玖,老公的妹妹穿的比我還像新娘贮尖。我一直安慰自己,他們只是感情好趁怔,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布湿硝。 她就那樣靜靜地躺著,像睡著了一般润努。 火紅的嫁衣襯著肌膚如雪图柏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天任连,我揣著相機與錄音蚤吹,去河邊找鬼。 笑死随抠,一個胖子當著我的面吹牛裁着,可吹牛的內容都是我干的。 我是一名探鬼主播拱她,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼二驰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秉沼?” 一聲冷哼從身側響起桶雀,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唬复,沒想到半個月后矗积,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡敞咧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年棘捣,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片休建。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡乍恐,死狀恐怖评疗,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情茵烈,我是刑警寧澤百匆,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站呜投,受9級特大地震影響胧华,放射性物質發(fā)生泄漏。R本人自食惡果不足惜宙彪,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一矩动、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧释漆,春花似錦悲没、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逊笆,卻和暖如春栈戳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背难裆。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工子檀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乃戈。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓褂痰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親症虑。 傳聞我的和親對象是個殘疾皇子缩歪,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容

  • 一、什么是docker容器谍憔? 容器就是在隔離的環(huán)境運行的一個進程匪蝙,如果進程停止,容器就會銷毀习贫。隔離的環(huán)境擁有自己的...
    Jzyue閱讀 354評論 0 1
  • Docker 學習目標: 掌握Docker基礎知識逛球,能夠理解Docker鏡像與容器的概念 完成Docker安裝與啟...
    執(zhí)筆夢一場閱讀 3,184評論 2 10
  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,379評論 0 27
  • 003day 總結 操作系統(tǒng)的介紹 A 什么是操作系統(tǒng)沈条? 用戶發(fā)出請求使用操作系統(tǒng)來控制電腦硬件是一個人與計算機...
    ManBu_x閱讀 281評論 0 1
  • 關于八月蜡歹,我們還記得什么屋厘?炎熱、臺風月而、獅子座汗洒? 八月是荷花的花期,荷花風細父款,出淤泥而不染溢谤,還能尋一處賞荷嗎? 「江...
    簡書會員小管家閱讀 7,214評論 13 85