安装docker
wget https://get.daocloud.io/docker | sh
或
curl -sSL https://get.daocloud.io/docker | sh
docker常用命令
docker pull images
从镜像仓库拉取镜像,images为镜像名称
docker run images 启动镜像
docker run --name x -p 8081:80 -v /home/xxxxx:/home/yyyyy -d y
x为容器名称,y为镜像
--name 代表此次容器启动的名称
-p 端口映射 把容器的80端口映射到宿主机的8081端口
-d 后台运行
-v 挂载文件 代表把宿主机的/home/xxxx挂载到容器的/home/yyyyy目录下
-e 设置环境变量 -e xxx=yyy
--link xxx 把另一个容器名字为xxx的和当前连接起来,可以直接通过xxx访问另一个容器
-m 设置内存大小 单位可以是b,k,m,g,如果不设置则默认使用跟宿主机一样大小
-c 设置cpu共享权重,多个容器根据权重分配宿主机cpu大小
--cpuset-cpus 设置容器能使用的cpu集,如--cpuset-cpus=“1,3” 则当前容器只能使用CPU1跟CPU3
docker run常用指令:
https://www.runoob.com/docker/docker-run-command.html
docker stop x
停止容器名称为x的容器
docker exec -it x /bin/bash
代表进入到容器名称为x的终端中
docker images
查看当前有哪些镜像
docker rmi x
删除镜像名称为x 的镜像
docker ps
查看当前运行中的镜像
-a 查看所有镜像
docker inspect x
展示容器x的详细信息
docker rm x
删除名称为x的容器
docker commit -m '提交内容' x y
提交容器x的变更内容,内容为“提交内容”,并且命名为y
方便下次可直接启动y镜像
docker cp /home/xxxx.conf x:/home/
拷贝文件/home/xxxx.conf到容器x的/home目录中
通过dockerfile构建镜像
# 创建一个工作目录
mkdir workspace
# 进入工作目录
cd workspace
# 创建Dockerfile
touch Dockerfile
# 编辑DockerFile
vim Dockerfile
内容:
FROM apline:latest
CMD echo "Hello World~"
:wq
然后创建镜像
docker build -t x .
创建镜像名称为x的镜像,把当前工作目录下的文件全部输出到里面
Dockerfile常用命令
FROM base image 从哪个镜像上创建我们的镜像(scratch则表示自己制作基础镜像)
LABEL 定义部分信息
LABEL maintainer='wzw'
LABEL version:"1.0"
LABEL description="description"
RUN 执行命令,每一个条语句都会生成一个分层
为了美观,尽量把负责的RUN用反斜线换行\
避免无用分层,合并多条命令为一行
例如:RUN yum update && yum install -y vim \
python-dev
RUN /bin/bash -c 'source $HOME/.bashrc;echo $HOME'
WORKDIR 设置工作目录 尽量使用绝对目录,比较清晰
WORKDIR /root
WORKDIR /test #如果没有会自动创建test目录
WORKDIR demo
RUN pwd #输出结果是/test/demo
ADD 添加文件
ADD hello / #添加本地的hello的文件添加到容器中的/目录下
ADD test.tar.gz / #添加文件并解压缩
结合WOEKDIR一起使用
WORKDIR /root
ADD hello test/ #实际hello在容器中目录为 /root/test/hello
COPY 拷贝文件
和ADD类型,大部分情况,COPY优先于ADD ,ADD除了能添加文件还能解压缩
添加远程文件用curl或wget
CMD 执行命令
EXPOSE 暴露端口
WORKDIR 指定路径
MAINTAINER 维护者
ENV 设置环境变量
ENV MYSQL_VERSION 5.6 #设置MYSQL_VERSION的版本号为5.6
可以结合其他命令一起使用
RUN apt-get install -y mysql-server= "${MYSQL_VERSION}" \
&& rm -rd /var/lib/apt/list/*
ENTRYPOINT 容器入口
USER 指定用户
VOLUME 挂载文件(持久化存储)
RUN & CMD & ENTRYPOINT
RUN:执行命令并创建新的Image Layer(新的一层)
CMD:设置容器启动后,默认执行的命令和参数
ENTRYPOINT:设置容器启动时运行的命令
CMD:
容器启动时默认执行的命令 docker run image
docker run指定了其他命令,CMD会被忽略 docker run -it cmd-test /bin/bash
如果定义了多个CMD,只有最后一个会被执行
ENTRYPOINT:
让容器以应用程序或则服务的形式运行
不会被忽略,一定会执行
执行格式
Shell格式
RUN apt-get install -y vim
CMD echo “hello docker”
ENTRYPOINT echo "hello docker"
Exec格式
RUN [“apt-get”,"install","-y","vim"]
CMD ["/bin/echo","hello docker"]
ENTRYPOINE ["/bin/bash","-c","echo hello $name"]
docker network ls
展示docker 的网络列表
docker network create -d overlay demo
创建一个命名为demo的overlay网络
docker network inspect demo
展示网络demo 的详细信息
docketr network rm demo
删除网络demo