docker 笔记

1:安装docker 
curl -sSL https://get.daocloud.io/docker | sh

2:启动docker
sudo systemctl start docker

3:启动容器
docker run -it ubuntu /bin/sh

docker attach /run,对于exit 和 ctrl+D 会关掉容器,
docker exec 只是会从容器中出来,不会关掉容器
如果不知道是attach/exec进去的?所以退出最好只用ctrl+p,ctrl+q

4:导出容器
docker export 1e560fca3906 > ubuntu.tar
5:从快照文件导入为镜像
cat docker/ubuntu.tar | docker import - test/ubuntu:v1

6:docker rm -f 1e560fca3906
7:清理掉所有处于终止状态的容器。
docker container prune

8:返回一个 JSON 文件记录着 Docker 容器的配置和状态信息
docker inspect 8f13

9: docker top 8f13 
10: docker logs -f 8f13
docker stop 
11:
加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec
12:
docker pull ubuntu  拉取镜像
docker rmi hello-world 删除镜像
13:更新镜像
docker run -t -i ubuntu:15.10 /bin/bash
apt-get update 
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
各个参数说明:
-m: 提交的描述信息
-a: 指定镜像作者
e218edb10161:容器 ID
runoob/ubuntu:v2: 指定要创建的目标镜像名

14:构建镜像
1)创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
2)通过 docker build 命令来构建一个镜像。docker build -t runoob/centos:6.7 .
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
最后一个 . 是上下文路径,上下文路径,是指 docker 在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
解析:由于 docker 的运行模式是 C/S。我们本机是 C,docker 引擎是 S。实际的构建过程是在 docker 引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起打包提供给 docker 引擎使用。
如果未说明最后一个参数,那么默认上下文路径就是 Dockerfile 所在的位置。
注意:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。

3)docker images 查看创建的镜像已经在列表中存在
4)docker tag 命令,为镜像添加一个新的标签。docker tag 860c279d2fec runoob/centos:dev
-P :是容器内部端口随机映射到主机的高端口。

15:
-p : 是容器内部端口绑定到指定的主机端口。
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
docker port 命令可以让我们快捷地查看端口的绑定情况。
docker port nifty_lederberg 5000

--name 标识来命名容器
docker run -d -P --name runoob training/webapp python app.py

16:新建网络
 docker network create -d bridge test-net
 docker run -itd --name test1 --network test-net ubuntu /bin/bash
 docker run -itd --name test2 --network test-net ubuntu /bin/bash
apt-get update
apt install iputils-ping
 docker exec -it test /bin/bash
 pint test2

17:配置 DNS
宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:
{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}
重启并进入容器
 cat etc/resolv.conf

如果只想在指定的容器设置 DNS,则可以使用以下命令:
$ docker run -it --rm -h host_ubuntu  --dns=114.114.114.114 --dns-search=test.com ubuntu
参数说明:
--rm:容器退出时自动清理容器内部的文件系统。
-h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。
--dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。
--dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。

18:
Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大
用 && 连接的命令只会建一层镜像

19:
VOLUME
定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。
作用:
避免重要的数据,因容器重启而丢失,这是非常致命的。
避免容器不断变大。
格式:
VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>
在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。


20:
Docker Machine 是一种可以让您在虚拟主机上安装 Docker 的工具,并可以使用 docker-machine 命令来管理主机。
Docker Machine 也可以集中管理所有的 docker 主机,比如快速的给 100 台服务器安装上 docker。
1)安装
 base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine
2)docker-machine ls

 

dockerd 
docker export myserv | docker import myserv:v1
docker save myserv.tar
tar zcvf myserv.tar.gz myserv 
tar zcvf serverinone.tar.gz serverinone
  
  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值