一、Docker的概念
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
二、Docker的安装环境
1.检查内核版本
# uname -r 查看当前linux得版本信息
Docker要求CentOS7最低内核版本为3.1版本
2. 关闭防火墙和selinux
# systemctl stop firewalld
# setenforce 0
3、解决docker容器启动出现Networking will not work.
vim /usr/lib/sysctl.d/00-system.conf
添加代码
net.ipv4.ip_forward=1
如果没有这一步,启动docker容器时,会出现
WARNING: IPv4 forwarding is disabled. Networking will not work.
三、Docker的安装
# yum install docker -y
# yum install docker-devel -y (可选)
# systemctl start docker 开启docker服务
# ps aux | grep docker 查看docker服务 ==》ps -ef | grep docker
三、Docker的内部安装nginx
[root@localhost ~]# docker search nginx # 搜索nginx的镜像文件
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/nginx Official build of Nginx. 7835 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1251 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 507 [OK]
docker.io docker.io/jrcs/letsencrypt-nginx-proxy-companion LetsEncrypt container to use with nginx as... 292 [OK]
...............................................................默认选择第一个...........................................................................
[root@localhost ~]# docker pull docker.io/nginx 下载nginx镜像
[root@localhost ~]# docker images # 查看下载的镜像文件
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/nginx latest 3f8a4339aadd 5 weeks ago 108.5 MB
# docker tag 3f8a4339aadd nginx:111 修改镜像名字(可选)
注意:请先确保80端口没有被占用。netstat-lntup|grep80
[root@localhost ~]# docker run -ti -d -p 80:80 docker.io/nginx /bin/bash # 运行nginx容器
WARNING: IPv4 forwarding is disabled. Networking will not work.
bc134155f262031505cebd2978db3a35049d39f4c289711f5b3d89ced5e9497c
[root@localhost ~]# docker ps # 查看运行中的容器
四、Docker的内部启动nginx
[root@localhost ~]# docker exec -ti bc134155f262 /bin/bash # 进入nginx容器内容
root@bc134155f262:/# /usr/sbin/nginx # 启动nginx
root@bc134155f262:/# # 这个提示说明已经进入容器内部了
打开一个新的窗口
[root@localhost ~]# curl 192.168.40.23
[root@localhost ~]# curl 172.17.0.1
[root@localhost ~]# curl 172.17.0.2
能在本地访问到nginx
五、Docker的命令总结
docker search 镜像名 # 搜索是否有相应的镜像 # 下载镜像文件 docker pull docker镜像名 # 查看下载的镜像 docker images # 查看运行中的容器 docker ps # 查看所有容器 docker ps -a # 退出容器 按Ctrl+D 即可退出当前容器【但退出后会停止容器】 # 退出不停止容器: 组合键:Ctrl+P+Q # 启动容器 docker start 容器名或ID docker run -ti -d -p 80:80 docker.io/nginx /bin/bash # 针对有端口的nginx,并把命令添加至环境变量 docker pull hub.c.163.com/public/centos:7.0 docker run --name mydocker -t -i -p 80:80 hub.c.163.com/public/centos /bin/bash # 进入容器 docker attach 容器名或ID docker exec -ti bc134155f262 /bin/bash # 停止容器 docker stop 容器名或ID # 删除全部容器--慎用 docker stop $(docker ps -q) & docker rm $(docker ps -aq) docker rmi 容器名 #保存容器,生成镜像 docker commit 容器ID 镜像名称
-u 0 已最大权限进入容器
docker exec -u 0 -it 9a16e2fc1851 /bin/sh # docker容器中查看容器Linux版本 cat /etc/issue # 将文件复制到docker内部容器 docker cp xxx.txt docker容器名或id:/xxx/xxx/xxxx
# 将容器内的文件拷贝出来
docker cp a3ba9b5ae2b0:/var/www/codo.bak.tar.gz /opt/codo/codo/
docker run --name test -it -v /docker/volume/b2:/data docker.io/nginx
docker run -ti -d -p 80:80 docker.io/nginx /bin/bash
一步到位的保存并压缩文件
docker save grafana/loki:latest | gzip > grafana_loki.v2.tar.gz
# docker日志
journalctl -u docker.service
资源控制
docker run -it --kernel-memory 50M --kernel-memory 50M ubuntu:16.04 /bin/bash 容器中的进程最多能使用 500M 内存,在这 500M 中,最多只有 50M 核心内存 docker run -it --cpuset-cpus="1,3" ubuntu:14.04 /bin/bash 容器中的进程可以在 cpu 1 和 cpu 3 上执行 docker run -it --cpuset-cpus="0-2" ubuntu:14.04 /bin/bash 表示容器中的进程可以在 cpu 0、cpu 1 及 cpu 3 上执行。 CPU 资源的相对限制 docker run -it --cpu-shares=100 ubuntu:14.04 /bin/bash 表示容器中的进程CPU份额值为100 CPU 资源的绝对限制 docker run -it --cpu-period=50000 --cpu-quota=25000 ubuntu:16.04 /bin/bash 将 CFS 调度的周期设为 50000,将容器在每个周期内的 CPU 配额设置为 25000,表示该容器每 50ms 可以得到 50% 的 CPU 运行时间
原文出处 http://blog.csdn.net/u011704394/article/details/54341402
mysql部署 https://hub.docker.com/_/mysql/ [root@node01 ~]# docker images|grep mysql mysql 5.6 cf6527af4ce6 6 days ago 256MB mysql latest d72169616e20 6 days ago 443MB [root@node01 ~]# docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql 456c2e25205b87bddd6b9ce63c4ba470623ef6ed82101dba238443d6f38a93f1 [root@node01 ~]# docker ps|grep mysql 9002f57dd847 mysql "docker-entrypoint.s…" 42 seconds ago Up 40 seconds 3306/tcp, 33060/tcp mysql wordpress部署。容器内链接mysql容器未成功 https://hub.docker.com/_/wordpress/ [root@node01 ~]# docker images|grep wordpress wordpress latest 837092bc87de 2 weeks ago 421MB [root@node01 ~]# docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql_db -p 8080:80 wordpress 49b2ca49d067d0bf0af27a0b9ccfb4def72d66db092f74887a7330f226076d0a [root@node01 ~]# docker ps|grep wordpress dec50e77c005 wordpress "docker-entrypoint.s…" 12 seconds ago Up 10 seconds 0.0.0.0:8080->80/tcp suspicious_jennings docker run -d --name some-wordpress -e WORDPRESS_DB_HOST=mysql:3306 -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=wordpress -p 8080:80 wordpress docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8081:80 wordpress
FROM centos:7
RUN yum install python3 -y && yum install gcc gcc-c++ -y
COPY pai-pppoe/* /data/pai-pppoe/
ENV version ${version}
sudo docker build -t pppoe_v1 --build-arg version=0.0.1 .