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

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

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

docker.jpg

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’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×