docker鏡像拉取、運行、刪除


1.拉取hello-world鏡像並運行

docker pull hello-world 拉取hello-world鏡像
Using default tag: latest
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest
[root@localhost ~]# docker images 查看當前docker鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 12 months ago 1.84kB
[root@localhost ~]# docker run --name myhelloword hello-world 運行hello-world鏡像

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

docker ps 查看正在運行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker ps -a 查看后台存在的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e3854e40102c hello-world "/hello" 3 minutes ago Exited (0) 3 minutes ago myhelloword

刪除容器

docker rmi -f hello-world:latest 刪除容器
Untagged: hello-world:latest
Untagged: hello-world@sha256:4fe721ccc2e8dc7362278a29dc660d833570ec2682f4e4194f4ee23e415e1064
Deleted: sha256:fce289e99eb9bca977dae136fbe2a82b6b7d4c372474c9235adc1741675f587e
[root@localhost ~]# docker images 查看容器
REPOSITORY TAG IMAGE ID CREATED SIZE

拉取tomcat鏡像

docker pull tomcat 默認拉取最新的,也可以指定版本拉取 docker pull tomcat:8

docker run -d --name my-tomcat -p 9090:8080 tomcat 默認會找latest
Unable to find image 'tomcat:latest' locally
^[[A^[[A^[[A^C
[root@localhost ~]# docker run -d --name my-tomcat -p 9090:8080 tomcat:8 創建一個container
2aed373de5eff79c66df4ef9f0e4deef6c44fc9b1ed51c6c11b32d073a930af2
[root@localhost ~]# docker ps   container 信息
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2aed373de5ef tomcat:8 "catalina.sh run" 13 seconds ago Up 12 seconds 0.0.0.0:9090->8080/tcp my-tomcat

[root@localhost ~]# docker exec -it my-tomcat /bin/bash  進入my-tomcat容器里

root@2aed373de5ef:/usr/local/tomcat# ls 發現和tomcat目錄是一樣的
BUILDING.txt LICENSE README.md RUNNING.txt conf lib native-jni-lib webapps
CONTRIBUTING.md NOTICE RELEASE-NOTES bin include logs temp work

訪問:http://192.168.1.104:9090/   發現可以訪問到tomcat

再創建兩個:

root@2aed373de5ef:/usr/local/tomcat# exit
exit

[root@localhost ~]# docker run -d --name my-tomcat -p 8080:8080 tomcat:8 創建一個container

[root@localhost ~]# docker run -d --name my-tomcat -p 8081:8080 tomcat:8 創建一個container

都可以訪問

[root@localhost ~]# docker ps 發現有三個container了
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5c14286a57c7 tomcat:8 "catalina.sh run" 5 minutes ago Up 5 minutes 0.0.0.0:8081->8080/tcp tomcat3
1bfd9489dad8 tomcat:8 "catalina.sh run" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp tomcat2
2aed373de5ef tomcat:8 "catalina.sh run" 17 minutes ago Up 17 minutes 0.0.0.0:9090->8080/tcp my-tomcat

[root@localhost ~]# docker rm -f $(docker ps -aq) 刪除全部容器
5c14286a57c7
1bfd9489dad8
2aed373de5ef
e3854e40102c
[root@localhost ~]# docker ps 查看容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]#

docker拉取mysql

docker pull mysql

docker run -d --name mysql01 -p 3301:3306 -e MYSQL_ROOT_PASSWORD=lf1234 --privileged mysql  創建mysql容器,參數可以參考(docker官網mysql文檔)
2e06bb21508602ebee2f59b00521556fa43fcdb5b3fea01e35566c6f01561c40

由於連接工具不支持高級版本mysql,所以從新拉取了mysql5.5版本的,

docker pull mysql:5.5

docker run -d --name mysql02 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=lf1234 --privileged mysql:5.5

然后用mysql連接工具進行連接即可

docker stop mysql01停止容器
mysql01
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
729964e122ad mysql:5.5 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp mysql02

在客戶端連接工具中創建一個db_lf庫並創建一張表lf_001,在docker進入容器中查看

[root@localhost ~]# docker exec -it mysql02 /bin/bash
root@729964e122ad:/#

root@729964e122ad:/# mysql -uroot -plf1234
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db_lf |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

mysql> use db_lf;
。。。

Database changed
mysql> show tables
-> ;
+-----------------+
| Tables_in_db_lf |
+-----------------+
| lf_001 |
+-----------------+
1 row in set (0.00 sec)

mysql>

 拉取redis鏡像

docker pull redis  下載最新版本的redis鏡像

修改redis.config配置文件

  • 修改默認配置文件
    • bind 127.0.0.1 #注釋掉這部分,這是限制redis只能本地訪問
    • protected-mode no #默認yes,開啟保護模式,限制為本地訪問
    • daemonize no#默認no,改為yes意為以守護進程方式啟動,可后台運行,除非kill進程(可選),改為yes會使配置文件方式啟動redis失敗
    • dir  ./ #輸入本地redis數據庫存放文件夾(可選)
    • appendonly yes #redis持久化(可選)

運行redis:

docker run -d  --name redis1 -p 6379:6379  redis redis-server  直接啟動redis

創建redis容器(指定配置文件)自定義路徑

docker run -d --name redis1 -p 6379:6379 -v /usr/local/redis/config:/etc/redis/redis.config -v /usr/local/redis/data:/data redis redis-server /etc/redis/redis.conf --requirepass "root123" --appendonly yes

 

參數說明: -p 6379:6379  //容器redis端口6379映射宿主主機6379
-d redis   //后台模式啟動redis
--name redis  //容器名字為redis
 #配置文件映射,容器啟動成功可以通過更改宿主機的配置文件來達到更改容器實際配置文件的目的 -v /usr/local/redis/redis.conf:/etc/redis/redis.conf

#掛載持久化文件
-v /usr/local/docker/redis/data:/data /usr/local/my-redis/data是宿主機中持久化文件的位置
/data/是容器中持久化文件的位置(需要和配置文件中dir屬性值一樣),
redis-server /etc/redis/redis.conf //redis將以/etc/redis/redis.conf為配置文件啟動

--appendonly yes  //開啟redis的AOF持久化,默認為false,不持久化

 

 

 

 

當前目錄下 $PWD(建議使用自定義路徑)
[root@localhost ~]# docker run -d -p 6379:6379 -v $PWD/conf/redis.conf:/usr/local/etc/redis/redis.conf -v $PWD/data:/data --name lfredis redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

 

-v:表示掛載路徑,$PWD表示當前目錄下,冒號左面的表示我們宿主機的掛載目錄,也就是我們虛擬機所在的文件路徑,冒號右邊則表是的是redis容器在容器內部的路徑,上面的命令我分別掛載了redis.conf(redis的配置文件),如需使用配置文件的方式啟動redis,這里則需要加上,還有redis存放數據所在的目錄

標紅部分

 

映射到此路徑路徑

 data持久化路徑

 

客戶端連接redis

docker exec -it 啟動的redis容器名稱 redis-cli

如果連接遠程:

docker exec -it 啟動的redis容器名稱 redis-cli -h 遠程redis所在ip -p 6379 -a password //如果有密碼 使用 -a參數輸入密碼

拉取RabbitMQ鏡像

docker pull rabbitmq:management ,指定版本,該版本包含了web控制頁面

注意:如果docker pull rabbitmq 后面不帶management,啟動rabbitmq后是無法打開管理界面的,所以我們要下載帶management插件的rabbitmq. 

啟動:

docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672  rabbitmq:management

#方式一:默認guest 用戶,密碼也是 guest

docker run -d --name rabbitmq --hostname my-rabbit -p 5672:5672 -p 15672:15672  rabbitmq:management

#方式二:設置用戶名和密碼 docker run -d --name rabbit --hostname my-rabbit  -e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=root1234 -p 5672:5672 -p 15672:15672  rabbitmq:management

訪問web控制頁面:http://ip:15672/

查看網絡

啟動一個tomcat容器

[root@localhost ~]# docker run -d --name mytomcat -p 8080:8080 tomcat
0f95d1856b08645f1e2aff71c8577b9815d01b446a8b5ec25054c44beeaf8f7b
[root@localhost ~]# docker exec -it mytomcat /bin/bash
root@0f95d1856b08:/usr/local/tomcat# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
17: eth0@if18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
root@0f95d1856b08:/usr/local/tomcat#

在虛擬機中嘗試訪問上面ip

root@0f95d1856b08:/usr/local/tomcat# exit
exit
[root@localhost ~]# ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.079 ms
64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.057 ms
64 bytes from 172.17.0.2: icmp_seq=10 ttl=64 time=0.037 ms
^C
--- 172.17.0.2 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9000ms
rtt min/avg/max/mdev = 0.037/0.054/0.079/0.014 ms
[root@localhost ~]# curl 172.17.0.2:8080 訪問tomcat,返回一個首頁html

!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Apache Tomcat/8.5.50</title>
<link href="favicon.ico" rel="icon" type="image/x-icon" />
<link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
<link href="tomcat.css" rel="stylesheet" type="text/css" />
</head>

.....

ip a  查看當前網絡信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo 當前物理主機的127
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:8a:fe:e6 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0 和外界通信的eth0
valid_lft 79444sec preferred_lft 79444sec
inet6 fe80::5054:ff:fe8a:fee6/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:4c:de:2e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.104/24 brd 192.168.1.255 scope global noprefixroute dynamic eth1 和宿主主機通信的eth1
valid_lft 6279sec preferred_lft 6279sec
inet6 fe80::a00:27ff:fe4c:de2e/64 scope link
valid_lft forever preferred_lft forever
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:d1:e7:1d:84 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 和container通信的docker0
0valid_lft forever preferred_lft forever
inet6 fe80::42:d1ff:fee7:1d84/64 scope link
valid_lft forever preferred_lft forever
16: veth66debb8@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 9a:87:2f:4b:57:c9 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::9887:2fff:fe4b:57c9/64 scope link
valid_lft forever preferred_lft forever
18: veth66939a0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 2a:31:0b:81:07:23 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::2831:bff:fe81:723/64 scope link
valid_lft forever preferred_lft forever

[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
c9ce1b7c6802 bridge bridge local
6be1ec1d25da host host local
de6f4329fa79 none null local

[root@localhost ~]# docker inspect bridge
[
{
"Name": "bridge",
"Id": "c9ce1b7c680257db409549372baf346de1cbe83675ba8a4f31bed78a872c96d8",
"Created": "2020-01-03T14:40:54.581957235Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"0f95d1856b08645f1e2aff71c8577b9815d01b446a8b5ec25054c44beeaf8f7b": {
"Name": "mytomcat",
"EndpointID": "ee5c82c52a08e70a7ac843d4e464e301597072a0daf21c04adcfe90d6074523c",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
},
"729964e122adf4291d623d8c869605a4a80348368be0400938c265f60e5b9136": {
"Name": "mysql02",
"EndpointID": "b2ca6b6e5d4e64e32cf5c0a5e6a89b28aed1268dd942b23473518bdccc80703c",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}

-d redis   //后台模式啟動redis


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM