Docker学习日记
简介:
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
常用命令
** # docker ps // 查看目前启动的容器 # docker ps -a // 查看所有的容器 # docker start 5917eac21c36 // 启动容器ID为5917eac21c36的容器 # docker stop 5917eac21c36 // 关闭容器ID为:5917eac21c36 的容器 # docker restart 5917eac21c36 // 重启容器ID为:5917eac21c36 的容器 # docker logs 2b1b7a428627 //查看容器ID为:。。。的容器日志 # docker pull ubuntu // 获取镜像 # docker run -it ubuntu /bin/bash // 以命令行模式进入镜像未Ubuntu的容器 # docker run -itd ubuntu /bin/bash // -d 是默认不进入容器在后台运行 # docker rmi -f // 删除镜像ID为b93646ae03d0的镜像 # docker rm -f // 删除容器ID为43810b8e35d1的容器 # docker run -it -p 808:80 centos/dvwa:v3 /bin/bash //将内部80端口影响到本机808端口上 ,如果需要映射多个端口可以继续添加-p 参数 eg: -p 223:22 -p 63306:3306 # docker run -d -P centos/dvwa:v3 /bin/bash // 将内部端口随机映射到物理机上 # docker top 67094b1dec19 // 查看容器进程 # docker search httpd //查找镜像 也可以去docker官网搜索,Docker Hub 网址为: https://hub.docker.com/
**
[ ~]# docker run ubuntu:15.10 /bin/echo "Hello world" Hello world
各个参数解析:
docker: Docker 的二进制执行文件。 run: 与前面的 docker 组合来运行一个容器。 ubuntu:15.10 指定要运行的镜像,Docker 首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。 /bin/echo "Hello world": 在启动的容器里执行的命令
运行交互式容器:
[ ~]# docker run -it ubuntu:15.10 /bin/bash :/# cat /etc/issue Ubuntu 15.10 \n \l
参数解析:
-t: 在新容器内指定一个伪终端或终端。 -i: 允许你对容器内的标准输入 (STDIN) 进行交互。
可以使用 exit 或是 CTRL+D退出容器
进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入: docker attach docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
导出和导入容器
导出容器 [ ~]# docker export 67094b1dec19 >centos.dvwa.tar //导出容器ID:67094b1dec19到本地 导入容器: # cat centos.dvwa.tar | docker import - centos/dvwa:v1 // 注意 import后有“-” sha256:6dc11a8857af3eabf0f42a270bda3bd98849ab237f1d3277562e079b2fbdca8f
创建镜像
1、从已创建的镜像中,更新镜像,并提交这个镜像
2、使用Dockerfile指令来创建一个新的镜像
更新副本: # docker commit -m="has dvwa" -a="glodon_1inux" 67094b1dec19 centos/dvwa:v1 -m: 提交的描述信息 -a: 指定镜像作者 67094b1dec19:容器 ID centos/dvwa:v1: 指定要创建的目标镜像名 # 通过以下命令启动 # docker run -it -p 80:80 centos/dvwa:v1
构建新的镜像
我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。
编写Dockerfile
# cat Dockerfile FROM 1inux/centos:6.6 MAINTAINER Fisher "" COPY ./rasp-*/rasp /rasp // .rasp-* 和Dockerfile在一个目录下 RUN echo "cloud.enable: true" >> /rasp/conf/openrasp.yml && echo "cloud.backend_url: https://grasp-test.glodon.com/" >> /rasp/conf/openrasp.yml && echo "cloud.app_id: d3f92106daa329948879e683ee1d6d39641723ca" >> /rasp/conf/openrasp.yml && echo "cloud.app_secret: MRLTPAdlR2gG2iJrv6O1pEZrgrauVoxlOKH8nOWnuDa" >> /rasp/conf/openrasp.yml
编写完成后,通过 docker build 命令来构建一个镜像
#** docker build -t 1inux/centos-rasp:6.6 .** Sending build context to Docker daemon 42.06MB Step 1/4 : FROM 1inux/centos:6.6 ---> b93646ae03d0 Step 2/4 : MAINTAINER Fisher "" ---> Running in f34a84c360ce Removing intermediate container f34a84c360ce ---> d6104f825a18 Step 3/4 : COPY ./rasp-*/rasp /rasp ---> 70c531b49efe Step 4/4 : RUN echo "cloud.enable: true" >> /rasp/conf/openrasp.yml && echo "cloud.backend_url: https://grasp-test.glodon.com/" >> /rasp/conf/openrasp.yml && echo "cloud.app_id: d3f92106daa329948879e683ee1d6d39641723ca" >> /rasp/conf/openrasp.yml && echo "cloud.app_secret: MRLTPAdlR2gG2iJrv6O1pEZrgrauVoxlOKH8nOWnuDa" >> /rasp/conf/openrasp.yml ---> Running in 98952e495c27 Removing intermediate container 98952e495c27 ---> 3f4001f43793 Successfully built 3f4001f43793 Successfully tagged 1inux/centos-rasp:6.6
参数说明:
-t :指定要创建的目标镜像名
. :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
容器互联:
新建网络:
# docker network create -d bridge 1inux-test // -d 指定Docker网络类型 ,有 bridge、overlay。 # docker network ls //查看网络 启动两个同一网络的容器 # docker run -idt --name test1 --network 1inux-test 1inux/centos-rasp:6.6 /bin/bash # docker run -idt --name test2 --network 1inux-test 1inux/centos-rasp:6.6 /bin/bash 效果如下; [ /]# docker exec -it e8cdc773df3e /bin/bash [ /]# **ping test1** PING test1 (172.20.0.2) 56(84) bytes of data. 64 bytes from test1.1inux-test (172.20.0.2): icmp_seq=1 ttl=64 time=0.414 ms --- test1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 968ms rtt min/avg/max/mdev = 0.414/0.414/0.414/0.000 ms [ /]# ping test2 PING test2 (172.20.0.3) 56(84) bytes of data. 64 bytes from e8cdc773df3e (172.20.0.3): icmp_seq=1 ttl=64 time=0.082 ms 64 bytes from e8cdc773df3e (172.20.0.3): icmp_seq=2 ttl=64 time=0.100 ms
推送镜像
用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub。
以下命令中的 username 请替换为你的 Docker 账号用户名。
$ docker tag ubuntu:18.04 username/ubuntu:18.04 $ docker image ls
相关推荐
魅惑青花瓷 2020-11-11
yangkang 2020-11-09
MichaelJScofield 2020-11-06
TaoTaoFu 2020-11-06
liaochaowu 2020-11-16
ChlatZed 2020-11-11
lnkToKing 2020-10-29
ChlatZed 2020-10-27
ChlatZed 2020-10-13
时光流水 2020-09-23
yangkang 2020-09-23
changecan 2020-09-22
dusuanyun 2020-09-21
newisI 2020-09-01
liaochaowu 2020-09-14
ShangQuan0 2020-09-10
fearlessxjdx 2020-09-04
libra0 2020-09-02
ChlatZed 2020-08-23
王道革 2020-11-25
lihongtai 2020-11-09
xysoul 2020-11-03