运行镜像
[root@localhost opt]# docker run -itd -p 80:80 microsoft/dotnet:latest
查看运行的docker
[root@localhost opt]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f3aff5ca8aa3 microsoft/dotnet:latest "bash" 21 seconds ago Up 17 seconds 0.0.0.0:80->80/tcp upbeat_kapitsa
拷贝代码到容器的/opt
目录,然后进入之容品
[root@localhost dockernet]# docker cp app f3aff5ca8aa3:/opt
[root@localhost dockernet]#
[root@localhost dockernet]#
[root@localhost dockernet]# docker exec -it f3aff5ca8aa3 /bin/bash
root@f3aff5ca8aa3:/# cd /opt
root@f3aff5ca8aa3:/opt# ls
app
到程序目录后运行
root@f3aff5ca8aa3:/opt/app# dotnet PhoneCard.dll
成功运行
把修改的容器保存为镜像
[root@localhost dockernet]# docker commit f3aff5ca8aa3 mynetweb
sha256:ebd813a36273ccd6dab11ffe4eab9ff3da01b4848c97b3ac9eb7ee170b001a72
[root@localhost dockernet]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynetweb latest ebd813a36273 7 seconds ago 1.76GB
进入容器启动,可以看到两个正在运行的容器
[root@localhost dockernet]# docker run -itd -p 8080:80 mynetweb
[root@localhost dockernet]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
685a6c44c03b mynetweb "bash" 7 seconds ago Up 5 seconds 0.0.0.0:8080->80/tcp elated_kilby
f3aff5ca8aa3 microsoft/dotnet:latest "bash" 22 minutes ago Up 22 minutes 0.0.0.0:80->80/tcp upbeat_kapitsa
[root@localhost dockernet]# docker exec -it 685a6c44c03b /bin/bash
root@685a6c44c03b:/# cd /opt
root@685a6c44c03b:/opt# ls
app
root@685a6c44c03b:/opt# cd app
启动后成功运行
root@685a6c44c03b:/opt/app# dotnet PhoneCard.dll
保存容器为文件
[root@localhost dockernet]# docker export 685a6c44c03b > docker1.tar
[root@localhost dockernet]# ls
app docker1.tar Dockerfile
导入容器
docker import - docker1 < docker1.tar
docker修改容器中的文件
这里提供两种方法:
1.使用命令 docker exec -it 容器id /bin/bash
进入容器中,安装vim
编辑器。
1).同步源索引:apt-get update
2).安装vim
:apt-get install vim
3).输入vim
文件名 即可编辑文件了
注:直接输入命令apt-get install vim
会报错E: Unable to locate package vim
,必须等第一个命令完成后再安装vim
。
2.使用docker cp
1).根据容器id,使用docker cp
把这个文件复制出来:docker cp 容器id:/data/spider.py /home/runnian/
2).修改完成后把文件复制回容器中原来的位置:docker cp /home/runnian/spider.py 容器id:/data/
以上两种方法都可以修改docker
文件中的文件,区别是第一种方法只能在容器运行的时候使用,第二种方法不管容器是否在运行都可以使用,修改好后别忘了docker restart 容器id
重启容器。
不过以上两种方法都不太建议使用,当要修改文件时,最好还是在原文件中去修改,修改好后重新更新一下镜像再创建容器去运行。
修改已有docker
容器中的内容
一、docker ps
列出容器
二、docker cp
拷贝文件至容器
注:docker
中宿主机与容器(container
)互相拷贝传递文件的方法
1、从容器拷贝文件到宿主机
docker cp mycontainer:/opt/testnew/file.txt /opt/test/
2、从宿主机拷贝文件到容器
docker cp /opt/test/file.txt mycontainer:/opt/testnew/
需要注意的是,不管容器有没有启动,拷贝命令都会生效。
当结束后,我们使用 exit
来退出,现在我们的容器已经被我们改变了,使用 docker commit
命令来提交更新后的副本。
三、提交修改
$ sudo docker commit -m "描述内容" -a "author name" 32555789dd00 aipaper/devinz83:v2
其中,-m
来指定提交的说明信息,跟我们使用的版本控制工具一样;-a
可以指定更新的用户信息;之后是用来创建镜像的容器的 ID
;最后指定目标镜像的仓库名和 tag
信息。创建成功后会返回这个镜像的 ID
信息。
四、使用 docker images
来查看新创建的镜像。
docker images
五、修改yml
文件
使用新的image
六、重新部署,即运用新修改后的镜像部署了docker
应用。
docker stack deploy --compose-file=/opt/docker/yml/docker-compose-resty-redis.yml resty_redis
附:可添加redis集群密码的lua脚本,传送门。
https://github.com/steve0511/resty-redis-cluster