Docker入门(CentOS7)
1、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鏡像下載加速使用國內(nèi)docker鏡像源
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
[root@localhost ~]# systemctl restart docker.service? ?#配置完重啟docker使配置生效
2、docker的容器管理
docker run -d -p 80:80 nginx
run(創(chuàng)建并運行一個容器)
-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容器狀態(tài)
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容器內(nèi)的第一個進程必須一直處于前臺運行的狀態(tài)(必須夯住),否則這個容器,就會處于退出狀態(tài)!
3、制作容器鏡像
[root@aa30c84f20b9 /]# yum install openssh-server -y
[root@aa30c84f20b9 /]# yum install httpd -y
[root@aa30c84f20b9 /]# /etc/init.d/sshd start? ? #初始化ssh服務(wù)并生成密鑰對,否則不能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? ?#通過腳本同時啟動容器中的多個服務(wù)
-d:放在后臺運行
-p:端口映射(宿主機端口:容器的端口,--name:設(shè)置容器名)
[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? ? ? #導(dǎo)入鏡像
0f0fd98df580: Loading layer [==================================================>] 128.6MB/128.6MB
Loaded image: centos_sshd_httpd:v1
4、dockerfile自動構(gòu)建docker鏡像
dockerfile主要組成部分:
基礎(chǔ)鏡像信息 FROM:centos:6.8
制作鏡像操作指令 RUN yum install openssh-server -y
容器啟動時執(zhí)行指令 CMD ["/bin/bash"]
dockerfile常用指令:
FROM 這個鏡像的媽媽是誰?(指定基礎(chǔ)鏡像)
LABEL 告訴別人,誰負責(zé)養(yǎng)它?(指定維護者信息,可以沒有)
RUN 你想讓它干啥(在命令前面加上RUN即可)
ADD 給它點創(chuàng)業(yè)資金(復(fù)制文件,會自動解壓)
WORKDIR 我是cd,今天剛化了妝(設(shè)置當前工作目錄)
VOLUME 給它一個存放行李的地方(設(shè)置卷,掛載主機目錄)
EXPOSE 它要打開的門是啥(指定對外的端口)(-P 隨機端口)
CMD 奔跑吧,兄弟!(指定容器啟動后的要干的事情)(容易被替換)
使用ADD的時候,ADD init.sh /init.sh(init.sh文件必須放在Dockerfile同級目錄下!!!)
dockerfile其他指令:
COPY 復(fù)制文件 (復(fù)制文件,不會自動解壓)
ENV 環(huán)境變量
ENTRYPOINT 容器啟動后執(zhí)行的命令(無法被替換,啟容器的時候指定的命令,會被當成參數(shù))
[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文件創(chuàng)建鏡像,. 表示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? ? ?#設(shè)置root密碼從環(huán)境變量中讀入
#!/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? ?#設(shè)置root密碼為test123
注意:
用Dockerfile文件創(chuàng)建的鏡像不能從宿主機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:指定容器名
5、docker-compose(單機版的容器編排工具)
yum install -y python2-pip(需要epel源)
pip install docker-compose
##docker-compose配置文件詳解
http://www.jianshu.com/p/2217cfed29d7
cd my_wordpress/
vi docker-compose.yml
version: '3'
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: wordpress
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 -d
6、重啟docker服務(wù),容器全部退出的解決辦法
方法一: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
}
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(學(xué)習(xí)k8s)
docker學(xué)習(xí)鏈接:
第一篇:
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
?
轉(zhuǎn)載于:https://www.cnblogs.com/xwupiaomiao/p/8607735.html
總結(jié)
以上是生活随笔為你收集整理的Docker入门(CentOS7)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式之Builder (创建者模式)
- 下一篇: [转]opencv学习资料