快速开始
docker可以理解为轻量级的虚拟机,它可以把应用程序放在独立的环境中运行
最简单的docker命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| docker run ubuntu echo hello docker docker run nginx
docker images
docker run -p 8080:80 -d nginx 06dcb2f35caa00ba89faae92e1fc42917ccafeecf363f3a057ea75aede66eb78
docker ps docker cp index.html 06dcb2f35caa://usr/share/nginx/html docker stop 06dcb2f35caa
docker在容器内所做的改动都是暂时的,所以改动容器内的内容停止容器后再开启,网页不会发生变化。需要使用commit命令保存更改
docker commit -m "fun” 67791ea2402f1401c nginx-fun sha256:db3845fd93625e56c9234c2622a3ea89126732323534ff449871a027ad8330e8 # 新产生的image id
docker rmi db3845fd9362 # 删除image
docker ps -a # 查看所有运行过的images docker rm 2e61f26e9f41 7bde03e544e8 # 删除container
从Dockerfile构建镜像 https://stackoverflow.com/questions/41286028/docker-build-error-checking-context-cant-stat-c-users-username-appdata
mkdir dockerfiles && cd dockerfiles
cat Dockerfile FROM alpine:latest MAINTAINER xbf CMD echo "hello docker”
docker build -t hello-docker
mkdir dockerfiles2 && cd dockerfiles2 cat “today is sunday” > iindex.html cat Dockerfile FROM ubuntu MAINTAINER xbf 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 ENTRYPOINT ["/usr/sbin/nginx","-g",”daemon off;"] EXPOSE 80
docker build -t xbf/hello-nginx . docker run -d -p 80:80 xbf/hello-nginx
http :80
|
Dockerfile中每一行对应一个层,对应一个独立ID
Volume提供了独立于容器之外的持久化存储
1 2
| docker run -d --name nginx -v /usr/share/nginx/html nginx docker inspect nginx
|
另一个终端执行
1 2 3 4 5 6 7 8 9 10 11 12
| screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty cd /var/lib/docker/volumes/eceb621c68f44291c8f1cf9964c3425ed23ac95f726e67f7e551375df13671ee/_data echo aaa >> index.html
docker exec -it nginx /bin/bash cd /usr/share/nginx/html/ cat index.html
docker run -p 80:81 -d -v $PWD/html:/usr/share/nginx/html nginx
mkdir vol && cd vol && mkdir data docker create -v $PWD/data:/var/mydata --name data_container ubuntu
|
进入容器
1 2 3 4
| docker run -it --volumes-from data_container ubuntu /bin/bash root@5da2d3f8e973:/#mount | grep mydata root@5da2d3f8e973:/#osxfs on /var/mydata type fuse.osxfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,max_read=1048576) root@5da2d3f8e973:/#echo a > /var/mydata/a.txt
|
退出容器查看
仅有数据的容器可以做到被多个容器挂载从而做到数据共享。
Registry本身是注册中心的意思,提供SASS服务,而非镜像的意思。目的是让大家共享镜像。
docker-compose
1 2 3 4 5 6 7
| mkdir ghost && cd ghost mkdir ghost && mkdir nginx && mkdir data
docker-compose rm docker-compose stop docker-compose build docker-compose up -d
|