2.命令

  • 安装docker

yum install docker
  • 查看是否安装成功

docker info 
# 或者
docker version
  • 换源 

  vi /etc/docker/daemon.json
  # 增加
 {
    “registry-mirrors”: [“https://3zfwxe4j.mirror.aliyuncs.com”]
  }
 # 重启
  systemctl restart docker
  • 登录dockerHub

docker login docker.io
  • 查找镜像
docker search xxxxx(镜像名)
  • 下载镜像
docker pull xxxxx(镜像名)
  • 上传镜像

docker push xxxx(镜像名)
  • 改镜像名

docker tag xxxxx(镜像id) docker.io/zhengquantao/xxxx(新镜像名)
  • 查看镜像

docker images
  • 查看所有容器名

# 查看正在运行容器
docker ps
# 查看所有容器,包含停止的容器
docker ps -a
  • 运行容器

# 运行进入容器
docker run -it zhengquantao/alipine:21.2.23 bash
# 运行容器,停止自动删除容器 --rm
docker run --rm --name mynginx -p:8001:80 -d zhengquantao/nginx:v1
# 运行容器,挂载文件 -v
docker run --rm --name mynginx_baidu -d -p 8003:80 -v D:/dockerImage:/usr/share/nginx/html zhengquantao/nginx:v1
# 运行容器,传入环境名 -e
docker run --rm --name mynginx_baidu -d -p 8003:80 -e IP="http://www.baidu.com" -v D:/dockerImage:/usr/share/nginx/html zhengquantao/nginx:v1
# 运行容器,关联多个容器 --link
docker run --name waterland -p 8003:8003 -p 8004:8004 -p 8188:8188 --link mysql:my-mysql -v /root/waterland-cms-bn:/app waterland:v1
  • 进入正在运行的容器

docker exec -it xxxx /bin/bash
  • 停止、开始、重启容器
docker stop/start/restart xxxx(容器ip/名字) 
  • 提交容器成镜像
docker commit -p xxxx xxx(新名字)
  • 删除容器

docker rm -f xxx
  • 删除镜像
docker rmi xxxxxx
  • 查看日志
docker logs -f xxxx 
  • 重定向输入日志
docker run xxxx(名字) 2>&1 >> /dev/null 
  • 复制文件到指定容器
docker cp waterland.sql 8f82abcf4b84:/waterland.sql
  •  MySQL导出数据
docker exec some-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql
  •  MySQL导入数据
docker exec -i some-mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql
  • 导出镜像
docker save -o mysql-dev.tar xxxxxx
  • 导入镜像
docker load < mysql-dev.tar

 

  • 构建
docker build -t zhengquantao/xxxxx_api .
  • Dockerfile
FROM zhengquantao/python-nginx:3.8

# 创建工作路径
RUN mkdir /app

COPY . /app

# 指定容器启动时执行的命令都在app目录下执行
WORKDIR /app


# 替换nginx的配置
COPY nginx.conf /etc/nginx/nginx.conf

# 添加证书文件
# COPY cert /etc/nginx/cert


# 升级pip
RUN pip3 install --upgrade pip -i  https://mirrors.aliyun.com/pypi/simple


# pip读取requirements.txt内容安装所需的库
RUN pip3 install -r requirements.txt -i  https://mirrors.aliyun.com/pypi/simple

# PORT
#EXPOSE 8000
#EXPOSE 8001
#EXPOSE 8135
#EXPOSE 8134


# 启动nginx和uwsgi,这里一定要加上-g,主要目的就是设置pid=1。因为docker 容器默认会把容器内部第一个进程,也就是pid=1的程序作为docker容器是否正在运行的依据,如果pid=1的程序挂了,那容器就挂了。
#ENTRYPOINT ["nginx"]
CMD bash /app/env.sh
ENTRYPOINT nginx && uwsgi -i uwsgi.ini
  • docker-compose.yml
version: '3'
services:
  mysql:
    build: ./mysql
    ports: 
      - "3306:3306"
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    restart: always
  flask:
    build: ./flask
    ports:
     - "5000:5000"
    volumes:
      - ":"
    links: 
     - mysql:mysql
    restart: always
  • env.sh
#!/usr/bin/env sh
find '/app/admin/dist/js' -name '*.js' -exec sed -i -e 's/baseURL=".*"/baseURL="$IP"/g' {} \;
find '/app/client/dist/js' -name '*.js' -exec sed -i -e 's/baseURL=".*"/baseURL="$IP"/g' {} \;

  

版权声明:本文为taozhengquan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/taozhengquan/p/docker.html