1
bkmi 2017-09-10 12:25:47 +08:00 via Android
commit 然后 run 这个新的 image,保持原有的参数就行
|
2
kkk330 2017-09-10 12:26:52 +08:00 via iPhone 1
具体的指令手册上查下,都有。我更想说的是容器使用的思路和虚拟机使用思路不太一样,容器更多用于无状态服务,快速扩容缩容方面,换个思路用 docker 你的很多问题不是问题
|
3
hcymk2 2017-09-10 13:26:52 +08:00 2
为什么总有人以为容器 stop 后再 start 里面的 update 会丢失。
|
4
daemonghost 2017-09-10 14:39:29 +08:00
可以修改之后再 commit 一个新的镜像,但是并不推荐这么做。如果你想实现某种特定功能的镜像(在[Docker Store]( https://store.docker.com/)并没有现成可用的),你可以自己尝试着编写 Dockerfile 来生成自定义功能的 Docker 镜像。
可以参考下面这篇文章所述的原则来编写 Dockerfile 文件,去自定义 Docker 镜像。 [编写 Dockerfile 的最佳实践]( https://toutiao.io/posts/0vd16l) |
5
cloverstd 2017-09-10 16:26:48 +08:00
你应该把你的操作写到 Dockerfile 里,生成新的镜像
|
6
gamexg 2017-09-10 17:14:15 +08:00 via Android
run 可以看作新建虚拟机,如果你没有执行 rm 容器不会丢。
docker ps -a 可以查看所有容器(包括停止运行的) 停止运行的可以用 start 命令启动,里面的东西不会丢!!! 但是不建议这么玩,推荐的方式是把步骤写到 dockerfile 文件。 @hcymk2 主要问题出在 docker ps 默认不显示已经停止的容器,让人以为容器停止后就消失了。 |
7
powergx 2017-09-10 21:38:21 +08:00
docker 的容器应该是无状态的. lz 有这个需求代表你用法不对.
|
8
CaptainWho OP |
9
ParadiseDS 2017-09-10 22:23:40 +08:00 via Android
@CaptainWho 写 Dockerfile 是为了干净地生成镜像,只有生成镜像的时候需要下载一次,之后直接用生成的镜像起容器就行了,commit 这种生成的一次性黑盒镜像后期比较蛋疼,建议还是上 dockerfile
|
10
cloverstd 2017-09-10 22:24:32 +08:00
|
11
gamexg 2017-09-10 22:39:14 +08:00 1
@CaptainWho #8 一般 ubuntu 下载软件包这种还真是写到 dockerfile 里面,理论每次重新创建镜像都会重新下载一次。不过实际并不是每次都下载,dockerfile 每一个 RUN 都是独立的一层,都会建立缓存,除非上一层变更或手工删除了镜像,不然会直接使用上次的缓存,不需要重新下载一次。
wordpress 一般是把 www 目录映射到物理主机的一个目录,重新构建容器时就不需要再次下载 wordpress 插件了,直接使用 www 目录即可。对了,wordpress docker 官方有专门的镜像。 另外你用 docker 的场景是什么? 我自己玩的话都是用 docker-compose,例如建立一个 wordpress 目录,在里面放一个 docker-compose.yml 文件,内容是: web: image: wordpress volumes: - ./web/html/:/var/www/html links: - mysql environment: - WORDPRESS_DB_USER=wordpress - WORDPRESS_DB_PASSWORD=password - WORDPRESS_DB_NAME=wordpress ports: - "8001:80" mysql: image: mysql:5.7 volumes: - ./mysql/conf.d/:/etc/mysql/conf.d - ./mysql/datadir/:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_USER=wordpress - MYSQL_PASSWORD=password - MYSQL_DATABASE=wordpress 然后在同一目录执行 docker-compose up,wordpress 就起来了,所有需要永久保存的数据( www 目录及数据库文件)都在当前目录保存着,需要迁移时只要拷贝这个目录然后在新的电脑下执行下 docker-compose up 就算是部署完毕了。 这个是 docker-compose 老版本的例子,新版本语法有了些修改,不过这个老版本还一样能用。 这个例子使用的是现成的 docker 镜像(基本都是用 dockerfile 生成的),如果需要定制也可以指定 dockerfile 文件自己生成镜像。 |
12
CaptainWho OP @cloverstd
挂载目录就是我写的那个“-v /host_dir:/container_dir ”吧? 那我宿主机重启了以后只要 docker start container_name 就可以了?不用加其他参数? |
13
xujialiang 2017-09-11 00:48:47 +08:00 via iPad
@hcymk2 有些教程加了— rm 参数,有些教程并没告诉使用者使用 vol。。所以。。。
刚入门很容易犯这种错 |