Docker学习笔记

#docker常用命令 更多操作 docker --help / docker run --help查看

#安装docker
yum install docker-io

#启动docker
/etc/init.d/docker start    或者service docker start

#查看docker状态
service docker status

#查找centos镜像
docker search centos

#获取centos镜像
docker pull centos

#查看镜像
docker images

#查看docker进程
docker ps -a


#镜像操作

#安装nginx镜像, --name名称为tomnginx, -d后台运行 -p设置docker端口映射到系统端口,
#格式为 系统端口:docker端口, 启动nginx镜像
docker run -d -p 1234:80 --name tomnginx nginx

#进入某个进程

docker attach contain_id或者容器名称

如果无法进入还可以通过下面的脚本

#!/bin/bash
# 如果无法通过docker attach containId进入运行中的容器可以通过下面方式
# 查找进程pid
# 传入参数
CNAME=$1
CPID=$(docker inspect -f "{{.State.Pid}}" "$CNAME")
# 进入容器
nsenter --target "$CPID" --mount --uts --ipc --net --pid


#查看ip地址, 系统命令 ifconfig也可以
ip ad li

#删除镜像
docker rm contain_id

#将docker文件夹映射到系统, -i交互式, -t字符终端, 容器名称volumetest
#-h 自定义主机名, -v docker容器内目录, centos为镜像名称
docker run -it --name testvolume1 -h hostvolume -v /data centos

#查看testvolume1容器的卷映射到系统的位置,
#-f 格式化format匹配.Volumes信息, testvolume1为容器名称
docker inspect -f {{.Volumes}} testvolume1

#docker inspect 镜像名称    //查看某个镜像的配置信息

#docker的磁盘文件卷
#自定义docker映射到系统文件的路径, -v 系统路径:docker路径,
#如果映射的目录只读, 则 -v 系统路径:docker路径:ro
docker run -it --name testvolume2 -h hostvolume -v /usr/local/tom:/tom centos

#从已有的镜像容器中挂在文件卷
docker run -it --name testvolume3 --volumes-from testvolume1

#创建自己的镜像, -m信息, 生成自己的镜像, 名称为tom/nginx, tag为v1
#通过docker images查看自己生成的镜像
docker commit -m "this is message" contain_id tom/nginx:v1

#运行自己的镜像, 并映射80端口
docker run -d -p 2345:80 --name my-nginx-mirror tom/nginx:v1


#docker的资源隔离
#docker容器的资源使用限制 docker run --help查看更多命令

#docker 执行容器测试 --rm 执行完毕删除,
#stress是一个压力测试软件, 需要安装, 可以编写Dockerfile安装, -cpu是stress的参数
docker run -it --rm stress -cpu 1

# -c 是该容器可用cpu的占比和nginx的weight类似,
# 还可以设置-cpuset-cpus设置可用哪几个cpu, juti kan help
docker run -it -c 30 --rm stress -cpu 1

#-m 内存使用限制, 限制可用128m, 压力测试是测试200m,
#最多能用128m, 能超过一点如130,多了就无法运行
docker run -it -rm -m 128m stress --vm 1 --vm-bytes 200m --vm-h


#下载registry镜像,用于搭建私有仓库

# docker 的网络模式, 默认采用桥接 bridge
#查看docker网桥, 每启动一个容器就会创建一个网络接口interface
brctl show

docker pull registry

#启动registry仓库, 映射 系统端口:docker容器端口 , 注意这个registry的容器端口是固定5000的
docker run -d -p 5001:5000 registry


#打包一个镜像用于push到私有仓库供其他服务器使用,
#注意 tag后面跟的是镜像Image, 不是容器名也不是容器id
#可以通过docker ps -a 查看image列对应的名称
#打包完毕查看 docker images
docker tag tom/nginx:v1 192.168.42.1:5001/docker/nginx:v1

# push到私有仓库, 此时会报错, 需启用https或者修改配置
#/etc/sysconfig/docker里other_args加入--insecure-registry 192.168.42.1:5001
#other_args="--insecure-registry 192.168.42.1:5001" 之后重启docker
#之前启动的registry容器要删掉重新run一次才可以,
#需要pull也要配置other_args加入--insecure-registry 192.168.42.1:5001
docker push 192.168.42.1:5001/docker/nginx:v1

#push成功后, 在其他机器上通过pull即可下载本地仓库的镜像
docker pull 192.168.42.1:5001/docker/nginx:v1

#docker自动构建脚本Dockerfile
#docker自动构建脚本Dockerfile, 可以采用原始的手动构建
#docker-compose 是一个同时可以构建多容器的工具,带学习

#例:nginx自动化构建脚本

# This is my first Dockerfile
# Author tom
# Version 1.0
#docker容器内手动安装构建相关软件,需要自己安装, 安装命令和linux中安装相同, 通过Dockfile可以自动化构建安装,
#下面这就是一个Dockfile自动化构建安装nginx的脚本, 文件名称是Dockerfile, D大写


#下面大写部分是关键字
#Base images	基础镜像来自于
FROM centos

#维护人
MAINTAINER tomZ

#ADD 添加内容到指定目录, 这些包要提前下载Dockfile到同一级目录下, 或者指定绝对路径也行
ADD pcre-8.3.7.tar.gz /usr/local/src
ADD nginx-1.10.0.tar.gz /usr/local/src


#RUN 执行命令, 安装相关依赖
RUN yum install -y wget gcc gcc-c++ make openssl-devel
#添加一个www用户不登陆,-M不生成用户文件夹
RUN useradd -s sbin/nologin -M www

#工作目录
WORKDIR /usr/local/src/nginx-1.10.0

#执行安装nginx
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-prce=/usr/local/src/pcre-8.3.7 && make && make install

#将daemon off;写入nginx.conf, 让nginx在前台运行
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf

#把nginx加入到环境变量
ENV PATH /usr/local/nginx/sbin:$PATH
#暴露80端口
EXPOSE 80

#运行nginx
CMD ["nginx"]

#运行构建, 在该文件目录执行 docker build -t tom/nginx:v2 .
#如果Dockfile文件不在当前目录那么要写全路径 docker build -t tom/nginx:v2 /usr/local/tom/nginx/Dockfile
# -t 是自定义的镜像仓库名称, 执行完毕构建以后, 执行docker images 查看即可
# 运行docker run -d -p 3456:80 --name dockfilebuildnginx tom/nginx:v2


#docker web管理界面 https://github.com/kevana/ui-for-docker
docker run -d -p 9000:9000 --privileged -v /var/run/docker.sock:/var/run/docker.sock uifd/ui-for-docker



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值