首页 > 其他分享 >docker

docker

时间:2023-04-19 12:46:57浏览次数:36  
标签:容器 sudo apt images docker ###

目录

docker

0.绪论

程序代码上线前的固定测试环境,使用容器技术。多方测试搭建的环境会有所不同,没有容器技术之前是使用虚拟机vm之间的clone来提升效率,即虚拟技术;云计算便是基于虚拟技术将堆叠的硬件划分实现。但是单纯的虚拟机之间的clone是很耗费时间,因为整个系统资源极大。容器技术解决了虚拟机clone之间的操作系统重复占用资源的问题,将程序运行环境进行剥离。

  • 虚拟技术将整个操作系统的软件与硬件部分进行了隔离处理。
  • 容器技术将程序执行所需的环境(各种依赖配置及库)与操作系统进行了隔离处理。

1.原理

docker概念:

  • dockerfile(指定需要的程序、依赖配置)
  • images(文件系统)
  • container(执行起来的进程包)
  • docker hub用于下载别人编译好的image,类似于应用商城
  • docker registry用于存放各种image
  • 流程:通过docker build命令生成image,使用docker run将image运行起来就是docker container.
    docker push 推送image到docker hub,docker pull 通过docker hub下载image

docker原理架构(client--server):

  • docker client负责处理用户输入的各种命令:docker build/docker run/docker push/docker pull/...
  • docker server即docker daemon依据dockerfile创建出image.
    img
  • docker cmd 效果
    img

docker底层实现:

  • NameSpace技术:将全局的Linux PID/IPC/NET等资源隔离分派给每个NameSpace,每个NameSpace下的Linux资源互不干扰,使得每一个Namespace看上去像一个独立的操作系统。
  • Control groups技术:Namespace技术实现的是系统资源隔离,但是进程执行的过程中对设备资源的访问仍然不受控制,如CPU core/RAM/ROM/HDD/SSD/SD/Network等,为了分配及限制容器中的进程访问资源,docker 采用了control groups技术(cgroup)。

2.实现


易死机,诸君谨慎需提前备份

  1. Windows 10 安装配置docker:

  1. Linux(Ubuntu) 安装配置docker:
# 1. 安装流程
## 卸载已安装的旧版本docker
sudo apt-get remove docker docker-engine docker.io containerd runc
## 更新依赖包
sudo apt-get update
## 安装docker依赖
sudo apt-get install apt-transport-https 
sudo apt-get install ca-certificates 
sudo apt-get install curl 
sudo apt-get install gnupg 
sudo apt-get install lsb-release
sudo apt install lsb-core
## 添加docker官方gpg秘钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## 设置docker镜像仓库
echo \
>   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
>   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## 安装docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 2. 测试docker
## docker版本及holle world
sudo docker version   
sudo docker run hello-world

# 3. 卸载docker及删除映像/容器/卷/配置
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

  1. 基于vscode使用docker基本功能:
  • vscode配置
...
  • 常用指令
### 查看client/server基本信息...
sudo docker info
sudo docker version
sudo docker cmd --help 
### 查看本地主机images
sudo docker images   
sudo docker search REPOSITORY:TAG
sudo docker pull REPOSITORY:TAG
sudo docker push REPOSITORY:TAG
### cp host--docker
docker cp [OPTIONS] SRC_PATH CONTAINER_ID:DEST_PATH
docker cp [OPTIONS] CONTAINER_ID:SRC_PATH DEST_PATH
docker cp test_rpp_client df9b4c17f509:/home/boc/kuanghl/test
### 查看docker运行状态
sudo systemctl status docker
### docker版本
sudo docker version
### 下载映像
sudo docker pull 映像名称
### 构建映像
sudo docker build -t 映像名称:tag .
### 运行映像
sudo docker run -d -p 宿主机端口:docker端口 --name 容器名称  映像名称:tag(tag应递增)
### 查看映像
docker images
### 查看容器
docker ps -a
### 删除映像
docker rmi 映像id
### 删除容器
docker rm 容器id
### 启动容器
docker start 容器id
### 停止容器
docker stop 容器id
### 进入/退出容器
docker exec -it 容器id /bin/bash
exit
### 查看容器日志
docker logs 容器id
### 查看容器内的进程
docker top 容器id
  • Dockerfile语法:
# 定制构建images:`sudo docker build -t image_name:tag .`
FROM -构建镜像基于哪个镜像
MAINTAINER -镜像维护者姓名或邮箱地址
RUN -构建镜像时运行的指令
ADD -拷贝文件或目录到容器中,如果是URL或压缩包便会自动下载或自动解压
CMD -运行容器时执行的shell环境
ENTRYPOINT -运行容器时执行的shell命令
ENV -设置容器环境变量
ARG -构建时指定的一些参数
VOLUME -指定容器挂载点到宿主机自动生成的目录或其他容器
EXPOSE -声明容器的服务端口
WORKDIR -为 RUN、CMD、ENTRYPOINT、COPY 和 ADD 设置工作目录,就是切换目录
USER -为RUN、CMD、和 ENTRYPOINT 执行命令指定运行用户
HEALTHCHECK -健康检查
ONBUILD -延迟构建命令的执行
LABEL -指令用来给镜像添加一些元数据
  • docker配置:
# Set the IPC mode for the container
--ipc="MODE" 
# create container based on images_id
docker run -it --ipc=shareable --name container_name images_id /bin/bash

3.测试

  • rpptest:
      1. open terminal1: docker images&&docker ps -a&&docker start CONTAINER ID&&docker attach CONTAINER ID&&su - boc(进入容器)
      1. open terminal2:docker cp file_or_dir CONTAINER ID:dir&&ifconfig&&cd rpp_drv_api/build(将要跑的测试例程序cp到docker,并查看容器的ip,到执行文件夹)
      1. in terminal1:export RPP_SOCK_SERVER_IP="docker0: inet_ip"&&ls&&cd cp_dstdir(设置ip,到测试例程序执行文件夹)
      1. in terminal2:./bin/rpp_server
      1. in terminal1:执行测试例程序
  • cmd流程:
    1. images get
    2. create container based images with config(eg:ipc/uts/pid/network)
    3. run container
    4. copy file to images from host
    5. config env/ssh and so on
    6. run binary executable file
    7. over test
    8. eg:
      docker ps -a
      sudo docker container commit CONTAINER_ID images_name:v1.0
      sudo docker import tar_name.tar images_name:v1.0
      docker load < tar_name.tar
      - or edit Dockerfile to build
      docker images
      docker run -it --ipc=shareable --name container_name images_id /bin/bash
      - cmd or bash/shell or executable binary
      docker export container_id > tar_name.tar
      docker save images_id > tar_name.tar
      

4.example list:

  • docker import &&docker images
    img

  • docker run&&docker ps -a
    img
    img

  • docker start/docker attach:
    img

  • docker cp:
    host:
    img
    docker:
    img

  • eg to test develop-app:
    docker:
    img
    host:
    img

  • exit&&docker export&&docker rm&&docker rmi:
    img
    img

  • waiting for update......

标签:容器,sudo,apt,images,docker,###
From: https://www.cnblogs.com/kuanghl/p/17332927.html

相关文章

  • 直击关于Docker所必须了解的知识
    云原生的核心技术之一就是容器,很多人会以为Docker等于容器,其实Docker并不等于容器。其实容器可以理解为:cgroups(资源控制)+namespaces(访问隔离)+rootfs(文件系统)+engine(容器生命周期管理)。容器与虚拟机的区别系统虚拟化是将一台物理计算机虚拟成一台或多台虚拟计算机系统,每个计......
  • 实时查看Docker容器占用的CPU、内存状态
    安装Linux下安装方法:wgethttps://github.com/bcicen/ctop/releases/download/v0.5/ctop-0.5-linux-amd64-Octopsudomvctop/usr/local/bin/sudochmod+x/usr/local/bin/ctop执行命令:ctop使用ctop运行后,通过下面的按键可以实现不同的功能1)a-只查看运行状态的容器f-......
  • 如何创建私有docker镜像仓库
    要创建一个私有的Docker镜像仓库,可以使用Docker官方提供的开源工具DockerRegistry或第三方工具如Harbor等。下面是使用DockerRegistry创建私有Docker镜像仓库的步骤:安装DockerRegistry可以通过在DockerHub上下载DockerRegistry镜像来安装DockerRegistry。在Linux系统中......
  • 要在Ubuntu中安装Docker
    要在Ubuntu中安装Docker,可以按照以下步骤进行:卸载旧版本的Docker(如果已安装)如果已经安装了旧版本的Docker,可以使用以下命令卸载:sudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc安装Docker依赖安装Docker之前,需要先安装一些依赖包。可以使用以下命......
  • docker常用的基本命令
    打包一个镜像[root@localhost~]#dockerimages//查看镜像列表docker.io/nginxlatestc39a868aad022daysago133MB[root@localhost~]#dockersave-onginx_latest.tarc39a868aad02用法:dockersaver-o打包的镜像名称......
  • k8s中command、args && dockerfile中entrypoint、cmd之间的比较
    k8s中command、args&&dockerfile中entrypoint、cmd之间的比较标签(空格分隔):K8SDockerfile中ENTRYPOINT,CMD的比较ENTRYPOINT的两种格式:ENTRYPOINT["executable","param1","param2"](exec格式,推荐)ENTRYPOINTcommandparam1param2(shell格式)C......
  • docker拉取国外镜像到国内个人镜像库
    日常的生产开发中,免不了从国外拉取镜像,但有个问题,我们可能访问不到那个镜像源,因此需要使用代理https://labs.play-with-docker.com具体步骤使用dockerhub账号登录上述代理执行pull下载你要的镜像sudodockerpullregistry.k8s.io/ingress-nginx/controller:v1.3.0sudodo......
  • docker安装部署
    一、docker的安装和部署1.国内源安装docker-ce(在线安装)1)配置流量转发(centos7linux内核)cat<<EOF>/etc/sysctl.d/docker.confnet.bridge.bridge-nf-call-ip6tables=1net.bridge.bridge-nf-call-iptables=1net.ipv4.conf.default.rp_filter=0net.ipv4.conf.all.r......
  • docker官方文档解读
    官网:https://docs.docker.com/get-started/overview/1Dockeroverview2开始2.1创建镜像并启动这里我们以一个nodejs用于为例,说明容器化应用程序过程首先克隆这个应用程序源码 gitclonehttps://github.com/docker/getting-started.git 然后,创建一个Dockerfile文件[......
  • Docker CLI docker compose down常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......