Docker
docker run -it ubuntu:15.10 /bin/bash
#启动容器(交互,虚拟bash, -d为后台启动)
docker run -itd ubuntu:15.10 /bin/bash
#关闭容器后,查看容器的状态,并重新启动容器
exit
docker ps -a
docker start (container_name)
#进入后台运行的容器(exit退出后会关闭容器)
docker attach (container_name)
#进入后台运行的容器(exit退出后会保持容器开启)
docker exec -it (container_name) /bin/bash
#清除所有后台停止运行的容器
docker container prune
#清除某个容器
docker rm -f (docker_name)
#导出某个容器
docker export 1e560fca3906 > ubuntu.tar
#导入某个容器
docker import unbuntu.tar test/ubuntu:v1
#查看日志(可查看code server的密码)
docker logs (container name)
- 在container中下载东西,或者修改后,导出,再导入为镜像,原始镜像的Dockerfile中的部分内容会失效,主要是CMD与entrypoint都会失效。
DOCKERFILE
- Build
## 使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
docker build -t runoob/ubuntu:v1 .
## 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
docker build github.com/creack/docker-firefox
## 也可以通过 -f Dockerfile 文件的位置:
docker build -f /path/to/a/Dockerfile .
- ENTRYPOINT命令
ENTRYPOINT 的 Exec 格式用于设置容器启动时要执行的命令及其参数,同时可通过CMD命令或者命令行参数提供额外的参数。ENTRYPOINT 中的参数始终会被使用,这是与CMD命令不同的一点。下面是一个例子:
ENTRYPOINT ["/bin/echo", "Hello"]
## 当容器通过 docker run -it [image] 启动时,输出为:
Hello
## 而如果通过 docker run -it [image] CloudMan 启动,则输出为:
Hello CloudMan
## 将Dockerfile修改为:
ENTRYPOINT ["/bin/echo", "Hello"]
CMD ["world"]
##. 当容器通过 docker run -it [image] 启动时,输出为:
Hello world
## 而如果通过 docker run -it [image] CloudMan 启动,输出依旧为:
Hello CloudMan
###ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。
参考:
https://www.cnblogs.com/fclbky/p/11338738.html
################
# 如果指定了enterpoint,那么下面的这种形式的/bin/bash将被当成参数
docker run -it test/cmd:v1 /bin/bash
# 只能用 --enterpoint 来重新制定入口
docker run -it test/cmd:v1 --entrypoint /bin/bash
################
Docker与code server
docker run -itd -p "11111:8080" -v /home/public:/home/coder/Public -v /home/cloud/gitrepo:/home/coder/project -v /home/cloud/anaconda3:/home/cloud/anaconda3 codercom/code-server:v2 --allow-https --auth password --password 999999
- codercom/code-server:v2 为image的名称。
- -p 11111:8080" 指将docker中的8080端口映射到本地的11111端口。docker中的服务默认在8080端口开启
- -v 为把本地的文件挂载到container中,anacoand为python环境,挂载位置最好与本地相同
- allow-https、–password 后面的参数没有起作用,后续继续研究一下。
- 使用autossh将11111端口反向代理即可远程连接。
- code-server搭建python环境时,先下载ms-python的.vsix插件,然后在vscode中安装。最后在设置中搜索“python-pythonpath”,改成实际的路径,即可运行python程序。
Wordpress
docker container run -d --rm --name wordpressdb --env MYSQL_ROOT_PASSWORD=123456 --env MYSQL_DATABASE=wordpress mysql:5.7
docker container run --rm --name wordpress --volume "/home/cloud/Documents/docker-demo":/var/www/html -d -p 8001:80 php:5.6-apache
docker container run --rm --name wordpress --volume "/home/cloud/Documents/docker-demo":/var/www/html -d -p 8001:80 --link wordpressdb:mysql phpwithmysql