docker笔记

发现分享知识的重要性,随性就把之前学习docker的笔记分享一下:乱,望海涵。

 

https://hub.docker.com/

docker官网:

http://docs.docker.com/linux/step_one/

搭建私有仓库:

http://www.vpsee.com/2013/11/build-your-own-docker-private-regsitry-service/

docker中文入门文档:

1,http://dockerpool.com/static/books/docker_practice/install/ubuntu.html

2,http://www.docker.org.cn/book/docker/6_docker-search-image.html

 

一、安装:

ubuntu:

wget -qO- https://get.docker.com/ | sh

apt-key adv --recv-keys --keyserver 

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

wget -qO- https://get.docker.com/gpg |  apt-key add -

apt-key adv --recv-keys --keyserver

wget -qO- https://get.docker.com/ | sh

 

另外一个安装docker的脚本:

curl https://releases.rancher.com/install-docker/1.12.sh | sh  {速度快}

 

安装ok

------------------------

usermod -aG docker live

 

启动docker:

service docker start

 

下载镜像:

docker pull ubuntu:12.04

docker pull ubuntu:14.04

docker pull registry.hub.docker.com/ubuntu:14.04

docker pull dl.dockerpool.com:5000/ubuntu:14.04

 

运行:

sudo docker run -t -i ubuntu:12.04 /bin/bash

 

列出:

docker images

Docker_build: file:

like this:

 

$ touch Dockerfile 

# This is a comment

FROM ubuntu:14.04

MAINTAINER Docker Newbee <newbee@docker.com>

RUN apt-get -qq update

RUN apt-get -qqy install ruby ruby-dev

RUN gem install sinatra

 

运行:

docker build -t="ouruser/sinatra:v2" .

-----------------------------------------------------

docker tag 命令来修改镜像的标签:

 docker tag 5db5f8471261 ouruser/sinatra:devel

 

从本地文件系统导入:

https://openvz.org/Download/templates/precreated

 cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:14.04

上传镜像:

 docker push ouruser/sinatra (要注册)

存出和载入镜像

docker save -o ubuntu_14.04.tar ubuntu:14.04

载入镜像

可以使用 docker load 从导出的本地文件中再导入到本地镜像库,例如

$ sudo docker load --input ubuntu_14.04.tar

$ sudo docker load < ubuntu_14.04.tar

 

移除本地镜像

如果要移除本地的镜像,可以使用 docker rmi 命令。注意 docker rm 命令是移除容器。

$ sudo docker rmi training/sinatra

$ docker stop $(docker ps -a -q)

 

二、Docker 容器

 

后台运行:-d

docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

docker ps

查看log:docker logs insane_babbage

 

 进入容器:

1,安装nsenter:

$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz; tar xzvf util-linux-2.24.tar.gz

$ cd util-linux-2.24

$ ./configure --without-ncurses && make nsenter

$ sudo cp nsenter /usr/local/bin

 

 接到容器,你还需要找到容器的第一个进程的 PID

PID=$(docker inspect --format "{{ .State.Pid }}" <container>)

或者:docker-pid (没有这个命令)

 

进入容器:

$ nsenter --target $PID --mount --uts --ipc --net --pid

————————=============

完整例子:

$ sudo docker run -idt ubuntu

243c32535da7d142fb0e6df616a3c3ada0b8ab417937c853a9e1c251f499f550

$ sudo docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

243c32535da7        ubuntu:latest       "/bin/bash"         18 seconds ago      Up 17 seconds                           nostalgic_hypatia

$ PID=$(docker-pid 243c32535da7)(没有这个命令)

10981

$ sudo nsenter --target 10981 --mount --uts --ipc --net --pid

root@243c32535da7:/#

————---==============

 

更简单的,建议大家下载 .bashrc_docker,并将内容放到 .bashrc 中。

$ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;

$ echo "[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker" >> ~/.bashrc; source ~/.bashrc

 

 

五、导入容器快照

docker export 7691a814370e > ubuntu_snapshot.tar

 

使用 docker import 从容器快照文件中再导入为镜像:

cat ubuntu_snapshot.tar|docker import - test/ubuntu:v1.0

 

 

六、搭建私有仓库

iop服务器(仓库服务器):

 sudo apt-get install swig (搞了半天,ubuntu14.04没有这个包)

sudo apt-get install build-essential python-dev libevent-dev python-pip libssl-dev liblzma-dev libffi-dev

sudo git clone https://github.com/docker/docker-registry.git

cd docker-registry/

sudo python setup.py install

 

cd docker-registry/ && sudo cp config/config_sample.yml config/config.yml

cd docker-registry/ && sudo cp  config/config.yml   /usr/local/lib/python2.7/dist-packages/docker_registry-1.0.0_dev-py2.7.egg/docker_registry/lib/../../config/config.yml (搞了半天,没这个文件报错,源码安装的,路径有点奇葩)

启动:

sudo gunicorn --access-logfile - --error-logfile - -D -k gevent -b 0.0.0.0:5000 -w 4 --max-requests 100 docker_registry.wsgi:application

 

提交:

docker tag ba58 10.132.52.113:5000/test 

docker push 10.132.52.113:5000/test

提交的时候报错,因为https的原因:解决:vi  /etc/init/docker.conf

exec "$DOCKER" daemon $DOCKER_OPTS --insecure-registry 10.132.52.113:5000

查看:

curl http://10.132.52.113:5000/v1/search

拉下来:

docker pull 10.132.52.113:5000/test

 

七、管理数据卷

1,下面创建一个 web 容器,并加载一个数据卷到容器的 /webapp 目录

mkdir /webapp

docker run -d -P --name web -v /webapp training/webapp python app.py

 

2,挂载一个主机目录作为数据卷:使用 -v 标记也可以指定挂载一个本地主机的目录到容器中去

docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py  [上面的命令加载主机的 /src/webapp 目录到容器的 /opt/webapp 目录。]

 

Docker 挂载数据卷的默认权限是读写,用户也可以通过 :ro 指定为只读:

docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py

 

 

3,挂载一个本地主机文件作为数据卷:

docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash

 

数据卷容器

1,首先,创建一个命名的数据卷容器 dbdata:

docker run -d -v /dbdata --name dbdata training/postgres echo Data-only container for postgres

2,在其他容器中使用 --volumes-from 来挂载 dbdata 容器中的数据卷。

docker run -d --volumes-from dbdata --name db1 training/postgres

docker run -d --volumes-from dbdata --name db2 training/postgres

3,还可以使用多个 --volumes-from 参数来从多个容器挂载多个数据卷。 也可以从其他已经挂载了数据卷的容器来挂载数据卷。

docker run -d --name db3 --volumes-from db1 training/postgres

 

利用数据卷容器来备份、恢复、迁移数据卷

 

 1,备份

 2,恢复

 

恢复

如果要恢复数据到一个容器,首先创建一个带有数据卷的容器 dbdata2。

$ sudo docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

 

然后创建另一个容器,挂载 dbdata2 的容器,并使用 untar 解压备份文件到挂载的容器卷中。

$ sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

 

 

Docker 中的网络

1,5000 端口映射到容器的 5000 端口

docker run -d -p 5000:5000 training/webapp python app.py

 

2, 映射到指定地址的指定端口

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

3,映射到指定地址的任意端口

docker run -d -p 127.0.0.1::5000 training/webapp python app.py

udp:

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

 

查看映射端口配置

docker port nostalgic_morse 5000

 

容器互联

自定义一个好记的容器命名:

$ docker run -d -P --name web training/webapp python app.py

也可以使用 docker inspect 来查看容器的名字:

$  docker inspect -f "{{ .Name }}" aed84ee21bde

 

1,先创建一个新的数据库容器

docker run -d --name db training/postgres

2,删除之前创建的 web 容器

docker rm -f web

3,创建一个新的 web 容器,并将它连接到 db 容器

docker run -d -P --name web --link db:db training/webapp python app.py

4,查看 web 容器的环境变量

docker run --rm --name web2 --link db:db training/webapp env

 

 web 容器中安装 ping 命令来测试跟db容器的连通。

apt-get install -yqq inetutils-ping

 

---------

docker网络

apt-get install bridge-utils

brctl  show

 

自定义网桥:

1,$ sudo service docker stop

    sudo ip link set dev docker0 down

    sudo brctl delbr docker0

 

2, $ sudo brctl addbr bridge0

     sudo ip addr add 192.168.5.1/24 dev bridge0

     sudo ip link set dev bridge0 

 

 **工具:

https://github.com/jpetazzo/pipework

pipework

playground

 

 

示例:创建一个点到点连接

首先启动 2 个容器:

$ sudo docker run -i -t --rm --net=none base /bin/bash
root@1f1f4c1f931a:/#
$ sudo docker run -i -t --rm --net=none base /bin/bash
root@12e343489d2f:/#

找到进程号,然后创建网络名字空间的跟踪文件。

$ sudo docker inspect -f '{{.State.Pid}}' 1f1f4c1f931a
2989
$ sudo docker inspect -f '{{.State.Pid}}' 12e343489d2f
3004
$ sudo mkdir -p /var/run/netns
$ sudo ln -s /proc/2989/ns/net /var/run/netns/2989
$ sudo ln -s /proc/3004/ns/net /var/run/netns/3004

创建一对 peer 接口,然后配置路由

$ sudo ip link add A type veth peer name B

 

$ sudo ip link set A netns 2989

$ sudo ip netns exec 2989 ip addr add 10.1.1.1/32 dev A

$ sudo ip netns exec 2989 ip link set A up

$ sudo ip netns exec 2989 ip route add 10.1.1.2/32 dev A

 

$ sudo ip link set B netns 3004

$ sudo ip netns exec 3004 ip addr add 10.1.1.2/32 dev B

$ sudo ip netns exec 3004 ip link set B up

$ sudo ip netns exec 3004 ip route add 10.1.1.1/32 dev B

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/1789130/blog/1518765

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要下载Docker笔记,首先需要了解Docker是什么以及其使用场景。 Docker是一种开源的容器化平台,可以帮助用户打包、部署和运行应用程序。通过使用容器化技术,用户无需担心运行环境的差异,可以将应用程序和其依赖项打包到一个可移植的容器中,随时在不同的环境中运行。 要下载Docker笔记,可以按照以下几个步骤进行操作: 1. 首先,需要在计算机上安装Docker。可以从Docker官方网站(https://www.docker.com/)上下载适合自己操作系统Docker安装包,并按照安装指南进行安装。 2. 安装完成后,需要启动Docker服务。根据操作系统的不同,可以在启动菜单或终端中找到Docker应用程序,并点击打开。在Docker控制台中,可以查看、管理容器以及进行其他操作。 3. 接下来,需要搜索并下载Docker笔记的镜像。可以使用Docker Hub(https://hub.docker.com/)这个官方的镜像仓库,搜索关键词以找到合适的笔记镜像。在搜索结果中,会显示镜像的名称、描述、标签等信息,选择一个合适的镜像。 4. 找到想要下载的笔记镜像后,可以使用Docker命令行工具或Docker控制台中的图形界面来下载镜像。通过输入命令`docker pull 镜像名称:标签`,即可下载对应的笔记镜像到本地。 5. 下载完成后,可以使用`docker images`命令在本地查看已下载的镜像列表。根据下载的笔记镜像的名称和标签,可以使用`docker run`命令来创建并启动一个容器,从而运行笔记。 通过以上步骤,就可以成功下载Docker笔记并在本地运行。希望这些信息对您有帮助! ### 回答2: 要下载Docker笔记,首先需要知道从哪里获取这些笔记Docker有一个官方文档网站,其中包含了大量关于Docker的技术文档、教程和示例以及各种使用场景的说明。用户可以访问Docker官方网站,在文档部分进行浏览和搜索,找到所需的笔记。 在Docker官方文档网站上,用户可以按照主题、标签或关键字进行检索,以找到相关的笔记。网站还提供了各种文件格式的下载选项,包括PDF、EPUB和HTML版本,用户可以根据自己的使用习惯选择适合的格式进行下载。 此外,还有一些第三方资源库和网站提供了Docker相关的笔记下载。例如GitHub上有很多开源项目,其中包含了Docker的使用笔记和示例代码。用户可以通过在GitHub上搜索关键字"Docker笔记"或"Docker notes"来找到相关的项目,然后根据项目的说明进行下载。 总之,下载Docker笔记可以通过Docker官方文档网站或第三方资源库进行。用户可以根据自己的需求和偏好选择下载适合自己的格式和来源。 ### 回答3: 要下载 Docker 笔记,首先需要确保已经安装了 Docker 客户端工具。然后按照以下步骤进行下载: 1. 打开终端或命令提示符,输入以下命令来下载 Docker 笔记Docker 镜像: ``` docker pull [镜像名称] ``` 这里的 `[镜像名称]` 是 Docker Hub 上提供的 Docker 镜像名称,可以根据需要搜索并选择合适的镜像。 2. 等待镜像下载完成后,使用以下命令来创建和运行一个 Docker 容器,并将笔记下载到本地: ``` docker run -it --name [容器名称] [镜像名称] [下载命令] ``` 这里的 `[容器名称]` 是用于标识容器的名称,`[下载命令]` 是具体的下载命令,可以根据下载方式的不同进行相应的设置。 3. 等待下载完成后,可以使用以下命令来停止并删除容器: ``` docker stop [容器名称] docker rm [容器名称] ``` 这里的 `[容器名称]` 是之前创建容器时指定的名称。 通过以上步骤,你就可以成功下载 Docker 笔记到本地了。记得根据实际需求选择适合的 Docker 镜像和下载命令,同时也可以通过 Docker Hub 上的文档和社区提供的资源,了解更多有关 Docker 的使用方法和技巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值