docker pull //下载镜像
docker push //上传镜像
docker image ls //镜像查看
docker histroy nginx //查看镜像制作历史
docker inspect nginx //查看镜像底层信息(可以看镜像,容器,交换机)
docker ps //查看运行中的docker
docker ps -a //查看所有docker
docker rmi nginx //nginx为镜像名
docker stop|start|restart 0f //0f为容器ID
docker exec|attach -it 76 /bin/bash // 进入容器
docker run -it -p 80:80 -v /var/nginx/html:/usr/share/nginx/html/ docker.io/nginx:latest
docker run --network=docker1 -itd -p 82:80 -v /data:/var/www/html docker.io/myhttpd:v1
编写Dockerfile
Dockerfile语法格式:
– FROM:基础镜像
– MAINTAINER:镜像创建者信息(说明)
– EXPOSE:开放的端口
– ENV:设置环境变量
– ADD:复制文件到镜像
– RUN:制作镜像时执行的命令,可以有多个
– WORKDIR:定义容器默认工作目录
– CMD:容器启动时执行的命令,仅可以有一条CMD
FROM:
#####从头制作baseImage
FROM search
RUN: 执行命令,每执行一条run,多一个分层,一般用&&合并语句,反斜杠“\”换行
RUN yum -y update && yum -y install lrzsz \
net-tools
RUN apt-get -y update && apt-get -y install lrzsz \
net-tools
RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'
WORKDIR :进入或创建目录,使用绝对路径
#####进入/root 目录
WORKDIR /root
如果目录没有会自动创建
WORKDIR /test
WORKDIR demo
//输出:/test/demo
RUN pwd
ADD 和 COPY:将本地的文件,添加到image里
//将hello 添加到根目录下
ADD hello /
//将tar包直接解压到跟目录
ADD test.tar.gz
NNV: 增加Dockerfile 的可读性
//设置常量
ENV MYSQL_MAJOR 5.5
//使用常量
$MYSQL_MAJOR
RUN apt-get -y install mysql-server="${MYSQL_MAJOR}"
CMD和ENTRYPOINT 容器启动时执行的命令,一定会执行,不会被忽略
//shell 格式
RUN apt-get -y install lrzsz
CMD echo "hello world"
ENTRYPOINT echo "hello world"
//exec 格式
RUN ["apt-get","-y","lrzsz"]
CMD ["/bin/echo","hello world"]
ENTRYPOINT ["/bin/echo", "hello world"]
]# docker build -t docker.io/myos:http Dockerfile目录
]# docker run -d docker.io/myos:http
docker网络
桥接网络
1.新建br1的网卡配置文件
]# vim /etc/sysconfig/network-scripts/ifcfg-br1
TYPE=Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=br1
DEVICE=br1
ONBOOT=yes
IPADDR=192.168.31.100
NETMASK=255.255.255.0
GATEWAY=192.168.31.1
]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br1
]# systemctl restart network //可能需要reboot
]# vim /etc/sysconfig/docker-network
# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS="-b=br1"
DOCKER_NETWORK_OPTIONS="-b=br0"
]# systemctl restart docker
]# docker run -itd --net=none --name=myhttpd docker.io/myhttpd:v1
]# pipework br1 myhttpd 192.168.31.111/24@192.168.31.1