joken-前端工程师

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

===常用的命令行

 

 

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是否在运行。


 

posted on 2018-05-29 23:00  joken1310  阅读(87)  评论(0编辑  收藏  举报