Docker安装部署
一、安装docker环境:rhel7.3的YUM源[root@18 docker]# yum install docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm -y[root@18 docker]# yum install docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm -...
·
一、安装docker
环境:rhel7.3的YUM源
[root@18 docker]# yum install docker-engine-17.03.1.ce-1.el7.centos.x86_64.rpm -y
[root@18 docker]# yum install docker-engine-selinux-17.03.1.ce-1.el7.centos.noarch.rpm -y
[root@18 docker]# systemctl start docker.service
##查看docker版本
[root@18 docker]# docker version
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:36:45 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.1-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:36:45 2017
OS/Arch: linux/amd64
Experimental: false
二、添加镜像源
在阿里云注册帐号,使用镜像加速器:
[root@18 ~]# sudo mkdir -p /etc/docker
[root@18 ~]# tee /etc/docker/daemon.json <<-'EOF' ##镜像加速
> {
> "registry-mirrors": ["https://afvtk9f6.mirror.aliyuncs.com"]
> }
> EOF
{
"registry-mirrors": ["https://afvtk9f6.mirror.aliyuncs.com"]
}
##在网上搜索镜像
[root@foundation10 docker]# docker search nginx
##从阿里云源nginx镜像
[root@18 docker]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
d660b1f15b9b: Downloading 8.4 MB/54.25 MB
aa1c79a2fa37: Download complete
f5f6514c0aff: Download complete
...
三、使用docker
导入镜像
[root@18 pub]# docker load < game2048.tar
011b303988d2: Loading layer 5.05 MB/5.05 MB
36e9226e74f8: Loading layer 51.46 MB/51.46 MB
192e9fad2abc: Loading layer 3.584 kB/3.584 kB
6d7504772167: Loading layer 4.608 kB/4.608 kB
88fca8ae768a: Loading layer 629.8 kB/629.8 kB
Loaded image: game2048:latest
##docker run --创建一个新的容器并运行加载镜像
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-d: 后台运行容器,并返回容器ID;
--name="nginx-lb": 为容器指定一个名称;
-h "mars": 指定容器的hostname;
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
[root@18 pub]# docker run -d --name vm1 game2048
1e7edf48084a0e5f7d8fd446139bb7628db408c29aac037867f55e350c17037c
在浏览器中访问IP:172.17.0.2,即可进入刚导入的2048小游戏。
##docker ps --列出所有在运行的容器信息。
-a :显示所有的容器,包括未运行的。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
[root@18 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1e7edf48084a game2048 "/bin/sh -c 'sed -..." 4 minutes ago Up 4 minutes 80/tcp, 443/tcp vm1
[root@18 docker]# ip addr
##查看到主机上创建新的虚拟网桥 docker0 :ip(172.17.0.1/16)
9: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:d8:d0:7f:2a brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:d8ff:fed0:7f2a/64 scope link
valid_lft forever preferred_lft forever
##docker images -- 列出本地镜像。
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
-q :只显示镜像ID。
[root@18 docker]# docker images game2048
REPOSITORY TAG IMAGE ID CREATED SIZE
game2048 latest 19299002fdbe 20 months ago 55.5 MB
##docker inspect -- 获取容器/镜像的元数据。
[root@18 docker]# docker inspect vm1
...
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
[root@18 pub]# iptables -t nat -L
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 anywhere
RETURN all -- 192.168.122.0/24 224.0.0.0/24
容器管理命令
# docker attach vm1 连接容器
# docker top vm1 查看容器中运行的进程信息
# docker logs vm1 查看容器指令输出 -f 参数可以实时查看
# docker stats vm1 查看容器资源使用率
# docker diff vm1 查看容器修改
# docker run -d --name vm1 ubuntu bash -c "while true; do echo westos; sleep 1; done" 运行容器时执行命令
# docker stop vm1 停止容器
# docker start vm1 启动容器
# docker kill vm1 强制干掉容器
# docker restart vm1 重启容器
# docker pause/unpause vm1 暂停/恢复容器
# docker rm vm1 删除容器
# docker export vm1 > vm1.tar 导出容器
# docker import vm1.tar image 导入容器为镜像 image
# docker container prune 删除所有停止的容器
# docker load -i rhel7.tar 导入镜像
docker使用nginx
[root@18 docker]# docker load < nginx.tar
[root@18 ~]# docker images nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest af4b3d7d5401 2 years ago 190 MB
[root@18 docker1]# docker cp index.html vm2:/usr/share/nginx/html/
[root@18 ~]# docker run -d --name vm2 -p 8080:80 nginx
7c115522c0f66a10625c2d30af2a206dd4dc8d694503067d6221571810023515
在浏览器上访问测试:
五、挂载文件系统
挂载nginx配置文件目录
[root@79 KINGSTON]# mkdir /tmp/docker
[root@79 KINGSTON]# cd /tmp/docker/
[root@79 docker]# mkdir web
[root@79 docker]# cd web/
[root@79 web]# vim index.html
[root@79 web]# docker run -d --name vm3 -v /tmp/docker/web:/usr/share/nginx/html nginx
4fd1f5371b4a301498f7309438feef10d8a647b0c990b42954e309d0b7696972
ctrl pq 退出但不停止
ctrl d 关闭容器
[root@18 docker1]# docker images centos
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5182e96772bf 12 days ago 200 MB
centos 6 d0a31e3494fe 2 years ago 229 MB
##使用image ID运行miage
[root@18 docker1]# docker run -it 5182e96772bf /bin/bash
[root@b94b108bd5c5 /]#
[root@18 web]# docker run -it --name vm1 -v /tmp/data1:/data1 -v /tmp/data2:/data2:ro -v /etc/yum.repos.d/rhel-dvd.repo:/etc/yum.repos.d/rhel-dvd.repo:ro rhel7 bash
bash-4.2# df
bash-4.2# ls data*
data1:
data2:
bash-4.2# ls /etc/yum.repos.d/
rhel-dvd.repo rhel7.repo
bash-4.2# yum repolist
bash-4.2# cd /data2
bash-4.2# touch file
touch: cannot touch 'file': Read-only file system
bash-4.2# cd /data1/
bash-4.2# touch file1
##文件挂载测试
[root@79 data1]# ls /tmp/data1/
file1
从指定容器上获取文件卷
[root@18 web]# docker rm -f vm1
[root@18 web]# docker create --name datavol -v /tmp/data1:/data1 -v /tmp/data2:/data2:ro -v /etc/yum.repos.d/rhel-dvd.repo:/etc/yum.repos.d/rhel-dvd.repo:ro rhel7 bash
[root@18 web]# docker run -it --name vm1 --volumes-from datavol rhel7 bash
##备份容器
[root@18 docker]# docker load -i ubuntu.tar
[root@18 docker]# docker run --rm -v /tmp/backup:/backup ubuntu tar cf /backup/etc.tar /etc
[root@18 docker]# cd /tmp/backup/
[root@18 backup]# ls
etc.tar
[root@18 test]# docker run -it --name vm1 ubuntu
[root@18 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e63ae37b7d6b ubuntu "/bin/bash" 15 seconds ago Up 14 seconds
[root@18 docker]# docker inspect vm1 | grep Pid
"Pid": 31145,
"PidMode": "",
"PidsLimit": 0,
```
```
[root@18 backup]# ps ax
31145 pts/8 Ss+ 0:00 /bin/bash
[root@18 backup]# cd /proc/13505/ns
[root@18 ns]# ll
total 0
lrwxrwxrwx 1 root root 0 Aug 19 14:57 ipc -> ipc:[4026532408]
lrwxrwxrwx 1 root root 0 Aug 19 14:57 mnt -> mnt:[4026532406]
lrwxrwxrwx 1 root root 0 Aug 19 14:56 net -> net:[4026532411]
lrwxrwxrwx 1 root root 0 Aug 19 14:57 pid -> pid:[4026532409]
lrwxrwxrwx 1 root root 0 Aug 19 14:57 user -> user:[4026531837]
lrwxrwxrwx 1 root root 0 Aug 19 14:57 uts -> uts:[4026532407]
更多推荐
已为社区贡献1条内容
所有评论(0)