0%

Docker入门

基础

下载

docker-for-mac[https://hub.docker.com/editions/community/docker-ce-desktop-mac]

安装

open docker.dmg

基础命令

1
2
3
4
docker images
docker ps
docker build
docker stop names

新建一个最简单的 docker

touch Dockerfile

Dockerfile:

1
2
3
FROM alpine:latest
MAINTAINER xbf
CMD echo "Hello Docker!"

docker build

-t 命名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
➜  d1 docker build -t hello_docker .
Sending build context to Docker daemon 2.048kB
Step 1/3 : FROM alpine:latest
latest: Pulling from library/alpine
921b31ab772b: Pull complete
Digest: sha256:ca1c944a4f8486a153024d9965aafbe24f5723c1d5c02f4964c045a16d19dc54
Status: Downloaded newer image for alpine:latest
---> 4d90542f0623
Step 2/3 : MAINTAINER xbf
---> Running in 01aa981ba138
Removing intermediate container 01aa981ba138
---> c89b7c5681c7
Step 3/3 : CMD echo "Hello Docker!"
---> Running in b7f3aa198826
Removing intermediate container b7f3aa198826
---> fb0e104cddad
Successfully built fb0e104cddad
Successfully tagged hello_docker:latest

docker images

1
2
3
4
➜  d1 docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello_docker latest fb0e104cddad 12 seconds ago 5.58MB
alpine latest 4d90542f0623 2 weeks ago 5.58MB

运行

1
2
3
d1 docker run hello_docker
Hello Docker!
d1

创建简单 nginx

touch Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
FROM ubuntu
# 作者
MAINTAINER xbf
# 网络加速
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
# 更新
RUN apt-get update
# 安装nginx
RUN apt-get install -y nginx
COPY index.html /var/www/html
# 入点 daemon-守护进程,off作为前台进程
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
# 暴露端口
EXPOSE 80

docker build -t xbf/hello-nginx .

docker run -d -p 80:80 xbf/hello-nginx //-d 进程守护,第一个 80,本机端口, :80 docker 端口

检测:

1
2
3
➜  d2 curl http://localhost  //缺省80端口
231321%
➜ d2

Dockerfile 语法\

命令 用途
FROM base image
RUN 执行命令
ADD 添加文件
COPY 拷贝文件
CMD 执行命令
EXPOSE 暴露端口
WORKDIR 指定路径
MAINTAINER 维护者
ENV 环境变量
ENTRYPIOINT 容器入口
USER 指定用户
VOLUME mount point

以 nginx 的名字运行(-v?-d?)

docker run -d –name nginx -v /usr/share/nginx/html xbf/hello-nginx

检查:

docker inspect xbf/hello-nginx

存储-volumes

1
2
3
4
5
6
7
8
9
10
11
12
➜  docker create -v \$PWD/data:/var/mydata --name data_container ubuntu

从一个容器挂载到另一个容器?

➜ docker run -it --volumes-from data_container ubuntu /bin/bash
root@35579f978550:/# cd /var/mydata/
root@35579f978550:/var/mydata# touch whatever.txt
root@35579f978550:/var/mydata# exit

➜ vol3 data
➜ data ls
whatever.txt

挂载成功

ctrl+D 退出容器

镜像仓库-Registry

术语

English 中文
host 宿主机
image 镜像
container 容器
registry 仓库
daemon 守护程序
client 客户端

$ docker search whalesay
$ docker pull whalesay

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
➜  data docker run docker/whalesay cowsay hahaha!
_________
< hahaha! >
---------
\
\
\
## .
## ## ## ==
## ## ## ## ===
/""""""""""""""""___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\______/
➜ data

$ docker push myname/whalesay

国内仓库:

daocloud
时速云
aliyun

docker-compose

多容器 app

docker.yaml
常用命令:
|命令|用途|
|build|本地创建镜像|
|command|覆盖缺省命令|
|depends_on|连接容器|
|ports|暴露端口|
|volumes|卷|
|images|pull 镜像|

compose 命令
|命令|用途|
|–|–|
|up|启动服务|
|stop|停止服务|
|rm|删除服务器中的各个容器|
|logs|观察各个容器的日志|
|ps|列出服务器相关的容器|

Donate comment here.

欢迎关注我的其它发布渠道