逃不掉的docker部署&使用

环境安装-Ubuntu

1.卸载老版本,防止冲突

sudo apt-get remove docker docker-engine docker.io containerd runc

2.安装必要的一些系统工具

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl gnupg software-properties-common

3.添加Docker GPG密钥

用于验证下载的Docker软件包是否在传输过程中被篡改;
key保存在/etc/docker/key.json中;

sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

4.配置仓库源

sudo add-apt-repository \
      "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
      $(lsb_release -cs) \
      stable"

5.安装docker engine

sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io

6.安装后校验

sudo docker run hello-world

命令执行

1.镜像操作

sudo docker images  # 查询镜像
sudo docker pull 软件名:版本   # 拉取镜像
sudo docker rmi [image id]   # 删除镜像前要停掉容器

2.容器操作

sudo docker run xxx  # 运行xxx容器

sudo docker start 容器id   # 启动容器
sudo docker restart 容器id # 重启容器
sudo docker stop 容器id    # 停止当前正在运行的容器
sudo docker kill 容器id    # 强制停止当前容器

sudo docker ps -a   # 查询所有容器
sudo docker ps   # 查看正在运行的容器

sudo docker rm e23dbee3f10d  # 删除容器,建议先停止运行再删除
sudo docker rm `sudo docker ps -aq`  # 删除所有容器,-q仅显示容器id
sudo docker exec -it baota /bin/bash   # 进入到容器中
# 指定一些参数运行镜像
sudo docker run -itd --name redis-test -p 6380:6379 redis      

-it 交互式进入;
-d: 后台运行容器,并返回容器ID;
--name:给容器指定一个名字;
-p:6380是本机端口,6379是容器内端口;
redis  是镜像名;

数据持久化

为了防止容器删除后数据丢失,建议运行镜像时,对容器的目录作本地映射。

-v 容器内路径           # 匿名挂载
-v 卷名:容器内路径      # 具名挂载
-v /宿主机路径:容器内路径 # 指定路径挂载

sudo docker run -v /home/test hello-world
sudo docker run -v {volume_name}:/home/test hello-world
# 以上这两种方式,都未指定本机路径,默认存储在/var/lib/docker/volumes/{volume_name}/_data

sudo docker run -itd --name hello -p 1010:1010 -v /home/test:/home/test hello-world /bin/bash

问题解决

问题:下载好docker后,执行docker run hello-world命令,总是报错:Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)?

解决方案:
/etc/docker/daemon.json 文件用于配置Docker守护进程的运行参数,可以在这个里面配置"registry-mirrors"字段,找了好多帖子,只有这个可用

tips

docker容器并不是我们自己部署的,如何了解该容器信息呢?

sudo inspect [容器 id]

这个命令对于了解容器信息、服务映射路径有很大帮助~

Docker Compose 粗解

Compose 通过一个配置文件来管理多个Docker容器,适用于多个相互依赖的微服务部署。以下配置了一个java程序,依赖mysql服务的docker-compose.yaml;

version: '3.8'  #表明该文件遵循 Docker Compose 规范的第 3 版,第 8 次更新。
services:
  mysql-database:  # 项目名
    image: mysql:latest   # 使用最新的mysql镜像
    container_name: mysql_db  # 指定容器名称
    ports:  # 相当于-p
      - "3306:3306"
    volumes:  # 相当于-v
      - ./data:/var/lib/mysql
    healthcheck: # 用于检测服务是否健康运行
      disable: true
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
      interval: 60s
      timeout: 20s
      retries: 3

  site-service:
    image: openjdk:11-jdk
    networks:
	- frontend    # ai-service加入到frontend网络
    environment:  # 定义环境变量,这里定义连接数据库的url、账号和密码
      DATASOURCE_URL: jdbc:mysql://xxx
      DATASOURCE_USERNAME: test
      DATASOURCE_PASSWORD: 123456
    command: nohup java -jar xxx.jar &  # 会覆盖容器启动后默认执行的命令
    restart: always  # 容器退出时总是重启容器
    depends_on:  # 指定容器依赖
      mysql-database:
        condition: service_healthy

networks:  # 创建网络
  frontend:  
  backend:
sudo docker-compose up -d  # 运行docker,-d后台执行
sudo docker-compose down  # 先停止后删除容器、网络、卷、镜像
sudo docker-compose stop # 停止容器运行
sudo docker-compose logs # 查看日志

参考帖子

docker入门精髓
10分钟学会Docker的安装和使用
Docker-compose 简单介绍
docker-compose.yml文件配置详解
docker-compose教程
Docker使用docker-compose.yml文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值