Docker基础入门学习 / 网络研习社#31
Docker的入门应用并不难,它就是要减免程序地学习和安装难度。这好比学开车比较容易,你要学造车就比较难了。对于普通用户,能用就ok!
Docker的三大概念:仓库、镜像、容器
从上图中大家了解Docker的三大概念:仓库、镜像、容器,这个了解了,其实就学完大半了!你所要做的就是从宜家买把椅子回家,放在家中用起来就行了。
下面是这几天学习的一些笔记,大家可以参考着看看。
Docker
目录
- 下载与资源:
- Ubuntu维护版本安装(版本较旧)
- Docker维护版本安装
- docker-compose
- 镜像images
- 获取和推送镜像
- 构建镜像commit
- 构建镜像Dockerfile
- 容器container
- 容器的端口映射
- 查看守护进程
- 守护式容器
- docker远程访问
- docker网络连接
- 数据卷volumes
- 数据卷容器
- 资源隔离
下载与资源:
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维护版本安装(版本较旧)
sudo apt-get install docker.io
source /etc/bash_completion.d/docker.io
sudo docker.io version
注意:这个版本安装的docker版本较旧,推荐使用下面的Docker维护版本安装。
Docker维护版本安装
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
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
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
获取和推送镜像
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
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
vim Dockerfile
FROM ubuntu:14.04 /基础镜像信息
MAINTAINER jiangzhibin "[email protected]" /作者
RUN apt-get update /运行的命令
RUN apt-get install -y nginx
EXPOSE 80 /暴露的端口
# this is first dockerfile
# version v1
FROM ubuntu
MAINTAINER lemool "[email protected]"
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
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 /更改镜像标签
容器的端口映射
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
查看守护进程
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
守护式容器
docker run -d <image>
ctrl+p ctrl+q 进入后台
docker logs
docker top <image>
docker exec -d -i -t <image> <command> <args>
docker远程访问
-H tcp://host.port
unix:///path/to/socket
fd"//*or fd://socketfd
-H unix:///var/run/docker.sock
docker网络连接
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
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"] 添加巻
数据卷容器
挂载数据卷的容器,以共享数据
docker run --volumes-from [container name]
docker run -it --name volume_test2 --volumes-from volume_test lemool/nginx_ubuntu
资源隔离
LXC Kernel namespace
pid net lpc mnt uts user
资源限制
cgroup
cpu 内存
学习下
!shop
Posted using Partiko Android
你好鸭,lemooljiang!

@julian2013赠送1枚SHOP币给你!
目前你总共有: 7枚SHOP币
查看或者交易
无聊吗?跟我猜拳吧! **石头,剪刀,布~**SHOP币请到 steem-engine.com.