docker相关安装见 http://www.ding51.cn/liunx-chang-jian-zhi-ling-nginx-docker-deng.html 本文主要介绍我日常开发中用到的命令和相关配置。
1、镜像
// 查看所有镜像
docker images
// 删除镜像(前提是该镜像没在容器中运行,否则需要删除运行的容器)
docker rmi 镜像名:tag 或 id
2、容器
// 列出运行容器
docker ps
// 查看所有容器,包括关闭的
docker ps -a
// 进入docker容器
sudo docker exec -it 665b4a1e17b6 /bin/bash #by ID
// 停止运行的容器
docker stop 容器id
// 删除容器(需要停止容器)
docker rm 容器id
3、docker 登录
docker login
4、本地创建镜像
// 创建一个 test_fe ,tag为v1.0的镜像 注意加上 .
docker build -t test_fe:v1.0 .
docker tag test_fe:v1.0 路径/test_fe:v1.0
// 提交上传
docker push 路径/test_fe:v1.0
注意:后面要加.
表示当前目录下的Dockerfile 构建。
以下是我在前端构建时Dockerfile的文件,参考:
# Base images 基础镜像
FROM alpine:3.9
#MAINTAINER 维护者信息
LABEL maintainer="dzk"
# 设置镜像仓库地址
RUN echo http://mirrors.aliyun.com/alpine/v3.9/main > /etc/apk/repositories; \
echo http://mirrors.aliyun.com/alpine/v3.9/community >> /etc/apk/repositories
RUN apk --update --no-cache add nginx && mkdir /run/nginx/ && mkdir -p /var/www/html \
&& rm -rf /var/cache/apk/* \
&& rm -rf /root/.cache \
&& rm -rf /tmp/*
#COPY 需要准备Nginx的配置nginx.conf
COPY ./dist/ /var/www/html
COPY ./nginx.conf /etc/nginx
#EXPOSE 映射端口
EXPOSE 80
#CMD 运行以下命令
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
5、docker 镜像导入导出
# 本地打包镜像:
docker save -o xxx.tar 镜像名1:Tag版本 镜像名2:Tag版本
#本地导入镜像:
docker load -i xxx.tar
6、下载运行镜像
示例:
// 下载镜像: portainer
docker pull portainer/portainer
// 启动:portainer
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer portainer/portainer
7、拷贝容器内容出来修改、将修改的导入到镜像
// 修改device容器中的/srv/server/test.py
docker cp device:/srv/server/test.py .
docker cp device:/srv/server/test.py
docker commit 容器名 镜像:tag
docker-compose down 后重启
docker-compose up -d
8、docker-compose
// 拉取构建
docker-compose up -d
// 停止
docker-compose down
docker-compose.yml文件基本配置,mysql、前端、phpadmin 为例:
version: "3"
services:
mysql:
image: mysql:5.6.45
container_name: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: xxx
volumes:
- /data/mysql:/var/lib/mysql
- ./sql/:/docker-entrypoint-initdb.d/
restart: always
protal:
image: registry.xxx.com/xxx/test_fe:prod
container_name: protal
ports:
- 8000:80
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin
environment:
- PMA_HOST=mysql
- PMA_PORT=3306
ports:
- 10000:80
depends_on:
- mysql