前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >docker 操作进阶

docker 操作进阶

作者头像
AI拉呱
发布2021-01-14 11:14:46
发布2021-01-14 11:14:46
43700
代码可运行
举报
运行总次数:0
代码可运行

0.docker base

局域网登陆仓库

  • sudo docker login 10.1.8.15:5000 -u admin -p Harbor12345

docker<19.03

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker run --runtime nvidia -it -d -v ~/yanel/:/work -p 9338:9338 --cpus 40 -m 300g --shm-size 80G --memory-swappiness 90 --name speech_recognition 2c7fa282ced3
$ sudo nvidia-docker run --ipc=host -it -p 9008:9008 -d -v ~/yanel/:/work --cpus 40 -p 9002:9002 -m 300g --shm-size 80G --memory-swappiness 90 --name tacotron tacotron:v1.0
$ docker run -it -d -v ~/Desktop/:/work --cpus 10 -p 9999:9999 -m 10g --shm-size 10G --memory-swappiness 90 --name speech_recognition 2c7fa282ced3
-m --memory:容器能使用的最大内存大小,最小值为 4m   b、k、m、g,分别对应 bytes、KB、MB、和 GB)
--memory-swap:容器能够使用的 swap 大小
--memory-swappiness:默认情况下,主机可以把容器使用的匿名页(anonymous page)swap 出来,你可以设置一个 0-100 之间的值,代表允许 swap 出来的比例
--memory-reservation:设置一个内存使用的 soft limit,如果 docker 发现主机内存不足,会执行 OOM 操作。这个值必须小于 --memory 设置的值
    - docker run -it -d -v ~/Desktop/:/work --cpus 12 -p 8022:22 -m 15g --shm-size 10G --memory-swappiness 90 --name npss 

docker>19.03

不需要安装nvidia-docker2

代码语言:javascript
代码运行次数:0
运行
复制
docker run -itd -v /root/yanel/:/work --rm  --gpus 0  -p 9189:9189 --name merlingpu 2a305d7b19e2

docker容器内源更新

  • 创建pip.conf文件
代码语言:javascript
代码运行次数:0
运行
复制
$ mkdir ~/.pip
$ vim ~/.pip/pip.conf
  • 添加以下内容
代码语言:javascript
代码运行次数:0
运行
复制
[global]
index-url = http://pypi.douban.com/simple
[install]
use-mirrors =true
mirrors =http://pypi.douban.com/simple/
trusted-host =pypi.douban.com

运行的容器开放端口

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker inspect `container_name` | grep IPAddress #宿主机运行

ubuntu 源更新

  • vim /etc/apt/sources.list
代码语言:javascript
代码运行次数:0
运行
复制
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
  • sudo apt-get update

debian 源更新

  • vim /etc/apt/sources.list
代码语言:javascript
代码运行次数:0
运行
复制
deb http://mirrors.163.com/debian/ jessie main non-free contrib
deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
  • sudo apt-get update

镜像中文乱码

代码语言:javascript
代码运行次数:0
运行
复制
$ watch -n 1 nvidia-smi
$ locale -a
$ apt-get -y install language-pack-zh-hans 
$ export LANG=zh_CN.UTF-8
$ locale -a

sudo docker exec -it merlingpu env LANG=C.UTF-8 /bin/bash

NLdocker仓库

NLdocker仓库1: docker login 10.1.8.16:5000 -u admin -p newland NLdocker仓库2 :docker login 10.1.8.15:5000 -u admin -p Harbor12345 NLdocker仓库3:docker login 10.1.8.25:5000 -u nai -p Nai12345(目前在用) NLdocker仓库3:docker login 10.1.8.25:5000 -u nai2 -p Nai212345(目前在用)

docker 网络

  • 查看容器ip:sudo docker inspect container_id
  • 宿主机访问容器:配置容器id,并映射端口。输入宿主机ip+端口。

docker images

  • 删除镜像:sudo docker rmi -f images_name
  • clean images:sudo docker image prune
  • save images :sudo docker save -o tar_name images_name:tag
  • load images :sudo docker load -i tar_name

docker container

  • create container
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker create -it images_name:tag # 创建停止的容器
$ sudo docker start images_name
  • create run caontainer
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker run -it -d -v dir_host:dir -p port:potr --name container_name images_name:tag_name /bin/bash
$ sudo docker container stop container_name
$ sudo docker container prune # clear container_name stopped
$ sudo docker ps -qa # show all containers id
$ sudo docker restart container_id
  • in container
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker attach container_id
$ sudo docker exec -it container_id /bin/bash
  • rm container
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker rm container_id
  • export and import
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker export -o tar_name container-id
$ sudo docker import -o tar-name - name:version
  • show container pid
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker top container_id 
  • cp
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker cp local_data container_name:/root/
  • diff show
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker container diff container_name
  • show port
代码语言:javascript
代码运行次数:0
运行
复制
$ sudo docker container port container_name

linux base images

  • BusyBox: has 100 linux commands,2MB.linux 操作系统的瑞士军刀

docker ssh server

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo apt-get update
$ sudo apt-get install openssh-server
mkdir -p /var/run/ssh
/usr/sbin/sshd -D &

Kubernetes 容器集群平台

  • 每个对象包括三个属性:元数据(metadata)、规范(spec)和状态(status)

1.docker-教程

docker三个重要的问题:dockerfile 容器 镜像

1.dockerfile:把需要什么系统,需要装什么软件,需要怎么配置环境等等全部都写进Dockerfile里面,相当于是一个基于docker的全自动生成镜像的一个脚本.

代码语言:javascript
代码运行次数:0
运行
复制
$ docker build -t image:tag #依据dockerfile建立docker

2.镜像:docker的静态,Dockerfile生成的是镜像,docker 镜像是docker移植的关键,容器是以save 、load docker镜像为主。

3.容器:容器是docker的动态,由镜像run出来的(sudo docker run),容器是docker的精华,你可以理解为容器技术就是应用了集装箱的思维,把所需要的所有东西都放进一个集装箱(container)里面,哪里需要服务,我直接把整个集装箱运过去,然后你进去集装箱享受服务就好了。

docker命令集合

代码语言:javascript
代码运行次数:0
运行
复制
docker save imageID > filename.tar #保存本地镜像
docker load < filename.tar  #加载本地镜像

docker export containID > filename  #保存容器到本地
docker import - filename   #加载本地容器

#从当前目录下的Dockerfile(命名dockerfile好像也能识别,其他就不行了)建立镜像
sudo docker build -t reponame:tag .
#别忘了最后那个.!

sudo docker images #查看镜像
sudo docker ps  #查看当前运行的容器
sudo docker ps -a #查看全部容器(包括运行中的和停止的)

# 内存和CPU数目
sudo docker run -it -d -v /Users/yanerrol/Desktop:/work -m 102400M  --cpus 4 --privileged=true --name merlin merlin:v1.0
sudo docker run -it --name blabla  -p <物理机>:<容器>(e.g. 127.0.0.1:3306:3306)  -v /your/local/path/:/map/path/in/docker/ -v /etc/localtime:/etc/localtime --net =host -d reponame:tag
# 启动容器 
#[-it 是启动交互和伪终端]
#[-p  <IP>:<宿主机端口>:<容器端口>  将宿主机(物理机)映射或者可以理解为绑定,<IP>可以指定,也可以不指定,不指定默认是0.0.0.0,建议还是指定]
#[-v  是挂载本机目录到到docker目录,最好每次都把-v /etc/localtime:/etc/localtime也带上,确保docker 容器内时间和服务器时间一致]
#[-d  是daemonize的意思,就是使容器成为守护进程,后台运作]  
#[--net是设置docker的网络模式,默认不设置的话就是bridge模式,现在设置为和物理机网络绑定的host模式,更多可以看 Docker的4种网络模式(http://www.cnblogs.com/gispathfinder/p/5871043.html)
#[--link 是容器链接]

#复习几个特别的IP:
#①127.0.0.1是本地回环地址,代指本机; [对于绑定在127.0.0.1的端口而言,外部无法访问,不对外打开,仅仅对内打开]
#②0.0.0.0 代表所有不清楚的IP,安全性差,也是指本机?;[对于绑定在0.0.0.0的端口而言,外部可以访问]
#③255.255.255.255 用人类的话说:“嘿,这屋子的所有人听着了!”
#④localhost  这个是域名,一般都是127.0.0.1,这种对应关系写在你的/etc/hosts里面

sudo docker start/stop/restart/rm  blabla #启动/停止/重启/删除 容器
sudo docker cp blabla:/app/file.txt .  # 把docker里面/app目录下的file.txt文件复制出来到现在所在的目录

sudo docker exec -it blabla /bin/bash #在启动的容器blabla中运行/bin/bash
sudo docker exec -it blabla /the/path/of/your/command

sudo docker commit blabla  repo:tag  #提交保存容器到一个新的镜像repo:tag

sudo docker login --username=vvvhkfhfkhdkfh registry.cn-shenzhen.aliyuncs.com #默认登陆阿里巴巴 https://cr.console.aliyun.com/repository/cn-shenzhen/errolyan/tts_tacotron/detail
docker push images_name:tag   #push 本地镜像到阿里巴巴仓库

#从阿里巴巴仓库拉取镜像
sudo docker pull registry.cn-shenzhen.aliyuncs.com/errolyan/tts_tacotron:[镜像版本号]

#将镜像推送到阿里巴巴仓库
sudo docker login --username=vvvhkfhfkhdkfh registry.cn-shenzhen.aliyuncs.com
sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/errolyan/tts_tacotron:[镜像版本号]
sudo docker push registry.cn-shenzhen.aliyuncs.com/errolyan/tts_tacotron:[镜像版本号]
sudo docker rmi  repo:tag #删除镜像

#容器的导出和导入
sudo docker export 
sudo docker import 

#镜像的导出和导入
[文件]
sudo docker save repo:tag > backup.tar
sudo docker load < backup.tar
[dockerhub]
sudo docker login
sudo docker push repo:tag
sudo docker pull repo:tag 

#常用组合命令
#停止所有docker容器
sudo docker kill $(sudo docker ps -q)
#删除所有docker容器
sudo docker rm $(sudo docker ps -aq)

sudo docker exec -it 容器ID /bin/bash   #另起一个虚拟命令窗口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IWCuOu5P-1586823655598)(./ec2a2c8be2472a24fa4ae906884494cc.png “ec2a2c8be2472a24fa4ae906884494cc.png”)] ec2a2c8be2472a24fa4ae906884494cc.png docker 工作流程

docker基础知识

  • docker和虚拟机的区别:都是隔离的环境,知识docker更加便捷可快捷。
  • linux namespace:可以隔离PID、UserID、network等。一个子命名空间就是一个独立的电脑。

docker 镜像搜索

  • docker search 关键词

学习linux的瑞士军刀

  • busybox:集成了几百种的命令
  • alpine:安全型的linux发行版

镜像ssh服务

  • 建立ubuntu镜像的容器
  • apt-get update
    • 更换国内源:vi /etc/apt/sources.list/163.list
代码语言:javascript
代码运行次数:0
运行
复制
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
  • apt install openssh-server
  • mkdir -p /var/run/sshd
  • /usr/sbin/sshd -D & # 绑定端口
  • netstat -tunlp #apt-get install net-tools 安装网络工具
  • 修改ssh配置取消pam限制
代码语言:javascript
代码运行次数:0
运行
复制
sed -ri "s/session required pam_loginuid.so/#session required pam_loginuid.so/g" /etc/pam.d/sshd
  • root目录下创建 .ssh 目录 mkdir root/.ssh vi /root/.ssh/authorized_keys

设置中文

代码语言:javascript
代码运行次数:0
运行
复制
#设置字体库
RUN apt-get clean && apt-get update

RUN apt-get install -y locales

RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8


ENV LANG zh_CN.utf8 

Dockerfile ssh

  • mkdir sshd_ubuntu
  • cd sshd_ubuntu
  • touch Dockerfile run.sh
代码语言:javascript
代码运行次数:0
运行
复制
#!/bin/bash
/usr/sbin/sshd -D
  • 在宿主机上生成ssh密匙对,并创建authorized_keys文件
    • ssh-keygen -t rsa
    • cat ~/.ssh/id_rsa.pub>authorized_keys
代码语言:javascript
代码运行次数:0
运行
复制
FROM ubuntu:18.04
MAINTAINER  docker_user(2681506@gmail.com)
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse" > /etc/apt/sources.list
RUN echo "deb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse" > /etc/apt/sources.list

RUN apt-get update

# 安装ssh服务
RUN apt install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir root/.ssh

# 取消pam限制
RUN sed -ri "s/session required pam_loginuid.so/#session required pam_loginuid.so/g" /etc/pam.d/sshd

# 复制配置文件到相应的位置
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh

# 开放端口
EXPOSE 22

# 设置自启动
CMD ["/run.sh"]

Apache 开源的web服务器

docker 教程

代码语言:javascript
代码运行次数:0
运行
复制
Docker官方英文资源
docker官网:http://www.docker.com

Docker windows入门:https://docs.docker.com/windows/

Docker Linux 入门:https://docs.docker.com/linux/

Docker mac 入门:https://docs.docker.com/mac/

Docker 用户指引:https://docs.docker.com/engine/userguide/

Docker 官方博客:http://blog.docker.com/

Docker Hub: https://hub.docker.com/

Docker开源: https://www.docker.com/open-source

Docker中文资源
Docker中文网站:https://www.docker-cn.com/

Docker安装手册:https://docs.docker-cn.com/engine/installation/

Docker 国内镜像
网易加速器:http://hub-mirror.c.163.com

官方中国加速器:https://registry.docker-cn.com

ustc的镜像:https://docker.mirrors.ustc.edu.cn

daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.docker base
  • docker<19.03
  • docker>19.03
    • 不需要安装nvidia-docker2
      • docker容器内源更新
      • 运行的容器开放端口
      • ubuntu 源更新
      • debian 源更新
      • 镜像中文乱码
  • NLdocker仓库
    • docker 网络
    • docker images
    • docker container
    • linux base images
      • docker ssh server
    • Kubernetes 容器集群平台
  • 1.docker-教程
    • docker三个重要的问题:dockerfile 容器 镜像
    • docker命令集合
    • docker基础知识
    • docker 镜像搜索
      • 学习linux的瑞士军刀
    • 镜像ssh服务
    • 设置中文
    • Dockerfile ssh
    • Apache 开源的web服务器
    • docker 教程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档