docker使用及Dockerfile编写

docker 基础使用

Linux安装docker

# Linux安装docker服务
sudo apt install docker.io

# 把普通用户加入到docker组中(解决docker ps权限问题,$USER通常为用户名)
sudo gpasswd -a $USER docker
newgrp docker

docker 环境路径配置

# 修改系统环境变量
export PATH="/new/path:$PATH"

# 单次生效
source ~/.bashrc

# 永久生效(注意多个path用 : 分隔)
export PATH="/new/path:$PATH"

docker 启动和基础使用

1、下载镜像
docker pull ubuntu:18.04

2、启动 docker
docker run -d -P -it --privileged ubuntu:18.04
# 使用 -d 表示后台运行(不使用-d,退出后docker就stop掉了),需要使用 docker exec -it 重新进入docker
docker exec -it test /bin/bash

# -v 表示作映射(共享),本机或者docker中修改对于双方都可见(通常用于自动化测试环境调试)
docker run -d -P -it --privileged -v /dev:/dev -v /home/demo/autowork:/home/test --name test

3、docker 相关操作
# 向 Docker 容器拷贝文件:
docker cp <本地文件路径> <容器名或 ID>:<目标路径>

docker常用命令

# 安装
apt install docker.io
# service 命令的用法
sudo service docker start
 
# systemctl 命令的用法
sudo systemctl start docker

# 查看是否配置成功
docker info

# 列出本机正在运行的容器
docker ps

# 列出本机的镜像
docker images

# 列出本机所有容器,包括终止运行的容器
docker container ls --all

# 重新运行exit的容器
docker start -ia 容器id #如果执行docker run 会提示容器已经存在错误

docker exec -it dd903b670192 /bin/bash
终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。
docker container rm [containerID]

# 停止并删除docker
docker stop id
docker rm id
docker rmi id


卸载docker
# 查询相关软件包
dpkg -l | grep docker
# 删除这个包
sudo apt remove --purge docker.io

本地更新docker镜像并上传服务器

# 修改镜像以后可以cmmit的方式上传,本地提交
docker commit -m 'update xxx' containerID  ubuntu:18.04
# 登录harbor
docker login -u user -p passwd xxx
# 上传镜像
docker push xxx

常见问题解决方案

# 解决docker ps等waring问题
sudo su
chmod 777 /home/jenkins/.docker/

# docker环境缺少中文集:导致python run.py运行失败
安装中文包:https://zhuanlan.zhihu.com/p/165961076

docker中 使用pip.conf进行重定向
文件路径:~/.pip/pip.conf

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host = mirrors.aliyun.com

参考文档

Dockerfile编写 制作镜像

dockerfile实际上就是指定需要往镜像中安装的工具或者库,需要什么就apt-get、pip、或者其他方式进行安装即可

基础镜像

制作镜像,在有dockerfie文件的文件夹下执行:docker build . -t xxx

FROM ubuntu:20.04

WORKDIR /root

## apt sources
RUN apt-get update

## using mirrors.aliyun
# RUN sed -i -e 's/archive.ubuntu/mirrors.aliyun/' /etc/apt/sources.list \
#     && cat /etc/apt/sources.list \
#     && apt-get update

## skip timer
ARG DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai

## apt-get basic depends
RUN apt-get -y install    wget vim curl cmake git libssl-dev openssl bzip2 libbz2-dev \
    && apt-get -y install socat ssh gawk net-tools libncursesw5 jq sshpass iputils-ping telnet zip unzip lcov \
    && apt-get -y install tree zabbix-agent locate git-core libncurses5 libncurses5-dev \
    && apt-get -y install build-essential \
    && apt-get -y install python3 python3-pip \
    && apt-get -y install openjdk-8-jdk

RUN set -x \
    && apt-get -y update \
    && apt-get -y install \
    git \
    wget \
    vim \
    && apt-get clean && rm -rf /var/lib/apt/lists \
    && update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1 \
    && : # last line

# copy files and export to $PATH
COPY XXX.tar.gz /root
RUN tar -xzf /root/XXX.tar.gz \
    && rm /root/XXX.tar.gz
ENV PATH="/root/install/bin:${PATH}"

# install other depends use mirrors
RUN touch /etc/pip.conf \
    && echo "[global]" > /etc/pip.conf \
    && echo "index-url = https://mirrors.aliyun.com/pypi/simple/" >> /etc/pip.conf \
    && echo "[install]" >> /etc/pip.conf \
    && echo "trusted-host = mirrors.aliyun.com" >> /etc/pip.conf
RUN pip3 install --upgrade pip

# install pip libs
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt

# set up ssh keys and config
COPY id_rsa id_rsa.pub config authorized_keys /root/.ssh/
RUN chmod 700 /root/.ssh/id_rsa.pub /root/.ssh/id_rsa /root/.ssh/authorized_keys

### maybe need copy .gitconfig and proxy.conf 


# ln -sf
RUN ["ln", "-sf", "/usr/bin/python3", "/usr/bin/python"]

# Install repo tool
RUN set -x \
    && curl https://storage.googleapis.com/git-repo-downloads/repo > /bin/repo \
    && chmod a+rx /bin/repo

.gitconfig配置

[alias]
        gst = git status
        gbr = git branch
[user]
        email = xxx
        name = xxx

[color]
        ui = auto
        status = auto

参考:https://blog.csdn.net/tsq292978891/article/details/89314127

参考文档

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Docker是一种容器化技术,用于隔离应用程序和它们的依赖,并以轻量级和可移植的方式进行分发和部署。而Docker Compose和DockerfileDocker生态系统中常用的工具,用于管理和构建多个容器化应用程序。 Docker Compose是一个命令行工具,通过一个简单的文本文件(通常是YAML格式)来定义、配置和运行多个Docker容器。它提供了一种非常简便的方式来描述和管理各个容器之间的关联性,同时还能够一次性启动、停止和删除整个应用程序的所有容器。通过Docker Compose,我们可以轻松地创建和管理包含多个服务的复杂应用程序,例如前端应用程序和后端数据库。 Dockerfile是一个用于定义Docker镜像的文本文件,其中包含了构建镜像所需的指令和配置。通过编写Dockerfile,我们可以描述应用程序的运行环境、依赖关系和启动命令等信息。Docker通过读取Dockerfile并按照其中的指令逐步构建镜像,最终生成一个可执行的容器化应用程序。对于一个基于Nginx的Web应用程序,我们可以使用Dockerfile来定义Nginx的配置和静态资源,然后通过构建镜像来打包应用程序。 综上所述,docker-compose、Dockerfile和Nginx可以结合使用,实现多个容器之间的协同工作和复杂应用程序的构建。我们可以使用Docker Compose来管理包含Nginx容器的应用程序,通过Dockerfile来定义Nginx镜像的构建过程,最终实现一个可部署的Nginx容器化应用程序。这种方式能够提高应用程序的可移植性、可复用性和易于管理性,为开发人员和运维人员带来许多便利。 ### 回答2: docker-compose是一个可以管理多个容器的工具,它使用一个YAML文件来定义容器的配置信息。dockerfile是用来构建镜像的脚本文件,它包含了一系列的命令来描述容器的构建过程。nginx是一个开源的高性能的Web服务器和反向代理服务器。 使用docker-compose可以很方便地定义和管理多个容器之间的关系和依赖。可以在docker-compose.yaml文件中定义多个服务,每个服务对应一个容器,而这些容器可以通过互联网络进行通信。例如,可以定义一个nginx服务,同时还可以定义一个后端应用程序的服务,并且将两个服务连接在一起。使用docker-compose up命令可以启动所有定义的服务,并且可以使用docker-compose logs命令来查看日志信息。 dockerfile是一个用来描述构建镜像过程的文件,它包含了一系列的命令来指定容器中的操作。在dockerfile中可以使用FROM命令指定基础镜像,然后使用RUN命令来执行一些操作,比如安装软件包、配置环境等。对于nginx这个容器,可以使用dockerfile来构建自定义的镜像,并且可以在其中配置nginx的相关设置,例如端口、路由规则等。 通过使用docker-compose和dockerfile,可以很轻松地将nginx部署到容器中,并且可以定义nginx和其他服务之间的联系和依赖关系。这样可以更加方便地进行应用程序的部署和管理,同时也可以通过容器的隔离性和易于移植性来提高应用程序的安全性和可靠性。 ### 回答3: Docker Compose和Dockerfile是两个与Docker相关的重要概念,而Nginx则是一款常用的高性能Web服务器和反向代理服务器软件。 Docker Compose是一个用于定义和运行多个Docker容器的工具。它通过一个单独的YAML配置文件,可以定义容器之间的关系和依赖,并且可以一键式地启动、停止和管理这些容器使用Docker Compose,我们可以方便地把多个服务组合在一起,比如前端应用、后端应用和数据库等。 Dockerfile是一个用于构建Docker镜像的文本文件。它包含一系列的指令,用于告诉Docker引擎如何构建镜像。通过Dockerfile,我们可以自定义镜像的内容和配置,包括基础镜像选择、软件安装、文件复制、环境变量设置等。Dockerfile编写可以帮助我们实现镜像的自动化构建和版本管理。 Nginx是一款轻量级的高性能Web服务器和反向代理服务器软件。它具有占用资源少、处理并发请求能力强等特点,被广泛用于构建高性能的Web应用架构。通过使用Nginx,我们可以实现负载均衡、反向代理、静态文件缓存、SSL加密等功能。 结合这三个概念,我们可以运用Docker Compose来定义和管理多个容器,比如前端应用容器和Nginx容器。通过Dockerfile,我们可以定义Nginx容器的自定义镜像,包括选择基础镜像、安装Nginx和相关依赖、设置Nginx配置文件等。然后,通过Docker Compose一键式地启动这些容器,实现前端应用和Nginx服务器的整合。 总之,Docker Compose、Dockerfile和Nginx是三个在Docker应用开发和部署中非常重要的概念和工具。它们可以帮助我们方便地管理和构建容器,实现应用的快速部署和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值