Docker的入门应用并不难,它就是要减免程序地学习和安装难度。这好比学开车比较容易,你要学造车就比较难了。对于普通用户,能用就ok!
Docker的三大概念:仓库、镜像、容器
从上图中大家了解Docker的三大概念:仓库、镜像、容器,这个了解了,其实就学完大半了!你所要做的就是从宜家买把椅子回家,放在家中用起来就行了。
下面是这几天学习的一些笔记,大家可以参考着看看。
Docker
目录
下载与资源:
1 2 3 4 5 6
| Docker version 19.03.1, build 74b1e89e8a docker-compose version 1.23.1, build b02f1306
官 网: https://www.docker.com docker-hub: https://hub.docker.com 手册:https://docs.docker.com
|
Ubuntu维护版本安装(版本较旧)
1 2 3 4
| sudo apt-get install docker.io source /etc/bash_completion.d/docker.io sudo docker.io version 注意:这个版本安装的docker版本较旧,推荐使用下面的Docker维护版本安装。
|
Docker维护版本安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sudo apt-get install –y curl // 可以先检查下curl: whereis curl ,如果已有不用安装。
curl –sSL https://get.docker.com/ | sh sudo docker version
使用非root用户(加入docker用户组): sudo groupadd docker sudo gpasswd –a ${USER} docker / sudo gpasswd –a lemooljiang docker sudo service docker restart
sudo wget –qO- https://get.docker.com | sh sudo usermod –aG docker jiangzhibin
# 另一种方法安装docker wget -qO- https://get.docker.com/ | sh
|
docker-compose
1 2 3 4 5
| sudo curl -L https://github.com/docker/compose/releases/download/1.23.1 /docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose docker-compose --version
|
镜像images
1 2 3 4 5 6 7 8 9
| docker images [options] [repository] -a , --all=false -f , --filter=[] --no-trunc=false -q , --quiet=false docker rmi [options] image[iamge...] -f , --force=false --no-prune=false
|
获取和推送镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| docker search [options] term --automated=false --no-trunc=false -s , --stars=0 docker search ubuntu /查找ubuntu镜像
docker pull [options] name [:tag] docker pull ubuntu:14.04 /从远程下载镜像
更改国内docker源(--registry-mirror选项) vim /etc/default/docker DOCKER_OPTS = "--registry-mirror=http://MIRROR-ADDR"
docker push docker/whalesay /上传镜像到docker-hub
|
构建镜像commit
1 2 3 4 5 6 7 8 9
| docker commit 通过容器构建 docker build 通过Dockerfile构建
docker commit [options] container [repository[:tag]] -a , --author="name" -m , --message="things" -p , --pause=true
docker commit -a "lemool" -m "add nginx" my_ubuntu lemool/nginx_ubuntu
|
构建镜像Dockerfile
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
| vim Dockerfile
FROM ubuntu:14.04 /基础镜像信息 MAINTAINER jiangzhibin "497867999@qq.com" /作者 RUN apt-get update /运行的命令 RUN apt-get install -y nginx EXPOSE 80 /暴露的端口
# this is first dockerfile # version v1 FROM ubuntu MAINTAINER lemool "497867999@qq.com" RUN apt-get update RUN apt-get install -y nginx EXPOSE 80
## RUN的两种模式 RUN <command> /shell模式 RUN ["executable", "param1", "param2"] /exec模式
RUN echo hello RUN ["/bin/bash","-c","echo hello"]
CMD ["executable", "param1", "param2"](exec模式) CMD command param1 param2 (shell模式)
ENTRYPOINT ["executable", "param1", "param2"] ENTRYPOINT command param1 param2
ADD <src>...<dest> COPY <src>...<dest> VOLUME ["/data"] 添加巻 WORKDIR /path/to/workdir ENV <key><value> USER daemon ONBUILD [instruction]
docker build [options] path | url | docker build -t my_ubuntu . /直接创建my_ubuntu的镜像
|
容器container
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| docker run docker/whalesay /运行镜像 docker run ubuntu echo hello world /启动容器并输出
docker run -i -t ubuntu /bin/bash /启动交互式容器 docker run --name mydocker -it ubuntu /bin/bash ctrl+p ctrl+q /退出容器
docker inspect [options] container|image /详细查看容器的信息
docker ps /查看正在运行的容器 docker ps –a /查看所有容器 docker ps -l /查看最后开启的容器 docker start container_name /重启容器 docker stop container_name docker extc | docker attach /重新进入容器 docker rm container_name | docker rm -f /删除容器
docker tag docker/whalesay jiangzhibin/whalesay /更改镜像标签
|
容器的端口映射
1 2 3 4 5 6 7 8 9 10 11 12 13
| docker run -d -P --name my_ubuntu ubuntu -P ,--publish-all=true | false 默认为false docker run -P -i -t ubuntu /bin/bash
docker run -d -p 91:80 --name my_ubuntu3 ubuntu -p ,--publish=[]指定映射 -p hostPort:containerPort -p ip:hostPort:containerPort -p ip::containerPort docker run -p 80 -i -t ubuntu /bin/bash docker run -p 8080:80 -i -t ubuntu /bin/bash docker run -p 0.0.0.0:80 -i -t ubuntu /bin/bash docker run -p 0.0.0.0:8080:80 -i -t ubuntu /bin/bash
|
查看守护进程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| ps –ef | grep docker sudo status docker
docker -d [options] -D , --debug=false -e , --exec-driver="native" -g , --graph="/var/lib/docker" --icc=true -l , --log-level="info" -p -G -H --tls --api -s
sudo service docker stop sudo service docker start 启动配置文件 /etc/default/docker
|
守护式容器
1 2 3 4 5
| docker run -d <image> ctrl+p ctrl+q 进入后台 docker logs docker top <image> docker exec -d -i -t <image> <command> <args>
|
docker远程访问
1 2 3 4 5
| -H tcp://host.port unix:///path/to/socket fd"//*or fd://socketfd
-H unix:///var/run/docker.sock
|
docker网络连接
1 2 3 4 5 6 7 8
| sudo apt-get install bridge-utils sudo brctl show
# 更改docker0地址 sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0
docker0:linux虚拟网桥,可以设置IP地址,相当于拥有一个隐藏的虚拟网卡 172.17.42.1 255.255.0.0
|
数据卷volumes
1 2 3 4 5 6 7 8 9 10 11 12 13
| data volumes, 数据的永久化 docker run -v ~/container_data:/data -it ubuntu /bin/bash -v /data -v src:dst docker inspect <image> 查看数据卷
docker run -it --name volume_test -v /data lemool/nginx_ubuntu docker inspect volume_test
docker run -it --name volume_test -v /data:/data lemool/nginx_ubuntu /data:/data 第一个data是宿主机的data, 第二个data是docker上的data,这样可以一对一映射
VOLUME ["/data"] 添加巻
|
数据卷容器
挂载数据卷的容器,以共享数据
1 2
| docker run --volumes-from [container name] docker run -it --name volume_test2 --volumes-from volume_test lemool/nginx_ubuntu
|
资源隔离
1 2 3 4 5 6
| LXC Kernel namespace pid net lpc mnt uts user
资源限制 cgroup cpu 内存
|
This page is synchronized from the post: ‘Docker基础入门学习 / 网络研习社#31’