跳到主要内容

7 篇博文 含有标签「docker」

查看所有标签

常见工具国内镜像源

· 阅读需 1 分钟

docker 镜像

/etc/docker/daemon.json 添加以下内容

{
"registry-mirrors":[
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn/",
"https://mirror.ccs.tencentyun.com/"
]
}

ubuuntu apt

/etc/apt/sources.list 替换为 清华源

sed -i 's#http://\(archive\|security\).ubuntu.com/ubuntu/#http://mirrors.tuna.tsinghua.edu.cn/ubuntu/#g' /etc/apt/sources.list

npm

npm config set registry https://registry.npmmirror.com

pip

python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

oh-my-zsh

git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git
cd ohmyzsh/tools
REMOTE=https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git sh install.sh

VSCode 容器中开发相关配置

· 阅读需 2 分钟

本文主要讲解在容器中利用 VSCode 进行开发的一些配置, 容器的优势这里不再赘述,假设你已具备了镜像构建以及其基本操作

容器环境准备

预设以下条件

  • 代码工程目录放置在 /workspace/my_project
  • 开发环境镜像在 my_image (这里假设是一个ubuntu镜像)
cd /workspace/my_project

docker run -ti --entrypoint=/bin/bash \
--net=host \
--ipc=host \
-v $(pwd):/$(basename $(pwd)) \
-v $(pwd)/.vscode-server:/root/.vscode-server \
--privileged \
--name $(basename $(pwd))_dev \
my_image

以上会启动一个 my_project_dev 容器,并将代码挂载到了容器内的 /my_project

  • -v $(pwd)/.vscode-server:/root/.vscode-server vscode 容器开发会在容器内的 $HOME/.vscode-server 里安装一些资源或者文件,包括容器内的插件也在这里,提前挂载进去是将这部分持久化,避免重新安装

Remote-SSH 配置

另一种方法,是在容器里启一个ssh服务,然后用ssh远程连接,和连接远程服务器一样,下面是 容器内远程连接的一些说明以及配置

  1. 容器要 --net=host 启动,且要将代码挂载进容器内
  2. 要选择一个容器 ssh 端口,比如 2222,连接容器内的时候要指定端口。(22通常是宿主机的 ssh 端口)

在容器安装ssh服务并开启,下面是 ssh-rsa xxxxxxxxxxxxxxxxxxxxx 是物理机的公钥, 用于免密登录,需要替换成自己的值。

公钥通常在 $HOME/.ssh/id_rsa.pub 下,可通过 ssh-keygen 生成。

apt install openssh-server -y
mkdir /var/run/sshd
echo "ssh-rsa xxxxxxxxxxxxxxxxxxxxx" > /root/.ssh/authorized_keys

/usr/sbin/sshd -p 2222

物理机验证

ssh -p 2222 root@my_ip

验证成功后就可以使用vscode远程连接了。

一键安装 Docker

· 阅读需 2 分钟

安装 docker

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable" -y
sudo apt update
sudo apt --fix-broken install -y docker.io
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo systemctl restart docker

安装 nvidia-docker

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker

验证是否安装成功

docker run -ti --gpus=all ubuntu:18.04 nvidia-smi

nvidia-driver

# 先卸载
sudo apt-get --purge remove "*nvidia*"

# 查看 可用驱动版本
apt list | grep nvidia-driver

# 选择一个版本安装, 比如 530
sudo apt install nvidia-driver-530

# 重启机器
sudo reboot

其他设置

锁定内核版本

锁定内核当前使用版本,否则系统有可能自动更新内核,那样 nvidia-driver 也要重新安装

sudo apt-mark hold linux-image-$(uname -r)

搭建 sftp server

· 阅读需 1 分钟

有些时候我们开发需要接触涉及到一些sftp接口,比如 sftp 上传文件, sftp下载文件,这时候可以用 docker 快速的搭建一个sftp server 用于测试开发。

拉镜像

docker pull atmoz/sftp

启动 sftp 服务

docker run -d -v /path/to/shared/folder:/home/username/upload -p 2222:22 -e SFTP_USERS=username:password:::upload atmoz/sftp
  • /path/to/shared/folder 是想要共享的文件夹的本地路径。
  • username 是要创建的用户名。
  • password 是用户的密码。
  • -p 2222:22 将容器的 22 端口映射到主机的 2222 端口,这是 SFTP 默认的端口。

测试

sftp -P 2222 username@localhost:/upload/xxx xxx
  • 要用 sftp 而不是 scp
  • 下载路径是 /upload/, 而不是 /home/username/upload

docker常见操作

· 阅读需 1 分钟
  1. 列出已有镜像

    docker image ls
  2. 列出镜像实际占用空间

    docker system df
  3. 删除“旧”镜像

    docker image prune
  4. 删除本地镜像

    docker image rm [镜像ID]
  5. 挂载当前目录到镜像

    docker run -v "$(pwd)"/:/workspace/ ubuntu:16.04

    挂载主目录下的文件到镜像

    docker run -v $HOME/.ssh:/root/.ssh ubuntu:16.04
  6. 挂载单个文件到镜像

    docker run --mount \
    type=bind,source="$(pwd)"/sources.list,target=/etc/apt/sources.list \
    ubuntu
  7. 显示正在运行的容器

     docker container ls

    列出所有容器

    docker container ls -a

    删除所有停止的容器

    docker container prune
  8. 进入容器

    docker run -ti --entrypoint=/bin/bash node
    docker run -ti node /bin/bash

    进入已在运行的容器

    docker exec -it [镜像ID] /bin/bash
  9. 镜像导入导出

    docker save myimage:tag > myimage.tar
    docker load < myimage.tar
  10. 把容器端口4000映射到主机80

docker run -p 80:4000 nginx

Ubuntu18.04 安装 Docker

· 阅读需 2 分钟

Docker安装

  1. 更换国内软件源,推荐 清华大学开源软件镜像源 。Ubuntu的软件配置文件是/etc/apt/sources.list, 将系统自带的文件做个备份,将该文件替换为下面内容,即可使用清华的软件源镜像。

    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
  2. 如果你过去安装过docker,先删掉:

    sudo apt-get remove docker docker-engine docker.io
  3. 首先安装依赖

    sudo apt-get install apt-transport-https ca-certificates \
    curl gnupg2 software-properties-common
  4. 信任Docker的GPG公钥

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  5. 添加清华的软件仓库

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

    sudo apt-get update
    sudo apt-get install docker-ce

Docker一些设置

  1. 设置开机启动。(安装后默认设置开机启动,可忽略)

    sudo systemctl enable docker
    sudo systemctl start docker
  2. 添加当前用户到docker用户组,可以不用 sudo 运行docker

    sudo groupadd docker
    sudo usermod -aG docker $USER

基于docker的hexo博客环境

· 阅读需 1 分钟

Docker介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,本文讲述的是如何基于docker构建一个博客环境

构建docker

在一个空目录下新建一个Dockfile,写入以下内容

FROM node:latest
RUN npm install -g cnpm --registry=https://registry.npm.taobao.org
RUN cnpm install hexo-cli hexo-server -g
RUN hexo init blog && cd blog && cnpm install \
&& cnpm install hexo-renderer-scss --save \
&& cnpm install hexo-deployer-git --save
RUN git config --global user.email "yg_wen@126.com" \
&& git config --global user.name "wenyg"
CMD /bin/bash
WORKDIR /blog
EXPOSE 4000

构建docker

sudo docker build -t hexo .

博客启动停止

启动

sudo docker run -it --rm -p 80:4000 hexo hexo s

停止

sudo docker stop hexo