kitematic没碰
Debian是完全由自由软件组成的类UNIX操作系统
netstat查看网络
网易蜂巢(可以获得国内镜像并且查看配置文件信息)
慕课网另一个同学的笔记
https://github.com/endlif/GitCode/blob/master/docker/README.md
这个可以当手册查看很全后面的都没学
https://yeasy.gitbooks.io/docker_practice/install/experimental.html
homebrew改了镜像
https://blog.csdn.net/JerryWu145/article/details/86214908
用brew doctor来查看状况
有些过期的就untap就OK了
http://laker.me/blog/2019/05/03/19_0503_homebrew_problem/
brew install tree 安装了个树形结构查询文件
安装了个wget
把Nginx里面三个配置文件分别映射出在宿主机
这样以后只用改外面的文件夹就相当于修改了里面
https://juejin.im/post/5cd5288e6fb9a032125071a6
sudo mkdir -p /nginx/{conf,conf.d,html,logs}
最新国内下载地址
http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/
docker加速地址
https://www.jianshu.com/p/405fe33b9032
/ bin / bash,那么你告诉你的系统使用bash作为默认的shell
docker login
docker ps看正在用的容器
docker ps -a 看所有已经停止了但是没删除的容器
docker images看镜像
docker pull hello-world
docker run hello-world
docker run -i hello-world (interaction)
docker run -it hello-world (t-tty打开终端)
docker container run --rm -p 8000:3000 -it koa-demo /bin/bash
--rm参数,在容器终止运行后自动删除容器文件
docker top +id/name查看容器内部运行的进程
docker attach
# docker run -p 83:80 -d --name=nginx-4 nginx
# docker attach nginx-4
//本机上再打开一个终端,输入以下命令,观察上面终端的输出
# curl localhost:83 // nginx输出正常访问记录
# curl localhost:84/index // nginx输出访问错误记录
docker rm +id删除一个容器
docker rmi +id删除一个镜像
docker rmi $(docker images -q)删除所有镜像
docker rm $(docker ps -a -q)删除所有容器
docker stop $(docker ps -a -q)停止所有容器
docker exec -it +id /bin/bash运行的容器中 (进入容器如何安全退出(退出后容器不关闭),依次按ctrl+p,ctrl+q)
(进去可以用which nginx查看这个Nginx其实也是运行在本地的Linux下/usr/sbin/nginx
ps -ef查看当前有哪些进程,,,如果不行先输入这句apt-get update && apt-get install procps)
docker history +id/名称查看每一层大小
--net host 参数(没试过)
https://note.youdao.com/ynoteshare1/index.html?id=0d12819002db9df5127aa43b209f6f06&type=note
挂载一个卷的步骤:
1.docker run -it -v /test zwsnail/test /bin/bash 要用外面宿主机的一个来自Mac虚拟机alpine里面的一个位置文件夹来挂/test(-volume的意思)
-v /root/test:/容器id:为这个容器绑定一个host宿主机root下面的test文件夹
touch /test/volume.txt在容器里面创建个文件
docker volume rm vm_test删除卷
docker volume ls查看挂载卷的目录
docker volume create vm_test重新命名vm_test
docker run -it --mount source=vm_test,target=/test zwsnail/test /bin/bash挂在容器上
-d 允许这个程序直接返回,把这个容器作为守护进程执行
下载一个busybox因为很多Linux语句不支持在docker里面,比如ping nginx查看网络连接和ifconfig看ip
/bin/busybox ifconfig
容器之间互联了;
docker network ls 创建一个网络;
docker network rm必须要把上面的容器拿掉才能删除
docker network create test创建一个测试网络
通过attach命令可以重新attach一个后台运行的container
通过docker inspect {container_id}来获取container的更多的信息,包括网络,volume,实际在host上的进程id等信息
如果最开始忘了指定端口,可以把当前容器变成一个镜像「a是指定作者,-m是写段话,ngingx_rongqi是之前容器的名字,aaa是新的镜像名,后面是tag版本」
docker commit -a "author_zoe" -m "new_image" nginx_rongqi aaa:v1
然后重新指定端口开启这个镜像
docker run -it --name web_demo -p 8000:80 aaa:v1 /bin/bash
[root@docker ~]# docker run -it -v /data -h wadeson saltstack/ubuntu-14.04
root@wadeson:/# ls
bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
-i:交互模式,直接进入到container容器中
-t:tty,伪终端,虚拟终端
-h wadeson:指定为container设置hostname
-v /data:container内的/data为挂载点
查看data目录:
root@wadeson:/# ls /data/
root@wadeson:/#
-------------------------------------
记录重新改写Nginx首页的过程
桌面有个desktop_docker的文件夹,里面有个index.html文件,用这个改写
1.先开一个Nginx
docker run -p 8080:80 -d nginx
2.把桌面文件拷贝进去
docker cp desktop_docker/index.html 5a2cd6cd2880://usr/share/nginx/html
---------------------------------------
自己写个Dockerfile运行
1.建个文件夹来装
mkdir haha
2.进入
cd haha
3.创建Dockerfile
touch Dockerfile
4.用编辑器vim编辑
vim Dockerfile
注意* 先按i进去编辑模式,
FROM alpine:latest (相当于pull这个最新版本的alpine小型unix系统)
MAINTAINER zoe
CMD echo "Hi,zoe"
然后:wq退出保存
5.运行一个容器来使用里面写的内容
docker build -t zwnail . (有个点,全小写)
Sending build context to Docker daemon 11.78kB
Step 1/3 : FROM alpine:latest
latest: Pulling from library/alpine
c9b1b535fdd9: Downloading
latest: Pulling from library/alpine
c9b1b535fdd9: Pull complete
Digest: sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d
Status: Downloaded newer image for alpine:latest
---> e7d92cdc71fe
Step 2/3 : MAINTAINER zoe
---> Running in 384c4e98b120
Removing intermediate container 384c4e98b120
---> a6b20b661b21
Step 3/3 : CMD echo "Hi,zoe"
---> Running in f4c363120241
Removing intermediate container f4c363120241
---> c1c6033a4e54
Successfully built c1c6033a4e54
Successfully tagged zwsnail:latest
再看images就多了一个自己创建的镜像
如果一直docker run zwsnail,就会一直增加container可以在gui里面看到
------------------------------------------------------
运行一个Ubuntu稍微复杂点的Dockerfile
1.touch Dockerfile
2.vi Dockerfile
FROM ubuntu
MAINTAINER endlif
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list (改加速国内镜像)
RUN apt-get update && \(加了这个会把几层汇成一层减小镜像体积)
RUN apt-get install -y nginx
COPY index.html /var/www/html (下面这种写法的意思是进入exec[],进入shell内的运行模式)
ENTRYPOINT["/usr/sbin/nginx","-g","daemon off;"] (以便nginx保持在前台,以便docker能够正确跟踪进程(否则启动后容器将立即停止)
EXPOSE 80
在前台执行而不是守护进程来执行是啥意思
前台执行是可见的,会占用当前termal窗口,使窗口不能再执行别的命令和任务,可以用control+c中断;守护进程就是可以在后台运行,由守护进程保证任务的不间断,当系统检测到守护进程中进程终止之后会自动再拉起这个进程或者任务,比如mysql的守护进程名字是mysqld,防火墙firwall的进程是firewalld,守护进程一般默认以进程+d结尾;也有一个软件叫做supervisor,可以用来进行进程守护)
3.touch index.html
4.vi index.html(随便写一句话)
5.docker build -t zoe/ubuntu .(有一点,自己取个image名字)
6.$docker run -d -p 80:80 zoe/ubuntu(要run上面镜像的名字)
7.curl http//:localhost
----------------------------------------------------------------------------------------------------------------
加载卷volume的三种方法
方法一
随机在alpine苹果电脑虚拟Linux系统alpine里面产生一个文件夹来挂
docker run -d --name nginx_rongqi -v /usr/share/nginx/html nginx (不写d,终端就在那儿卡着不能写其他行,没有弄到后台去)
这个是Mac的地址
找到上面这个容器挂靠的文件夹对应到真实宿主机alpine虚拟机里面存储的位置:
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty (我靠这行不行用下面这行)
用这句话docker run -it --rm --privileged --pid=host justincormack/nsenter1
3.
cd可以查看inspect -> Mounts找到虚拟机里面的文件路径进去
ls查看里面有两个文件index和50x报错
4.可以cat下index文件,再更改
输入一段话来更改比如echo”啦啦啦“> index.html
用另一个terminal可以进去docker exec -it nginx_rongqi /bin/bash
然后进入容器的文件夹root@bfa6fb93a328:/# cd usr/share/nginx/html
cat index.html 就可以看到里面变成了改动的 ”啦啦啦“
方法二
本地选定的一个文件夹来挂
比如当前目录的一个文件index.html就把Nginx里面原来默认的主页覆盖了
docker run -p 8080:80 -d -v $PWD:/usr/share/nginx/html nginx
/var/www/html不是对外端口!
(/usr/share/nginx/html应该就是Nginx对外的端口,放其他展示文件。
更改默认web目录
https://blog.csdn.net/xiaojie802/article/details/90286554
方法三
产生一个公用的容器当数据库,其他容器的数据都放这里
1.#宿主机目录:$PWD/data docker目录:/var/mydata 容器名:data_container基础镜像:ubuntu用create!!
docker create -v $PWD/data:/var/mydata --name data_container ubuntu
# -it表示使用交互的方式进入容器[默认ubuntu基础镜像没有服务]
2.docker run -it --volumes-from data_container ubuntu /bin/bash
#进入后执行mount,可以看到有/var/mydata目录的挂载信息
mount (进去之后输入这个可以看到很多,里面有个我们创建的目录,然后进去在里面touch一个txt,退出回头看data里面多了这个txt
上传到hub
1.先search一个然后run一个
2.然后贴标签docker tag docker/whalesay zoe/whalesay_test
push时即使账户密码正确也显示 [denied: requested access to the resource is denied]的问题
这里要注意一个问题,给自己镜像命名的时候格式应该是: docker注册用户名/镜像名,比如我的docker用户名为 test123,那么我的镜像tag就为 test123/whalesay,不然是push不上去的
3.docker login
4.docker push zoe/whalesay_test
docker-compose是独立的一个工具,但自带Mac和window出Linux环境
让image变小的方法,没有细研究
https://www.infoq.cn/article/3-simple-tricks-for-smaller-docker-images
GitHub 上star了一个ghost博客记得下下来看
叫做 dockerGgost已下载