docker环境搭建

How to build docker image

安装docker

更新apt包索引

sudo apt-get update

安装包以允许apt通过HTTPS使用存储库

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加Docker的官方GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88通过搜索指纹的最后8个字符,验证您现在拥有带指纹的密钥 。

sudo apt-key fingerprint 0EBFCD88

使用以下命令设置稳定存储库。要添加nightly或test存储库,请在下面的命令中的单词后添加单词nightly或test(或两者)stable。

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

再次更新apt包索引

sudo apt-get update

安装最新版本的Docker Engine - 社区和容器

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

最后,通过运行hello-world 映像验证是否正确安装了Docker Engine

sudo docker run hello-world

参考网址

使用docker

解决docker加sudo方法

创建docker组

sudo groupadd docker

将当前用户加入docker组, 比如 {USER}=xwj

sudo gpasswd -a {USER} docker

重启服务

sudo service docker restart

刷新docker成员

newgrp - docker

列出本机的所有 image 文件

docker image ls

删除 image 文件

docker image rm [imageName]

列出本机正在运行的容器

docker container ls

列出本机所有容器,包括终止运行的容器

docker container ls --all

终止运行的容器文件

docker container rm [containerID]

编写Dockerfile

模板见Dockerfile, 缺什么加上什么。两种Dockerfile,分别是pip_installconda_install.

创建image

在Dockerfile同目录下,输入下面命令

docker image build -t [imageName]:[tag] .

上传到dockerhub

登录

docker login

命名镜像和版本号

docker image tag [imageName] [username]/[repository]:[tag]

上传

docker image push [username]/[repository]:[tag]

本地运行镜像

docker container run --rm -p 8000:3000 -it [imageName]:[tag] /bin/bash

参考教程

docker教程

anaconda_Dockerfile

遇见问题

Q: Docker build “Could not resolve ‘archive.ubuntu.com’” apt-get fails to install anything

解决办法
如何检查DNS是否有问题:

docker run busybox nslookup google.com 

如果得到 connection timed out;…,说明无法解析DNS

解决这个问题

nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]:                             192.10.0.2

运行我们用于检查DNS是否正常工作的命令

docker run --dns 192.10.0.2 busybox nslookup google.com 
Server:    192.10.0.2
Address 1: 192.10.0.2
Name:      google.com
Address 1: 2a00:1450:4009:811::200e lhr26s02-in-x200e.1e100.net
Address 2: 216.58.198.174 lhr25s10-in-f14.1e100.net

永久性的系统范围修复

创建/etc/docker/daemon.json

{ 
    “dns”:[“192.10.0.2”,“8.8.8.8”] 
}

重启docker

sudo service docker restart

挂载一个主机目录作为数据卷

使用 --mount标记可以指定挂载一个本地主机的目录到容器中去。

$ docker run -d -P \
    --name web \
    # -v /src/webapp:/opt/webapp \
    --mount type=bind,source=/src/webapp,target=/opt/webapp \
    training/webapp \
    python app.py

上面的命令加载主机的 /src/webapp目录到容器的 /opt/webapp目录。这个功能在进行测试的时候十分方便,比如用户可以放置一些程序到本地目录中,来查看容器是否正常工作。本地目录的路径必须是绝对路径,以前使用 -v参数时如果本地目录不存在 Docker 会自动为你创建一个文件夹,现在使用 --mount参数时如果本地目录不存在,Docker 会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值