Docker入门记录 [2]

1. Docker的一些基础废话

Docker是一个开源的应用容器引擎,用户可以打包自己的应用以及依赖包到一个镜像(images)中,将images开源。

其他用户download image后,进行部署deploy,在容器(container)中运行。

容器(container)使用机箱机制,之间不会有接口(PS. 可用Volume进行数据db的共享),且有各自的IP Addess。

它利用了LXC(Linux Containers)、Cgroups、linux内核,为进程提供了轻量级的虚拟环境。


2. Already Installed docker-ce

$  sudo docker version  # get the version of the docker, include cli and server

Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Mon Mar 27 17:10:36 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Mon Mar 27 17:10:36 2017
 OS/Arch:      linux/amd64
 Experimental: false

I can pull images from the repo docker hub

$  sudo docker pull buaapengbo/docker-whale # pull images

$  sudo docker images                       # check the images downloaded

deploy a container using the images

$  sudo docker run [flag] buaapengbo/docker-whale [command arg]
[flag]

   -it                             # i(stdio)  t(tty)

   -v /local/date:/container/date  # volume date to share

   --name XX                       # the container name

   -d                              # detached mode

   --rm                            # remove the volume when delete the container

   --volumes-from [containername]  # share volumes with other container

   -P                              # random port to the host

   -p                              # 8888:80  specific container port(8888) to the host port(80)
$  sudo docker ps                       # check the running container

$  sudo docker ps -a                    # check all the container

$  sudo docker stop [container ID/NAME] # stop the container

$  sudo docker rm [container ID/NAME]   #remove the container

$  sudo docker rmi [images ID/NAME]     # remove the images

3. Docker的文件系统等(包括Volume)

a) Docker镜像由多个只读层组成,启动容器,会加载只读层,并在其之上构建读写层。

b) 运行中的容器,会将只读层的文件复制到读写层之后进行修改,只读文件未变。

c) 只读层 + 读写层 = 联合文件系统(Union File System)

而Volume绕过UFS, -v [宿主机]:[容器]


Volume
$  sudo docker run -it --name volume_test -v /date alpine /bin/sh

利用alpine镜像进行部署,container名字为volume_test,在container中有volume_test的文件夹,为container和host公用,为查看volume的在宿主机host的位置:

$  sudo docker inspect -f {{.Volumes}} volume_test # 可以得到volume在host端的位置,该文件夹中date为两者共享

也可以指定volume的位置:

$  sudo docker run -it --name volume_test2 -v /local/date:/date alpine /bin/sh

local/data为host端的文件夹,date为container端文件夹,两者共享文件。

(1) 数据共享
$  sudo docker run -it --volumes-from volume_test --name share_volume_test alpine /bin/sh
(2) 数据容器

使用纯数据容器来持久化数据库。

$  sudo docker run --name dbdate postgres echo "From postgres"
$  sudo docker run -d --volumes-from dbdate --name db1 postgres
(3) 备份
$  sudo docker run -rm --volumes-from dbdate -v $(pwd):/backup debian tar cvf /backup/backup.tar /var/lib/postgresql/data

该示例应该会将Volume里所有的东西压缩为一个tar包(官方的postgres Dockerfile在/var/lib/postgresql/data目录下定义了一个Volume)

(4) 删除
$  sudo docker rm -v [container ID/NAME]
or
$  sudo docker run -rm ... # when start a container
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值