一、docker安裝
yum -y install bash-completion #tab鍵補齊包
yum install net-tools -y
yum -y install wget
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.ustc.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
[root@docker ~]# yum install docker-ce -y #安裝Docker
[root@docker ~]# systemctl start docker.service
[root@docker ~]# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
[root@docker ~]# docker info|version #查看docker基本信息和版本
[root@docker ~]# docker search cenos #搜索cenos的docker鏡像
[root@docker ~]# vi /etc/docker/daemon.json #配置docker鏡像下載加速使用國內docker鏡像源
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
[root@localhost ~]# systemctl restart docker.service #配置完重啓docker使配置生效html
二、docker的容器管理
docker run -d -p 80:80 nginx
run(建立並運行一個容器)
-d 放在後臺
-p 端口映射
-v 源地址(宿主機):目標地址(容器)
docker stop CONTAINER_ID #中止容器
docker kill container_name #殺死容器
[root@docker ~]# docker pull centos:6.8 #下載docker鏡像(不指定版本,默認會下載最新版)
[root@docker ~]# docker images #查看已下載的docker鏡像
[root@docker ~]# docker run -it centos:6.8 /bin/bash #啓動一個容器,不指定容器名docker將隨機分配一個容器名
[root@docker ~]# docker run -it --name centos_sshd centos:6.8 /bin/bash #啓動一個容器並指定容器名爲centos_sshd
[root@docker ~]# docker ps -a #查看docker容器狀態
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
eaf08454395c centos:6.8 "/bin/bash" 2 minutes ago Up 2 minutes centos6.8
[root@docker ~]# docker inspect centos_sshd|eaf08454395c #查看容器的配置信息
[root@docker ~]# docker inspect --format '{{ .NetworkSettings.IPAddress }}' centos_sshd #查看容器IP
[root@docker ~]# docker exec -it centos6.8|eaf08454395c /bin/bash #進入容器(指定容器名和容器id均可以)
[root@docker ~]# docker attach centos6.8|eaf08454395c /bin/bash #進入容器(使用同一個終端)
ctrl + p再按ctrl + q退出容器並返回宿主機
[root@docker ~]# docker rm -f eaf08454395c #刪除一個容器
[root@docker ~]# docker rm -f `docker ps -a -q` #批量刪除容器
注意:docker容器內的第一個進程必須一直處於前臺運行的狀態(必須夯住),不然這個容器,就會處於退出狀態!python
三、製做容器鏡像
[root@aa30c84f20b9 /]# yum install openssh-server -y
[root@aa30c84f20b9 /]# yum install httpd -y
[root@aa30c84f20b9 /]# /etc/init.d/sshd start #初始化ssh服務並生成密鑰對,不然不能ssh鏈接
[root@localhost ~]# docker commit aa30c84f20b9 centos_sshd_httpd:v1 #製做一個容器鏡像
sha256:e8ea675ba1d002de5019d743281c052130c17cc9feedda4ab839b9bf262847e2
[root@docker ~]# docker commit --help
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
容器id或容器名 新的鏡像名字[:版本號可選]
[root@6f15becdbbd2 /]# cat init.sh
#!/bin/bash
echo "123456"|passwd --stdin root
/etc/init.d/httpd start
/usr/sbin/sshd -D
[root@docker ~]# docker run -d -p 80:80 -p 1022:22 --name centos_sshd_httpd centos_sshd_httpd:v1 /init.sh #經過腳本同時啓動容器中的多個服務
-d:放在後臺運行
-p:端口映射(宿主機端口:容器的端口,--name:設置容器名)
[root@docker ~]# docker save centos_sshd_httpd >centos_ssh_httpd.tar.gz #保存容器鏡像
[root@docker ~]# docker image rm -f centos_sshd_httpd #刪除鏡像
[root@docker ~]# docker image load -i centos_ssh_httpd.tar.gz #導入鏡像
0f0fd98df580: Loading layer [==================================================>] 128.6MB/128.6MB
Loaded image: centos_sshd_httpd:v1mysql
四、dockerfile自動構建docker鏡像
dockerfile主要組成部分:
基礎鏡像信息 FROM:centos:6.8
製做鏡像操做指令 RUN yum install openssh-server -y
容器啓動時執行指令 CMD ["/bin/bash"]
dockerfile經常使用指令:
FROM 這個鏡像的媽媽是誰?(指定基礎鏡像)
LABEL 告訴別人,誰負責養它?(指定維護者信息,能夠沒有)
RUN 你想讓它幹啥(在命令前面加上RUN便可)
ADD 給它點創業資金(複製文件,會自動解壓)
WORKDIR 我是cd,今天剛化了妝(設置當前工做目錄)
VOLUME 給它一個存放行李的地方(設置卷,掛載主機目錄)
EXPOSE 它要打開的門是啥(指定對外的端口)(-P 隨機端口)
CMD 奔跑吧,兄弟!(指定容器啓動後的要乾的事情)(容易被替換)
使用ADD的時候,ADD init.sh /init.sh(init.sh文件必須放在Dockerfile同級目錄下!!!)
dockerfile其餘指令:
COPY 複製文件 (複製文件,不會自動解壓)
ENV 環境變量
ENTRYPOINT 容器啓動後執行的命令(沒法被替換,啓容器的時候指定的命令,會被當成參數)linux
[root@docker dockerfile]# vi Dockerfile
FROM centos:6.8
RUN yum install openssh-server -y
RUN /etc/init.d/sshd start
RUN yum install httpd -y
ADD init.sh /init.sh
CMD ["/bin/bash","/init.sh"]
[root@docker dockerfile]# vi init.sh
#!/bin/bash
/etc/init.d/httpd start
echo "123456"|passwd --stdin root
/usr/sbin/sshd -D
[root@docker dockerfile]# ll
total 8
-rw-r--r--. 1 root root 152 Mar 20 10:27 Dockerfile
-rw-r--r--. 1 root root 91 Mar 20 11:02 init.sh
[root@docker ~]# docker build -t centos_sshd_httpd:v2 . #利用Dockfile文件建立鏡像,. 表示Dockerfile文件在當前目錄
---> d4ba7df51af6
Step 3/6 : RUN /etc/init.d/sshd start
---> Running in 547cad2caecc
Generating SSH2 RSA host key: [ OK ]
Generating SSH1 RSA host key: [ OK ]
Generating SSH2 DSA host key: [ OK ]
Starting sshd: [ OK ]
Removing intermediate container 547cad2caecc
---> a3815ee38b0c
[root@docker ~]# docker run -d -p 80:80 -p 1022:22 --name centos_dockerfile centos_sshd_httpd:v2
[root@docker dockerfile]# vi init.sh #設置root密碼從環境變量中讀入
#!/bin/bash
/etc/init.d/httpd start
echo "$password"|passwd --stdin root
/usr/sbin/sshd -D
[root@docker ~]# docker run -d -p 81:80 -p 2022:22 --name centos_docker -e password=test123 centos_sshd_httpd:v2 #設置root密碼爲test123
注意:
用Dockerfile文件建立的鏡像不能從宿主機ssh登錄,不然會有如下錯誤
[root@docker dockerfile]# ssh 10.47.39.100 -p 1022
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:HoZcYKgbOtzM70y2uPURVaSkKaqPZNd6lG5GQjAjorU.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending RSA key in /root/.ssh/known_hosts:3
RSA host key for [10.47.39.100]:1022 has changed and you have requested strict checking.
Host key verification failed.
[root@docker ~]# docker run -d -p 80:80 -p 1022:22 -h Nginx -e password=test123 --name centos6.8 centos_sshd_httpd:v2 #-h:指定主機名;--name:指定容器名nginx
五、docker-compose(單機版的容器編排工具)
yum install -y python2-pip(須要epel源)
pip install docker-compose
##docker-compose配置文件詳解
http://www.jianshu.com/p/2217cfed29d7git
cd my_wordpress/
vi docker-compose.yml
version: '3'github
services:
db:
image: mysql:5.7
volumes:
- /oldboy:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpresssql
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
#啓動
docker-compose up
#後臺啓動
docker-compose up -ddocker
六、重啓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
}json
docker + k8s的博客文章
http://www.cnblogs.com/CloudMan6/p/6693772.html
https://github.com/feiskyer/kubernetes-handbook/blob/master/zh/SUMMARY.md
https://github.com/feiskyer/kubernetes-handbook
k8s安裝方法:
go源碼編譯安裝
二進制安裝 (比較適合)
yum 安裝 1.5 (比較適合)
kubeadm(容器化部署,)
minikube(學習k8s)
docker學習連接: 第一篇: http://www.cnblogs.com/zhenyuyaodidiao/p/6500830.html 第二篇: http://www.cnblogs.com/zhenyuyaodidiao/p/6500720.html 第三篇: http://www.cnblogs.com/zhenyuyaodidiao/p/6500897.html 第四篇: https://www.cnblogs.com/breezey/p/6553738.html 第五篇: http://www.cnblogs.com/breezey/p/6556913.html