===常用的命令行
mount -t cifs -o username="jo",password="123456" //192.168.1.102/go-local /home/go-local docker run -it -p 80:80 --privileged=true -v /home/public-share/web:/usr/share/nginx/html nginx docker run -it -p 8080:8080 --privileged=true -v /home/go-local:/go/src golang /bin/bash
===============================================
mount -t cifs -o username="jo",password="123456" //192.168.1.102/go-local /home/go-local
这个是一个共享文件登录的方法,用于linux系统登录共享文件
username="jo",password="123456" 是共享主机的用户名密码
//192.168.1.102/go-local 共享主机的ip和共享文件夹
/home/go-local 映射到本地的路径,这样就可以在该目录下看到其他主机的共享文件夹下的东西了
=================================================================
docker run -it -p 80:80 --privileged=true -v /home/public-share/web:/usr/share/nginx/html nginx
-v /home/public-share/web:/usr/share/nginx/html docker 和本地文件夹间的映射,前面文件夹代表本地,后面代表docker,这样docker容器里面就可以访问本地主机下该文件夹的东西了
====================================================================
===如何映射本地文件
比如:
docker run -it -p 80:80 --privileged=true -v /home/public-share/web:/usr/share/nginx/html nginx
-p 80:80 这个指的是容器和本地的端口互相映射,前面的80指的是本地的80端口,后面指的是容器的80端口,这样容器中运行的服务80端口可以映射到本地的80端口,
然后就可以通过本地的ip访问容器的服务了。
--privileged=true 这个主要是使得容器获取本地文件的root权限修改控制等。
-v /home/public-share/web:/usr/share/nginx/html 指的是本地的文件映射到容器的文件中,这样在容器中的文件就可以对应本地的文件,就可以在容器中运行本地的文件。
dockerfile 主要是用于构建镜像,写好dockerfile后直接运行docker build就可以运行dockerfile的内容搭建出配置的镜像。
区别于拉取镜像,然后在镜像中搭建容器搭建镜像是更强大的功能。
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)
删除所有镜像
docker rmi $(docker images -q)
为这些命令创建别名
# ~/.bash_aliases
# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'
# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'
# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'
=========dockerfile cmd 相关
提到 CMD 就不得不提容器中应用在前台执行和后台执行的问题。这是初学者常出现的一个混 淆。 Docker 不是虚拟机,容器中的应用都应该以前台执行,而不是像虚拟机、物理机里面那样, 用 upstart/systemd 去启动后台服务,容器内没有后台服务的概念。 一些初学者将 CMD 写为: CMD service nginx start 然后发现容器执行后就立即退出了。甚至在容器内去使用 systemctl 命令结果却发现根本执 行不了。这就是因为没有搞明白前台、后台的概念,没有区分容器和虚拟机的差异,依旧在 以传统虚拟机的角度去理解容器。 对于容器而言,其启动程序就是容器应用进程,容器就是为了主进程而存在的,主进程退 出,容器就失去了存在的意义,从而退出,其它辅助进程不是它需要关心的东西。 而使用 service nginx start 命令,则是希望 upstart 来以后台守护进程形式启动 nginx 服 务。而刚才说了 CMD service nginx start 会被理解为 CMD [ "sh", "-c", "service nginx start"] ,因此主进程实际上是 sh 。那么当 service nginx start 命令结束后, sh 也就结 束了, sh 作为主进程退出了,自然就会令容器退出。 正确的做法是直接执行 nginx 可执行文件,并且要求以前台形式运行。比如: CMD ["nginx", "-g", "daemon off;"]
===dockerfile编写与运行
FROM jocentos:v2 CMD ["nginx", "-g", "daemon off;"]
FROM 代表基本的镜像市哪一个和tag多少
CMD 是容器启动执行的命令,只能有一条命令,而且只能用进程的方式启动,也就是全局变量去启动进程。
FROM debian:jessie RUN buildDeps='gcc libc6-dev make' \ && apt-get update \ && apt-get install -y $buildDeps \ && wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \ && mkdir -p /usr/src/redis \ && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \ && make -C /usr/src/redis \ && make -C /usr/src/redis install \ && rm -rf /var/lib/apt/lists/* \ && rm redis.tar.gz \ && rm -r /usr/src/redis \ && apt-get purge -y --auto-remove $buildDeps
RUN 是 搭建镜像相关的运行,需要下载哪些东西,或者安装哪些东西,这个命令是搭建镜像时候配合使用的。是过程而已。
====运行dockerfile
docker build -t mycentos:v1 .
-t 参数后面是镜像新名称和tag 最后是一个点,代表当前目录下的dockerfile
=====docker运行mysql
docker pull mysql
docker run --name first-mysql -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=123456 -d mysql
docker exec -it c741b45e9c24 bash
第一步,是拉取mysql镜像
第二步,是运行mysql镜像,这里需要映射端口和额外从命令行输入mysql的初始化密码。
第三步,是进入mysql容器,测试mysql是否在运行。
前端工程师、程序员