Docker容器化学习笔记(二)docker介绍与基础命令
1.Docker与虚拟机比较
与传统虚拟机比较,Docker启动速度快,占用体积小。

2. Docker组件
2.1 docker服务器与客户端

2.2 docker镜像与容器
镜像是构建容器的基础。
2.3 Registry注册中心
用于保存用户构建的镜像。分公有和私有。
3 Docker安装与启动
3.1 安装
安装步骤
# 更新yum包
sudo yum update
# 安装需要的软件包,yum-util提供yum-config-manager功能,另外两个功能是devicemapper驱动依赖的。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker
sudo yum install docker-ce
# 安装后查看docker版本
docker -v
设置为国内镜像
步骤:
# 编辑daemon.json文件
vi /etc/docker/daemon.json
# 在该文件中输入如下内容:
{
"registry-mirrors": ["https://tnxkcso1.mirror.aliyuncs.com"]
}
# 或者是http://docker.mirrors.ustc.edu.cm
3.2 docker服务启动停止状态查看
systemctl 命令是系统服务管理器的命令
# 启动docker
systemctl start docker
# 停止docker
systemctl stop docker
# 重启docker
systemctl restart docker
# 查看docker状态
systemctl status docker
# 设置docker开机自启动
systemctl enable docker
# 查看docker概要信息
docker info
# 查看docker 帮助文档
docker --help
4. Docker常用命令
4.1 镜像相关命令
4.1.1 查看镜像 【docker images】
docker images
#镜像名称 标签(版本) 镜像ID 创建时间 占用大小
REPOSITORY TAG IMAGE ID CREATED SIZE
consul latest b74a0a01afc4 8 weeks ago 116MB
在这里使用docker images的时候遇到了一点问题。问题如下:
我随后使用service docker status查看dockers的运行状态,发现docker是active(running)的。
当我用sudo service docker restart命令重启docker后,发现docker images命令,成功!
4.1.2 搜索镜像【docker search [imageName]】
docker search <imageName>
# 示例:
[root@localhost ~]# docker search eureka
#镜像名称 镜像描述 星星 是否官方 是否由dockerHub自动构建流所创建的
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
springcloud/eureka Spring Cloud Eureka Server 74
netflixoss/eureka Eureka NetflixOSS container image 69 [OK]
4.1.3 拉取镜像【docker pull [imageName]】
docker pull <imageName>
# 下载centos7镜像
docker pull centos:7
4.1.4 删除镜像【docker rmi imageId】
# 按镜像id删除镜像
docker rmi imageId
# 删除所有镜像
docker rmi `docker images -q`
4.2 容器相关命令
4.2.1 查看容器【docker ps】
docker ps
# 查看停止的容器
docker ps -f status=exited
4.2.2 创建容器【docker run】
# 创建容器
docker run
命令参数:
-i:表示运行容器
-t:表示容器启动后进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name:为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个"-v"做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上"-d"参数,则回创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加"-i-t"两个参数,创建后就会自动进入容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的端口。可以做多个端口映射。
注:这里的宿主机都是相对于docker而言的。
- 以交互式方式创建容器
## 示例: 观察第二行的地址,发现从localhost变了,表示已经从宿主机到了docker容器的命令行。并且在这里输入docker ps是没有用的。
[root@localhost ~]# docker run -it --name=mycentos centos:7 /bin/bash
[root@18ae6d4771c0 /]# docker ps
bash: docker: command not found
#### 使用exit命令退出容器
[root@18ae6d4771c0 /]# exit
exit
# 注意:以交互式方式运行的容器,当使用exit命令退出时,容器也会退出。
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
18ae6d4771c0 centos:7 "/bin/bash" 4 minutes ago Exited (127) About a minute ago mycentos
- 以守护式方式创建容器
# 创建容器
[root@localhost ~]# docker run -di --name mycentos2 centos:7
299409ff68afa7be21e2e7573c6e9e7e55624f567cfdd2db8c55e673909d097e
# 查看容器状态
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
299409ff68af centos:7 "/bin/bash" 29 seconds ago Up 29 seconds mycentos2
# 进入容器
[root@localhost ~]# docker exec -it mycentos2 /bin/bash
[root@299409ff68af /]# exit
exit
# 注意:以守护式方式创建的容器,在退出之后是仍然在运行的。
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
299409ff68af centos:7 "/bin/bash" 2 minutes ago Up 2 minutes mycentos2
4.2.3 停止容器【docker stop id/name】
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
299409ff68af centos:7 "/bin/bash" 22 hours ago Up 22 hours mycentos2
[root@localhost ~]# docker stop mycentos2
mycentos2
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]#
4.2.4 启动容器【docker start id/name】
[root@localhost ~]# docker start mycentos
mycentos
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
18ae6d4771c0 centos:7 "/bin/bash" 22 hours ago Up 3 seconds mycentos
4.2.5 文件拷贝【docker cp source target】
docker cp filepath 容器id/name:path
docker cp 容器id/name:path path/name
# 文件拷入示例:
[root@localhost ~]# dir
anaconda-ks.cfg
[root@localhost ~]# docker cp anaconda-ks.cfg mycentos:/usr/local
[root@localhost ~]# docker exec -it mycentos /bin/bash
[root@18ae6d4771c0 /]# cd /usr/local
[root@18ae6d4771c0 local]# dir
anaconda-ks.cfg bin etc games include lib lib64 libexec sbin share src
# 文件拷出示例:
[root@localhost ~]# docker cp mycentos:/usr/local/anaconda-ks.cfg anaconda-ks2.cfg
[root@localhost ~]# dir
anaconda-ks2.cfg anaconda-ks.cfg
4.2.6 目录挂载【docker run -v 宿主机目录:容器目录】
[root@localhost ~]# docker run -di --name=mycentos3 -v /usr/local/myhtml:/usr/local/myhtml centos:7
bd3b77ae40326fc46bfeaa8c35847138a72f583cc2fbb1ef3e916cea502a143f
[root@localhost ~]# cd /usr/local/myhtml
[root@localhost myhtml]# dir
[root@localhost myhtml]# ls
[root@localhost myhtml]# vi test
[root@localhost myhtml]# ls
test
[root@localhost myhtml]# docker exec -it mycentos3 /bin/bash
[root@bd3b77ae4032 /]# cd /usr/local/myhtml
[root@bd3b77ae4032 myhtml]# ls
test
[root@bd3b77ae4032 myhtml]# cat test
aaaaaaaaaaaaaaaaaa
4.2.7 查看容器信息(IP地址)【docker inspect 容器name/id】
查看容器信息:docker inspect 容器Name/Id
查看IP:docker inspect --format={{.NetworkSettings.IPAddress}} 容器Name/Id
[root@localhost myhtml]# docker inspect mycentos3
# 省略
[root@localhost myhtml]# docker inspect --format={{.NetworkSettings.IPAddress}} mycentos3
172.17.0.3
4.2.8 删除容器【docker rm 容器Name/id】
[root@localhost myhtml]# docker rm mycentos3
mycentos3
[root@localhost myhtml]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
299409ff68af centos:7 "/bin/bash" 22 hours ago Exited (137) 36 minutes ago mycentos2
18ae6d4771c0 centos:7 "/bin/bash" 22 hours ago Up 33 minutes mycentos
本文来自博客园,作者:Huathy,遵循 CC 4.0 BY-NC-SA 版权协议。转载请注明原文链接:https://www.cnblogs.com/huathy/p/17253825.html


浙公网安备 33010602011771号