docker 基本操作
镜像操作:
# docker info 查看docker信息
# docker login docker.io 登录仓库
# docker search alpine 搜索镜像alpine
# docker pull alpine 拉取镜像alpine,也可以下载指定版本
# docker image ls 列出本地镜像
# docker tag 6dbb9cc54074 docker.io/dyj46/alpine:latest 给镜像打标签
# docker push dokcer.io/dyj46/alpine 推送镜像
# docker rmi dokcer/dyj46/alpine 删除镜像
# docker rmi -f 6dbb9cc54074 前置删除镜像
容器操作:
# docker ps -a 查看docker 进程信息
# docker run -it dyj46/alpine:latest /bin/sh 启动镜像
运行容器,退出时可用docker ps -a 查询到
# docker run -it dyj46/alpine:latest /bin/sh
运行容器,退出时docker ps -a 查询不到,一次性运行容器
# docker run --rm dyj46/alpine:latest /bin/sh
非交互式运行容器
# docker run -d dyj46/alpine:latest /bin/sleep 300
交互式方式进入容器终端
# docker exec -it 8ed041ecb6b2 /bin/sh
启停容器
# docker stop 8ed041ecb6b2
# docker start 8ed041ecb6b2
# docker restart 8ed041ecb6b2
删除容器
#docker rm 8ed041ecb6b2
批量删除退出容器
# for i in `docker ps -a |grep -i exit | awk '{print $1}'`; do docker rm -f $i;done
提交容器生产镜像,可以将内容写道容器中
# docker commit -p sleepy_brattain dyj46/alpine:v1.0_with_1.txt
导入导出镜像:
导出镜像:
# docker save 0d8315764293 > alpine:v1.0_with_1.txt.tar
导入:
# docker load < alpine:v1.0_with_1.txt.tar
# docker tag 0d8315764293 dyj46/alpine:v1.0_with_1.txt 添加标签
查看容器日志:
# docker run hello-world 2>&1 > /dev/null
# docker logs e20c910cd5cb
docker 容器高级操作:
映射端口:
# docker search nginx
# docker pull nginx
# docker tag 62d49f9bab67 dyj46/nginx:v20.1
# docker run --rm --name mynginx -d -p81:80 dyj46/nginx:v20.1
登录:http://192.168.217.140:81/
挂载数据卷:
# mkdir html
把/root/html 挂载到容器的/usr/share/nginx/html目录上
# docker run -d --rm --name nginx_with_baidu -p8080:80 -v/root/html:/usr/share/nginx/html dyj46/nginx:v20.1
传递环境变量:-e +键值对
# docker run --rm -e E_OPTS=abcdef dyj46/alpine:latest printenv
# docker run --rm -e E_OPTS=abcdef -e D_OPTS=123456 dyj46/alpine:latest printenv 传递多个
容器内安装工具:(yum/apt-get/apt)
# docker exec -it nginx_with_baidu /bin/bash
# tee /etc/apt/source.list << EOF
deb http://mirrors.163.com/debian jessie main non-free contrib
deb http://mirrors.163.com/debian jessie update non-free contrib
EOF
# apt-get update
# apt-get -y install curl
# docker commit -p 4c68ba0d18a6 dyj46/nginx:curl 提交容器
# docker push dyj46/nginx:curl 将容器推送到公网
dockerfile:构建docker镜像的源码
Dockerfile
一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令
格式:
#为注释
指令(大写),内容(小写)
第一个非注释指令必须是"FROM"
四组核心指令:
USER/WORKDIR
ADD/EXPOSE
RUN/ENV
CMD/ENTRYPOINT
构建Dockerfile
# vi Dockerfile
FROM docker.io/dyj46/nginx:v20.1 #镜像名称
USER nginx #init进程的用户
WORKDIR /usr/share/nginx/html #工作目录
生成镜像
# docker build . -t docker.io/dyj46/nginx:v20.1_with_user_workdir