Docker基础入门学习 / 网络研习社#31

in #cn7 years ago (edited)

Docker的入门应用并不难,它就是要减免程序地学习和安装难度。这好比学开车比较容易,你要学造车就比较难了。对于普通用户,能用就ok!

docker.jpg

Docker的三大概念:仓库、镜像、容器

从上图中大家了解Docker的三大概念:仓库、镜像、容器,这个了解了,其实就学完大半了!你所要做的就是从宜家买把椅子回家,放在家中用起来就行了。

下面是这几天学习的一些笔记,大家可以参考着看看。

Docker

目录

下载与资源:

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 内存 
Sort:  

学习下

你好鸭,lemooljiang!
@julian2013赠送1枚SHOP币给你!

目前你总共有: 7枚SHOP币

查看或者交易 SHOP币 请到 steem-engine.com.

无聊吗?跟我猜拳吧! **石头,剪刀,布~**

Coin Marketplace

STEEM 0.05
TRX 0.32
JST 0.078
BTC 66783.37
ETH 1829.28
USDT 1.00
SBD 0.42