一,docker常用命令
1,创建容器时的命令选项
-i, –interactive 交互式
-t, –tty 分配一个伪终端
-d, –detach 运行容器到后台
-e, –env 设置环境变量
-p, –publish list 发布容器端口到主机
-P, –publish-all 发布容器所有EXPOSE的端口到宿主机随机端口
–name string 指定容器名称
-h, –hostname 设置容器主机名
–ip string 指定容器IP,只能用于自定义网络
–network 连接容器到一个网络
–mount mount 将文件系统附加到容器
-v, –volume list 绑定挂载一个卷
–restart string 容器退出时重启策略,默认no,可选值:[always|on-failure]
2,管理镜像命令
ls #列出镜像
build #构建镜像来自Dockerfile
history #查看镜像历史
inspect #显示一个或多个镜像详细信息
pull #从镜像仓库拉取镜像
push #推送一个镜像到镜像仓库
rm #移除一个或多个镜像
prune #移除没有被标记或者没有被任何容器引用的镜像
tag #创建一个引用源镜像标记目标镜像
export #导出容器文件系统到tar归档文件
import #导入容器文件系统tar归档文件创建镜像
save #保存一个或多个镜像到一个tar归档文件
load #加载镜像来自tar归档或标准输入
3,管理容器命令
ls #列出容器
inspect #查看一个或多个容器详细信息
exec #在运行容器中执行命令
commit #创建一个新镜像来自一个容器
cp #拷贝文件/文件夹到一个容器
logs #获取一个容器日志
port #列出或指定容器端口映射
top #显示一个容器运行的进程
stats #显示容器资源使用统计
stop/start/restart #停止/启动一个或多个容器
rm #删除一个或多个容器
prune #移除已停止的容器
update #更新容器的一些选项 TAB可查看补全支持
二,dockerfile常用指令
FROM
来自于哪个基础镜像
LABEL
设置dockerfile标签
RUN
构建镜像时运行的shell命令
COPY
拷贝文件或者目录docker容器镜像中
ADD
解压压缩包并拷贝
ENV
设置环境变量
USER
为RUN、CMD、ENTRYPOINT执行命令指定运行用户
EXPOSE
声明服务发布端口
WORKDIR
为为RUN、CMD、ENTRYPOINT执行命令设置工作目录
CMD
一个dockerfile只能出现一次,多次只有最后一个生效
CMD ["脚本文件","执行参数","执行参数"] :exec形式,默认不支持引用变量
CMD ["sh","-c","容器中脚本文件绝对路径 $NAME"]:exec形式引用变量
CMD command param1 param2 :shell形式
ENTRYPOINT
一个dockerfile只能出现一次,多次只有最后一个生效
如果是可执行文件,希望运行时传参,应该使用ENTRYPOINT
与CMD用法相同,一般结合使用,用CMD给ENTRPOINT传参,传参只能使用exec形式
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param1 param2
docker -t 镜像名称:版本标签 -f 指定dockerfile文件位置
Tomcat dockerfile例:
FROM docker.io/centos
ADD jdk1.8.0_191 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:/usr/local/java/bin:/usr/local/java/jre/bin
ENV CLASSPATH /usr/local/java/jre/bin:/usr/local/java/lib:/usr/local/java/jre/lib/charsets.jar
ADD apache-tomcat-8.5.47 /usr/local/tomcat
ADD ROOT /usr/loca/tomcat/webspps/ROOT
RUN chmod 755 /usr/local/tomcat/bin/startup.sh
RUN chmod 755 /usr/local/tomcat/bin/catalina.sh
RUN sed -i 's|"8080"|"8085"|' /usr/local/tomcat/conf/server.xml
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
EXPOSE 8085
CMD ["/usr/local/tomcat/bin/catalina.sh", "run"]
三,docker-compose常用命令
docker-compose用于单机容器编排,方便管理多容器
docker-compose up -d nginx #构建建启动nignx容器
docker-compose exec nginx bash #登录到nginx容器中
docker-compose down #删除所有nginx容器,镜像
docker-compose ps #显示所有容器
docker-compose restart nginx #重新启动nginx容器
docker-compose run --no-deps --rm php-fpm php -v #在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose build nginx #构建镜像 。
docker-compose build --no-cache nginx #不带缓存的构建。
docker-compose up -d --build #构建新镜像,并更新容器
docker-compose logs nginx #查看nginx的日志
docker-compose logs -f nginx #查看nginx的实时日志
docker-compose config -q #验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx #以json的形式输出nginx的docker日志
docker-compose pause nginx #暂停nignx容器
docker-compose unpause nginx #恢复ningx容器
docker-compose rm nginx #删除容器(删除前必须关闭容器)
docker-compose stop nginx #停止nignx容器
docker-compose start nginx #启动nignx容器
docker-compose.yml例:
version: '3'
services:
nginx:
hostname: nginx
build:
context: nginx
dockerfile: Dockerfile
ports:
- 8022:8022
networks:
- vacb
mysql:
hostname: mysql
environment:
MYSQL_ROOT_PASSWORD: "pwd@123"
MYSQL_DATABASE: "test_control"
MYSQL_USER: bbs
MYSQL_PASSWORD: pwd@1234
build:
context: mysql
dockerfile: Dockerfile
ports:
- 3306:3306
networks:
- vacb
volumes:
- /root/vacb/mysql/my.cnf:/etc/mysql/my.cnf
- /mysql/data/:/var/lib/mysql/
- /mysql/logs/:/var/log/mysql/
java:
hostname: java
build:
context: ./java
dockerfile: Dockerfile
ports:
- 8021:8021
networks:
- vacb
networks:
vacb:
external: true