Docker常用命令(***)

1,安装Docker

使用yum命令在线安装:

yum install docker

1.2,安装后查看Docker版本

    docker -v

1.3,启动与停止Docker

systemctl命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。

  1. 启动docker:systemctl start docker
  2. 停止docker:systemctl stop docker
  3. 重启docker:systemctl restart docker
  4. 查看docker状态:systemctl status docker
  5. 开机启动:systemctl enable docker

 

  1. 查看docker概要信息:docker info
  2. 查看docker帮助文档:docker --help

2,Docker镜像操作

2,列出镜像

列出docker下的所有镜像:

docker images

2.1,搜索镜像

如果你需要从网络中查找需要的镜像,可以通过以下命令搜索: 

docker search 镜像名称


2.2,拉取镜像: docker pull centos:7

2.3,ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。

https://lug.ustc.edu.cn/wiki/mirrors/help/docker

步骤:

(1)编辑该文件:vi /etc/docker/daemon.json  // 如果该文件不存在就手动创建;说明:在centos7.x下,通过vi。

(2)在该文件中输入如下内容:

{

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

}

(3)注意:一定要重启docker服务,如果重启docker后无法加速,可以重新启动OS

然后通过docker pull命令下载镜像:速度杠杠的。

2.4,删除镜像

  1. docker rmi $IMAGE_ID:删除指定镜像
  2. docker rmi `docker images -q`:删除所有镜像

3,Docker容器操作

3.1查看容器

  1. 查看正在运行容器: docker ps
  2. 查看所有的容器(启动过的历史容器): docker ps –a
  3. 查看最后一次运行的容器: docker ps –l
  4. 查看停止的容器: docker ps -f status=exited

4,创建与启动容器

  1. 创建容器命令:docker run
  2. -i:表示运行容器
  3. -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
  4. --name :为创建的容器命名。
  5. -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
  6. -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
  7. -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射

4.1.1交互式容器

docker run -it --name=mycentos centos:7 /bin/bash

这时我们通过ps命令查看,发现可以看到启动的容器,状态为启动状态

Docker常用命令(***)

 

使用exit命令 退出当前容器,

Docker常用命令(***)

 然后用ps -a 命令查看发现该容器也随之停止:

Docker常用命令(***)

4.1.2守护式容器

创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复): 

docker run -di --name=mycentos2 centos:7


登录守护式容器方式:

Docker常用命令(***)

docker exec -it container_name (或者 container_id)  /bin/bash(exit退出时,容器不会停止)

4.3停止与启动容器

  1. 停止正在运行的容器:
  2. docker stop $CONTAINER_NAME/ID
  3. Docker常用命令(***)
  4. 启动已运行过的容器:
  5. docker start $CONTAINER_NAME/ID
  6. Docker常用命令(***)

4.4文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令:

 docker cp 需要拷贝的文件或目录 容器名称:容器目录

 

也可以将文件从容器内拷贝出来: 

docker cp 容器名称:容器目录 需要拷贝的文件或目录

4.5目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

创建容器 添加-v参数 后边为   宿主机目录:容器目录

docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name=mycentos2 centos:7


如果你共享的是多级的目录,可能会出现权限不足的提示。

这是因为CentOS7中的安全模块selinux把权限禁掉了,我们需要添加参数  --privileged=true  来解决挂载的目录没有权限的问题

4.6查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据

docker inspect mycentos2

 

也可以直接执行下面的命令直接输出IP地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2


删除指定的容器:docker rm $CONTAINER_ID/NAME4.7删除容器

  1. Docker常用命令(***)

注意,只能删除停止的容器

  1. 删除所有容器:docker rm `docker ps -a -q`
  2. Docker常用命令(***)

部署应用

5.1 MySQL部署

5.1.1拉取MySQL镜像

docker pull mysql

Docker常用命令(***)

查看镜像

Docker常用命令(***)

5.1.2创建MySQL容器

docker run -di --name pinyougou_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql


-e 代表添加环境变量  MYSQL_ROOT_PASSWORD是root用户的登陆密码-p 代表端口映射,格式为  宿主机映射端口:容器运行端口

5.1.3进入MySQL容器,登陆MySQL

进入mysql容器: 

docker exec -it pinyougou_mysql /bin/bash


登陆mysql:

mysql -u root -p

5.1.4远程登陆MySQL

我们在我们本机的电脑上去连接虚拟机Centos中的Docker容器,这里192.168.247.130是虚拟机操作系统的IP

Docker常用命令(***)

在本地客户端执行建库脚本

执行“资源/建库语句/pinyougoudb.sql”

Docker常用命令(***)

5.1.5查看容器IP地址

我们可以通过以下命令查看容器运行的各种数据

docker inspect pinyougou_mysql

运行效果如下:

Docker常用命令(***)

我们可以看到我们的数据库服务器的IP是172.17.0.2

5.2 tomcat部署

5.2.1拉取tomcat镜像

docker pull tomcat:7-jre7

5.2.2创建tomcat容器

创建容器用于部署单点登录系统(CAS)  -p表示地址映射

docker run -di --name=pinyougou_tomcat -p 9000:8080

-v /usr/local/myhtml:/usr/local/tomcat/webapps --privileged=true tomcat:7-jre7

5.2.3部署web应用

修改cas系统的配置文件,修改数据库连接的url

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"

                   p:driverClass="com.mysql.jdbc.Driver"

                   p:jdbcUrl="jdbc:mysql://172.17.0.6:3306/pinyougoudb?characterEncoding=utf8"

                   p:user="root"

                   p:password="123456" />

测试:地址栏输入:http://192.168.247.135:9000/cas/login

Docker常用命令(***)

5.3 Nginx部署

5.3.1拉取Nginx镜像

docker pull nginx

5.3.2创建Nginx容器

docker run -di --name=pinyougou_nginx -p 80:80  nginx/bin/bash

5.3.3测试Nginx

浏览器地址栏输入: http://192.168.247.135

Docker常用命令(***)

5.3.4配置反向代理

官方的nginx镜像,nginx配置文件nginx.conf 在/etc/nginx/目录下。

在容器内编辑配置文件不方便,我们可以先将配置文件从容器内拷贝到宿主机,编辑修改后再拷贝回去。

从容器拷贝配置文件到宿主机

docker cp pinyougou_nginx:/etc/nginx/nginx.conf nginx.conf

编辑nginx.conf,添加反向代理配置

upstream tomcat-cas {

         server 172.17.0.7:8080;

}

server {

         listen 80;

         server_name passport.pinyougou.com;

         location / {

                   proxy_pass http://tomcat-cas;

                   index index.html index.htm;

         }

}

将修改后的配置文件拷贝到容器

docker cp nginx.conf  pinyougou_nginx:/etc/nginx/nginx.conf

重新启动容器

docker restart pinyougou_nginx

设置域名指向

192.168.247.135 passport.pinyougou.com

浏览器测试:http://passport.pinyougou.com/cas/login

Docker常用命令(***)

5.4 Redis部署

5.4.1拉取Redis镜像

docker pull redis

5.4.2创建Redis容器

 docker run -di --name=pinyougou_redis -p 6379:6379 redis

5.4.3客户端测试

在你的本地电脑命令提示符下,用window版本redis测试

redis-cli -h 192.168.247.135

6.备份与迁移

6.1容器保存为镜像

我们可以通过以下命令将容器保存为镜像

docker commit pinyougou_nginx mynginx

pinyougou_nginx是容器名称

mynginx是新的镜像名称

此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器

6.2镜像备份

docker  save -o mynginx.tar mynginx

-o 输出到的文件

执行后,运行ls命令即可看到打成的tar包

6.3镜像恢复与迁移

首先我们先删除掉mynginx镜像

然后执行此命令进行恢复

docker load -i mynginx.tar

-i 输入的文件

执行后再次查看镜像,可以看到镜像已经恢复