1.安装的docker版本

docker -v
Docker version 17.03.2-ce

2.查看本地的镜像

docker images

3.拉取镜像

docker pull centos:7

4.编写Dockerfile

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

5.build Dockerfile

docker build -t . xxx # 镜像的名字

bash

docker run -i -t ubuntu:15.10 /bin/bash

将容器中的8080端口映射到本机的18080端口

docker run -p 18080:8080 -it xxxx:v1.0.0dev /bin/bash

参数

-it:这是两个参数,一个是 -i:交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终端。
--rm:这个参数是说容器退出后随之将其删除。默认情况下,为了排障需求,退出的容器并不会立即删除,除非手动 docker rm。我们这里只是随便执行个命令,看看结果,不需要排障和保留结果,因此使用 --rm 可以避免浪费空间

6.运行

docker run xxx # 镜像的名字

7.查看自己镜像的id

docker ps

8.查看内网ip地址等运行情况

docker inspect id | grep IP 
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.5",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
                    "IPAMConfig": null,
                    "IPAddress": "172.17.0.5",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,

9.请求nginx

curl 172.17.0.5:80
<h1>Hello, Docker!</h1>

10.如果想要镜像不退出,然后进行镜像中

# run
ENTRYPOINT ["/bin/bash","-c","cat /hosts.txt >> /etc/hosts && bash /sleep.sh"]

然后执行

docker run  --network=host xxxx

查看id

docker ps

进入镜像中

docker exec -it xxxx bash

 

mac使用docker的时候配置仓库

https://registry.docker-cn.com
http://docker.mirrors.ustc.edu.cn
http://hub-mirror.c.163.com

docker安装和使用_bash

 

 

如果是ubuntu的话,在/etc/docker目录下新建daemon.json,内容

{
  "registry-mirrors": ["https://registry.docker-cn.com","http://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com","https://3laho3y3.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io"]
}

重启docker服务

sudo systemctl restart docker

查看docker的磁盘使用情况

lintong@master:~$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          31        1         19.17GB   19.11GB (99%)
Containers      1         1         0B        0B
Local Volumes   48        0         0B        0B
Build Cache     0         0         0B        0B

清理磁盘,删除关闭的容器、无用的数据卷和网络,以及dangling镜像(即无tag的镜像)

docker system prune
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all dangling images
        - all build cache
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

如果有2个镜像的id相同,则删除的时候会报

docker rmi 85f602b72c3c
Error response from daemon: conflict: unable to delete 85f602b72c3c (must be forced) - image is referenced in multiple repositories

此时应该找到2个id相同的镜像,然后一个个进行删除

docker images | grep 85f602b72c3c
xxxxx                                   v0.9.1          85f602b72c3c   6 weeks ago     2.65GB
xxxxx   <none>             85f602b72c3c   6 weeks ago     2.65GB

删除第一个

docker rmi xxxxx:v0.9.1

再删除另一个

docker rmi 85f602b72c3c

  

使用 Docker 容器应该避免的 10 个事情 

https://developers.redhat.com/blog/2016/02/24/10-things-to-avoid-in-docker-containers/

1.不要在容器中存储数据 –  容器可能被停止,销毁,或替换。

2.不要将你的应用发布两份 –  一些人将容器视为虚拟机。

3.不要创建超大镜像 – 一个超大镜像只会难以分发。

4.不要使用单层镜像

5.不要为运行中的容器创建镜像

6.不要只使用“最新”标签

7.不要在单一容器中运行超过一个进程

8.不要在镜像中存储凭据

9.使用非root用户运行进程

10.不要依赖IP地址